我用的是5502,采用并行16外部flash引导自起动,按照网上资源,已经到了.dat文件了,可是发现自己不知道怎么把它烧写到flash 中才是正确的?我采用的是用fread函数读.dat 中的数,然后暂时放在一个数组中,再将数组写到flash 中,通过内存察看到写的数据是一位一位的?不能实现自起动,那要怎么烧写才对呢?那个能具体说一下???
Shine:
能具体说明一下"写的数据是一位一位的?" 你在把.dat暂时存放在一个数组中时, 数据正确吗? 撇开.dat文件, 你的烧写程序正确吗, 比如说随便烧写个数据到flash?
zhe zhang:
回复 Shine:
按我说的那样写,可以烧写对,它就是一位一位地写进去的,而且对应的都是正确的,比如:我用记事本看到的dat中为0x0000,0x0248,烧写后,察看Flash中内容为0x0030 0x0078 0x0030 0x0030 0x0030 0x0030 0x002c 0x0030 0x0078 0x0030 0x0032 0x0038 0x0034 但是这样是不能自起动的,所以我想是不是不能这样一位一位地写,要按dat格式写进去才行呢?但是怎么才是正确的烧写方式?我现在就停这里了,不知道怎么才能实现自起动了
Shine:
回复 zhe zhang:
这样说明烧写不对啊, dat中为0x0000,0x0248, 那烧到flash也应该是0x0000,0x0248啊.
你不是把dat转成数组了么? 那你把数组烧到flash就可以了
zhe zhang:
回复 Shine:
我的问题就出现在转换成数组这里啊,我是用数据流的形式读取的dat文件(fread函数),读到数组中的数据就是烧写在flash中那样的,所以是转到数组中就已经错了,可是现在我不知道怎么转换成是正确,怎么转换才能像你说的那样呢?
Shine:
回复 zhe zhang:
需要手动合并, 如下面的代码.char data[];char buf[2];for (i = 0; i < 2; ++i){/* pack two bytes from file into target char */int buf[2];fread(buf, 2, 1, filep);data[i] = (buf[0] << 8) | buf[1];}具体参考下面文档.http://www.ti.com/lit/an/spra757/spra757.pdf
zhe zhang:
回复 Shine:
好的,我先按你说的调整一下,不过你们在用DSP有没有遇到
Error connecting to the target:Error 0x80003240/-116Fatal Error during: Initialization, OCS, Target, Control, This error was generated by TI's USCIF driver
这样的问题,本来想看看改过之后能用不了,可是半天都没有连上下载器,都要疯了,这个JTAG连接怎么这么不稳定啊,每次调程序都要罢工N次
Shine:
回复 zhe zhang:
用的是什么仿真器? CCS版本是多少? 电脑是什么操作系统?
试试重装一下仿真器驱动.
zhe zhang:
回复 Shine:
仿真器是MingWei的XDS510-USB2.0,CCS3.3,XP的电脑系统,这个接口相当之不稳定,一直死机,调程序太累了,动不动就得关了,再重新打开CCS
zhe zhang:
回复 Tony Tang:
谢谢你提供帮助,不过我还没有试过,现在下载器和板子连不上了,等连上了我试试你的方法,再有问题,将继续请教
TI中文支持网

