This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
亲爱的ti大神们:
用28377d开发了app和bootload两个工程,分别存储在不同的flash扇区,但每回都要向产品里下载两回.out文件。为了省时省力,有没有将两个工程的.out文件合并成一个.out文件的方法。
1、该地址 http://processors.wiki.ti.com/index.php/Combining_executable_files 的官方说明有.out合并成.obj的方法,但不明白具体操作是怎样的,用到的The hex converter工具是什么?hex2000 boot.out app.out --section_name_prefix="data" --load_image -o ROM_simple.obj指令放在哪里执行?
2、生成.obj文件之后,要如何生成.out文件?要自己编写cmd文件,再编译生成.out文件吗?
我有一个办法,目前也正在用,将BootLoader和app一次性烧写进dsp中。
这个软件叫C2Prog,它可以刷写Intel hex文件到dsp里面,而且速度非常快。
我们在编译的时候直接生成intel hex文件,右键工程,Show Build Settings->C2000 Hex Utility,勾选Enable C2000 Hex Utility 在C2000 Hex Utility ->General Options中设置Specify memory width为16,Specify rom width为16。C2000 Hex Utility ->Output Format Options中的Output Format选择Output Intel hex format(--intel, -i),点击Apply and Close即可设置完成。
把这两个工程生成的hex文件复制出来,直接用文本编辑器打开,他的格式是这样的
RecordMark |
RecordLength |
LoadOffset |
RecordType |
Data |
Checksum |
记录标志 |
记录长度 |
装载偏移 |
记录类型 |
数据 |
校验和 |
其中,RecordMark字段其实就是每条记录的首部,其值为0x3A,在ASCII码中就是冒号“:”。该字段在HEX文件中,这个头部只占有一个字节。RecordLength表示每条记录包含的数据的长度,以字节为单位,最大描述255个字节,表现为2个16进制的字符,该字段在HEX文件中占2个字节。LoadOffset表示该记录中的数据在整个存取器空间中的偏移,用4个十六进制字符描述一个16位数据,在HEX文件中该字段占有4个字节。RecordType表示记录类型,表现为2个十六进制字符。取值有以下几种:
00表示数据记录;
01表示文件结束记录;
02描述拓展段地址记录;
03描述开始段地址记录;
04描述扩展线性地址记录;
05描述开始线性地址记录。
看到这段描述,我想你应该知道什么意思了。
根据地址每行数据的地址,将BootLoader与app的hex文件的数据复制进去。
由于在一开始我们已经设计好BootLoader和app的地址。一般情况下,先粘贴BootLoader的hex文件,将最后一行文件结束记录删除,再粘贴用户程序的hex文件,保存,即可完成烧写文件的制作。
然后直接用C2PROG烧写进去就行了,一次完成,速度贼快!
最后看到你做了bootloader,我其实想和你交流一下,我用BootLoader给app升级的时候,烧写的也是Intel hex文件,但是每烧写一行数据,我这里需要7ms,一个300多k的hex文件,写了快一分钟才完成,不知道你是怎么做的,我想把BootLoader升级时间缩短一点。
感谢您的回复,受益匪浅,但公司默认还是使用ccs软件和xds200下载.out文件,但您的方法也不失为一个好办法,有很多学习借鉴之处。
最近发现用UniFlash可以同时烧录两个.out文件(实验证明两个工程的存储空间互不干扰的话,生成的.out文件可以同时load),所以不合并也可以解决app和bootload下载两次的问题了。
我的bootload文件之前使用比特率9600,烧写600多k的.txt二进制文件需要五分钟,后来提高波特率到115200,目前40多秒可完成烧录,但再继续提高比特率也不能缩短时间了。
bootloader程序可以参考官方例程,在此基础上修改,路径为:C:\ti\c2000\C2000Ware_2_01_00_00\device_support\f2837xd\examples\dual\F2837xD_sci_flash_kernels\cpu01