Part Number:TMS320F28379DOther Parts Discussed in Thread:CONTROLSUITE, C2000WARE
LAUNCHXL_F28379D的程序移植到自己做的板子,F28379D的封装改为了 PTP0176F 。
在LAUNCHXL_F28379D板子上程序没问题,不改动,下载到自己做的板子,程序不能正常运行,InitSysCtrl()完不成;暂停会弹出如下页面:
No source available for "_system_post_cinit() at D:/ti\ccs1031\Demo_CPU_1\Demo_CPU_1\Debug\Demo_CPU_1.out:{3} 0x3fefb3{4}" 。
如果烧写controlSUITE的示例程序cpu_timers_cpu01没有问题。
是什么原因造成的呢?
Green Deng:
有没有测试过其他例程?另外,最好用最新版的C2000WARE中的例程来测试,controlSUITE现在已经停止更新了
C:\ti\c2000\C2000Ware_3_04_00_00\driverlib\f2837xd\examples
软件下载地址:https://www.ti.com.cn/tool/cn/C2000WARE
,
Lions:
问题是这样,程序烧写在flash中,不copy程序到ram中没有上述问题(memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);),但是, 使用DELAY_US()会进入非法中断.
应该是CMD文件的问题?
,
Lions:
用C2000Ware_3_04_00_00\device_support\f2837xd\common\cmd的2837xD_FLASH_lnk_cpu1.cmd文件不行,但是用2837xD_RAM_lnk_cpu1.cmd文件可以,所以,不能下载到flash了?
,
Green Deng:
如果在flash中运行DELAY_US()函数的话是必须要调用memcpy函数的,主要因为flash中的运行速度比ram中慢很多。
有没有可能是你memcpy的方式不对?你可以参考一下例程中的方法去添加,比如:C:\ti\c2000\C2000Ware_3_04_00_00\device_support\f2837xd\examples\cpu1\gpio_toggle
编译的时候选择flash模式就可以看到启用memcpy函数,然后可以参考例程的设置
,
Lions:
我看了例程gpio_toggle,看到了delay_loop(). 没有用DELAY_US().
选择flash模式,没有问题。但是添加Pre-define Name _FLASH之后编译都通不过,请您再确认下
,
Lions:
改成flash模式之后, 问题还是一样
No source available for "_system_post_cinit() at C:/ti\c2000\C2000Ware_3_04_00_00\device_support\f2837xd\examples\cpu1\gpio_toggle\cpu01\ccs\CPU1_FLASH\gpio_toggle_cpu01.out:{3} 0x3fefb4{4}"
,
Green Deng:
Lions 说:添加Pre-define Name _FLASH
这个原工程中就有的,你是又添加了?
Lions 说:改成flash模式之后, 问题还是一样
这里是指例程还是你自己编译的工程?
,
Lions:
例程,没添加,我看到比ram多了一个_FLASH
,
Green Deng:
如果例程还是会出现这样的情况,那就不得不考虑是否是你的硬件有问题了。
,
Lions:
如果是硬件,会与哪些有关呢?按理flash内置的,难道DSP是坏的?会跟boot电路有关吗?
,
Wuhen Yanluo:
可以看一下你的memcpy函数在程序中的位置,如果这个函数在外部端口初始化之后才执行,可能就会出现程序跑到非法中断里的现象。
,
Green Deng:
我得出与硬件有关结论是基于你提到的:①在LAUNCHXL_F28379D板子上程序没问题,②使用例程还是会出现这样的问题。
但要说硬件会是哪里有关的话就很难说了,但大部分与元器件焊接,电源供电,晶振是否稳定会有关联。
,
Lions:
谢谢解答,是晶振的问题