Part Number:TMS320F280039COther Parts Discussed in Thread:C2000WARE
280039C个人的bootload程序跳APP程序过程中发现一个问题。
flash前面4个扇区放boot程序,剩下的flash放APP
用TI的开发板测试,发现如果APP的codestart放在0xAFFFE,会导致boot跳转不过去,boot仿真会报如下错误
而前移一个地址位或者多个地址位就能够成功,这个具体原因是因为什么,想请教一下
Ben Qin:
你好,我查看下相关资料后回复您。
,
SccFang:
,
Ben Qin:
因为这里codestart的长度是0x2,你放在0xafffe这里的长度是不够的。所以最多只能放在0xafffd。
,
SccFang:
理论上放在0xAFFFE也是有两个地址长度的,0xAFFFE和0xAFFFF;看过内存地址分配,放在0xAFFFD和0xAFFFE这两个地方编译出来的数据是一样
,
Ben Qin:
SccFang 说:放在0xAFFFD和0xAFFFE这两个地方编译出来的数据是一样
这里放在0xAFFFD时地址0xAFFFF的数据是什么?
,
SccFang:
放在0xAFFFE;
放在0xAFFFD:
,
Ben Qin:
参考下TRM6.7.1.2,因为prefatch 模式是使能的,CPU会往后多读取一个地址,然而你这里在往后是没有地址了,所以会报错。
www.ti.com/…/spruiw9b.pdf
,
SccFang:
您好,还是有点没明白,看了这部分的解释,因为flash的预取机制,一般来说flash的后16个地址都不建议用,但是为什么同样的配置在280025C上可以跳转成功,同样是放在倒数第二个地址位,对比两个flash的配置,没有任何区别。还有为啥280039c中,放在0xAFFFD上是可以的
,
Ben Qin:
似乎存在一些边界条件,这些条件会影响预取机制是否被激活并触发错误。无论如何,在 F28002x 和 F28003x 上,您都不应将可执行代码放入闪存的最后一行。因此,C2000Ware 中提供的CMD(例如 device_support/f28003x/common/cmd/28003x_generic_flash_lnk.cmd)保留最后一行。
,
SccFang:
好的 感谢!
,
Ben Qin:
不客气
,
user6003431:
(我的个人资料已经完善,并提交提示成功。但多次发新问题都进入个人资料完善页面,不发发新问题)
请问下,CCS 12 ,能修改工程选项配置,指定程序起始地址吗? 我的程序是Boot+APP,Boot空间小于16KB,APP从16KB开始
以前用CortexM内核的MCU,Keil MDK就有这个功能,很方便单独仿真调试APP,不用修改配置文件,只需修改一个ROM的开始地址。
,
Ben Qin:
应该是不行的,我这边没找到相关的设置。只能通过CMD文件来更改。