Part Number:TMS320F28377SOther Parts Discussed in Thread:C2000WARE
各位TI的专家,我最近在用28377S的时候碰到一个程序从flash启动,上电后运行的问题,不知道为什么,连着仿真器,在debug状态下,从flash启动,程序可以正常运行,但是,把仿真器拔掉,重新送电,程序就不会运行,但是,如果程序很小,它又可以运行,所以我怀疑CMD文件内存分配的问题,2837xS_Generic_FLASH_lnk.cmd与28377S_RAM_lnk.cmd都重新分配过内存,FLASH重新送电后,都是不能运行,但是,带着仿真器DRBUG又能重新运行,所以问一下?官方提供的两个CMD文件2837xS_Generic_FLASH_lnk.cmd与28377S_RAM_lnk.cmd,是否具有上电后把所有程序搬运到flash的功能??程序还不要做其他设置吗??这个问题可能出在什么地方??多谢指教?
Green Deng:
你好,ram能运行,flash不能运行的问题,大多与memcpy有关。
memcpy不是把程序搬运到flash,而是把flash中的程序搬移到ram运行,因为ram的运行速度比flash要快很多,有些对运行时机要求高的程序必须要搬移到ram运行,比如delay_us函数,一些中断程序。
你可以先看一下程序里面是否有memcpy,cmd文件只是分配内存,程序搬移的话要在主程序或系统函数中进行,以及要在cmd文件中给程序分配运行的ram内存。你可以参考例程的做法:
C:\ti\c2000\C2000Ware_4_01_00_00\device_support\f2837xs\examples\cpu1
C:\ti\c2000\C2000Ware_4_01_00_00\driverlib\f2837xs\examples\cpu1