您好,
这是一段cmd文件
MEMORY
{
BOOTRAM:o = 00000000h l = 00000400h
IRAM 😮 = 00000400h l = 003ffc00h
FLASH_BOOT : o = 90000000h l = 00000400h
FLASH_REST : o = 90000400h l = 0003f000h
}
SECTIONS
{
.bootloader: load = FLASH_BOOT,run=BOOTRAM
.text : load = FLASH_REST, run = IRAM LOAD_START(_text_ld_start),
RUN_START(_text_rn_start),
SIZE(_text_size)
.cinit > FLASH_REST
。。。。}
程序放在了外部FLASH中,reset之后,是FLASH方式进行bootmode,datasheet上说的
会把程序从外部FLASH copy 1kB到,内部RAM,然后执行,那么这都是自动的,怎么这个例程的
cmd 程序 添加了一句 run=BOOTRAM ,告诉DSP程序在RAM执行,这不是自动的吗?
如果不写 run=BOOTRAM 难道就不copy程序到RAM了吗??
谢谢谢谢
noaming:
你好,上面CMD文件中,是CCS下运行需要CCS自己将该“二次bootloader程序”加载到0地址处运行,所以使用了RUN。如果是上电自启动,这这部分动作是芯片自动完成的,它自动把“二次bootloader程序”加载到0地址处运行。在CCS下运行,内部的RBL并没有起作用。
ha zhang:
回复 noaming:
谢谢您的回复,非常感谢
我还有一个疑问,
用JTAG在线调试,仿真时,cmd文件中,可以把程序所有生成的段都放在内部RAM区,这样load之后,全部在RAM区。
情况1:如果也是在线调试,可不可以,把某些段,比如code段或text段,放在外部FLASH??这是什么情况??
情况2: 烧写FLASH,这时把text等段,在CMD文件中都指定在内部RAM区,行吗??
期待您的回复,谢谢
noaming:
回复 ha zhang:
你好,你前面这个“ .text : load = FLASH_REST, run = IRAM ”,不就是直接将text段放在外部FLASH了嘛。。。运行出了什么错误码?
把text等段,在CMD文件中都指定在内部RAM区当然是可行的,此时每次加载OUT程序的时候,都会根据你的CMD的设置将相应的段加载到指定的RAM。
ha zhang:
回复 noaming:
谢谢您,可能我没有表达清楚,不用看上边帖子的cmd程序,
第一种情况,在线调试一个程序,可以把所有的段指定在CMD文件中,然后load这个.out文件,运行OK,没有问题
第二种情况,在线调试一个程序,但是把一些段通过CMD文件指定在了外部FLASH,这样可以吗??会是什么样的运行情况?比如把TEXT指定在FLASH
第三种情况,烧写一个程序,把所有段指定在内部RAM,最后把对应的.dat文件,烧写到FLASH,断电,在上电,这样又是什么情况???
非常谢谢
ha zhang:
回复 noaming:
THANK YOU !问题解决了