最近把ccs从3.3升级了5.5,移植工程时出现了问题。使用的dsp是6713,使用外部flash通过bootloader进行程序加载。
在工程中,有一个函数boot()实现bootloader的功能,在函数前增加了程序段指示:
#pragma CODE_SECTION(boot,".boot")
以下是cmd文件的内容:
/****************************************************************************/
/* Specify the Memory Configuration */
/****************************************************************************/
MEMORY
{
BOOTSEC : origin = 0x00000000 length = 0x00400
RAM : origin = 0x00002000 length = 0x40000
VEC : origin = 0x00001000 length = 0xA00
}
/****************************************************************************/
/* Specify the Output Sections */
/****************************************************************************/
SECTIONS
{
.text: load = RAM
.stack load = RAM
.bss load = RAM
.cio load = RAM
.const load = RAM .data load = RAM
.switch load = RAM
.far load = RAM
.cinit load = RAM
.sysmem load = RAM
.vectors load = VEC
.boot load = BOOTSEC
}
现在的现象是可以正常生成.out文件,但是通过hex6x工具提取的时候,发现里面并没有.boot段
显示如下:
D:\ti\workspace_v5_5\C6713FOG>D:\ti\ccsv5\tools\compiler\c6000_7.4.4\bin\HEX6X
MakeHex.cmd
warning: section .boot not found in (debug\C6713FOG.out)
warning: section .cio not found in (debug\C6713FOG.out)
warning: section .data not found in (debug\C6713FOG.out)
warning: section .sysmem not found in (debug\C6713FOG.out)
Translating to ASCII-Hex format…
"debug\C6713FOG.out" ==> .vectors
"debug\C6713FOG.out" ==> .text
"debug\C6713FOG.out" ==> .cinit
"debug\C6713FOG.out" ==> .const
"debug\C6713FOG.out" ==> .switch
是因为程序中没有使用boot()函数,所以把它优化掉了吗?程序现在是debug版,也没有开优化选项。
这个工程在ccs3.3里面是好用的,请教怎么解决这个问题啊?
noaming:
你好,检查一下工程的memory map文件中,看生成的out文件里面有没有.boot段。
changqing su:
回复 noaming:
查看过,map文件中显示,没有生成.boot段。
noaming:
回复 changqing su:
ccs3.3和CCSv5.5编译工程应该是一样的效果。在CCSV3.3下可以的话,建议在CCSV5.5下新建一个工程,然后添加源代码,再编译试试
changqing su:
回复 noaming:
现在就是通过新建工程,然后添加源码的方式来做的。还是不行呢。郁闷。
编译和连接选项和V3.3的对比了,是一样的。
真是奇怪了!