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.

关于烧写程序时out文件转hex和bin文件的疑问

环境: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文件时候的工程,希望大家帮我看看。

11.rar