环境:DSP6713 + CCS3.3 + WIN732位旗舰版
背景:用CCS编译工程后会生成一个.out文件,然后用hex6x.exe工具通过hex6x.exe myMakeHex1.cmd命令将out文件转化为HEX文件,其中myMakeHex1.cmd是我编写的一个CMD文件,其内容如下
TEST.out -a -memwidth 8 -bootorg 0x90001000 -bootsection .boot 0x90000000 -map myMakeHex.map ROMS { FLASH: org = 0x90000000, len = 0x80000, romwidth = 8, files = {TEST.hex} } SECTIONS { .boot: PADDR=0x90000000 .vectors: BOOT .text : BOOT .cinit : BOOT .const : BOOT }
这样做的作用主要是为了把.out文件中的一些初始化的段提取出来并存在hex的文件中,之后在通过Hex2Bin.exe命令将对应的HEX文件转化为二进制文件,但是这样转化后,会生成两个bin文件,一个是boot_table.bin,另一个是TEST.BIN,前者是boot表,后者为SECTIONS 中.vectors、.text、.cinit、.const
这四个段的信息,两个bin文件的信息都是有用的信息;但是生成两个bin文件并不是我所期望的,我希望得到的是一个bin文件,把上面两个bin文件的信息 合成一个bin文件,这样我就能一次把文件烧写到FLASH里面了,二不用烧写两次;第二个我锁疑问的地方,首先请看下图
上图中左边是hex生成的boot表的bin文件,右边是对应的hex文件,可以发现,bin文件和hex文件中 各个段的数据内容都是正确的 但是锁生成的hex格式却不是我想要的,我想要的格式如下图,
即在各个段的数据前面有这么8个字节 00 00 00 00 40 10 00 00
这8个字节的前4个字节 是告诉二级boot该段应该搬运到内存的哪个位置,后4个字节表示告诉二级boot需要搬运多少个字节,即该数据段的长度
即前4个字节是该段运行地址,后四个为该段的长度大小,因为我在二级boot的程序中需要读取这两个参数,然后根据这两个参数来决定把数据搬运到那里,以及搬运多少的数据量
我知道上面我所提及到的是可以实现的,即1.只生成一个bin文件 2.bin文件中每个段的前面加上一个运行地址信息和一个长度信息,但是为什么我在生成bin文件的时候却不是理想的样子,是不是我的烧写CMD文件中的参数设置的不对啊,下面附上我制作bin文件时候的工程,希望大家帮我看看。