硬件:TMS320c6455
CCS:5.5
应用代码主要是初始化时钟,DDR,emif,LED循环闪烁。通过仿真器S560V2在线调试LED正常闪烁,但是将此应用代码生成的.OUT文件(300K byte)通过CCS的hex6x.exe,转化成.bin文件后通过自己写的FLASH(4M BYTE)烧写代码写入FLASH的0地址,重新上电后不能正常启动。
疑问:根据官方文档,C6455 FLASH启动,直接从0Xb0000000地址执行代码,没有说只执行1K代码的限制,所以不写二次启动代码也是可以执行的吧?
通过网上查询很多采用FLASH启动的方案,都使用了二次启动代码将前1K代码拷贝到L2(说是6000系列DSP都只能执行FLASH前1K代码,这点很疑问)。
请问我不采用二级启动,并且我的应用代码超过1K,能否直接写入FLASH正常启动?不能正常启动是不是还有别的步骤没执行到?
Shine:
直接从0Xb0000000地址片外flash执行代码速度会比较慢,所以一般还是写二次bootloader代码把代码搬到RAM上运行。
C6455 bootloader上电后不会先去片外flash搬移1k的代码到片上运行,是直接从flash里执行代码的。
可以的。
您可以用仿真器跟一下boot过程,首先看一下代码有没有正确烧写到flash,其次看一下0Xb0000000地址处是是您应用程序的程序入口地址。
xiaohui chen:
回复 Shine:
你好,我已确认程序正确写入到FLASH,(0Xb0000000地址处是是您应用程序的程序入口地址)请问如何确认?入口地址是MAIN,_c_int00?
另外,我编写的应用程序使用的C6455.CMD文件是开发环境默认的,跟这个文件有关系吗,需要修改链接地址吗?
Shine:
回复 xiaohui chen:
可以通过.map文件查看entry point address是否是0Xb0000000,如果不是的话,可以按照下面的wiki网站来修改。
processors.wiki.ti.com/…/Accessing_c_int00