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.

TMS320c6455采用外部FLASH启动,将应用代码烧写到FLASH的0地址后,无法启动

Other Parts Discussed in Thread: TMS320C6455

硬件: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正常启动?不能正常启动是不是还有别的步骤没执行到?

  • 直接从0Xb0000000地址片外flash执行代码速度会比较慢,所以一般还是写二次bootloader代码把代码搬到RAM上运行。

    C6455 bootloader上电后不会先去片外flash搬移1k的代码到片上运行,是直接从flash里执行代码的。

    可以的。

    您可以用仿真器跟一下boot过程,首先看一下代码有没有正确烧写到flash,其次看一下0Xb0000000地址处是是您应用程序的程序入口地址。
  • 你好,我已确认程序正确写入到FLASH,(0Xb0000000地址处是是您应用程序的程序入口地址)请问如何确认?入口地址是MAIN,_c_int00?

    另外,我编写的应用程序使用的C6455.CMD文件是开发环境默认的,跟这个文件有关系吗,需要修改链接地址吗?

  • 可以通过.map文件查看entry point address是否是0Xb0000000,如果不是的话,可以按照下面的wiki网站来修改。
    processors.wiki.ti.com/.../Accessing_c_int00