Part Number:TMS320F28388D
大家好,
我想要分别实现CM两个工程和CPU1两个工程之间的跳转,在实现过程中出现了一些问题:
CM的两个工程分别为CM_APP和CM_Bootloader,CPU1的两个工程分别为CPU1_APP和CPU1_Bootloader
在debug配置上,CM和CPU1的APP的配置为:
bootloader配置为:
问题1:在debug模式下,CPU1能正常在APP和bootloader之间跳转,而CM从一个工程跳到另一个工程会进入faultISR或者defaultISR(CM的APP移植了lwip_udp协议来实现网口通信)
问题2:exit函数不起作用
问题3:如果在CPU1的APP工程中将设置ECAT时钟函数调用后(因为app程序需要实现ECAT通信),重新上电后CPU1的APP工程中IPC_sync(IPC_CM_L_CPU1_R, IPC_SYNC)会失效
下面附上工程代码附件,可直接烧录在28388的开发板上运行
appTest.zip
Yale Li:
我已经咨询了相关工程师,请关注下方链接:
https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1317671/tms320f28388d-cm-and-cpu1-program-jumping
,
MTFT:
你好,麻烦帮我回复一下。
1、我是打算通过cm的Ethernet通信来传输程序数据进行升级,所以在cm_bootloader和cm_app都要添加Ethernet功能,附件的工程只在cm_app添加了Ethernet,因为我测试过如果同时在bootloader和app添加ethernet,cm工程程序从app跳转至bootloader后,bootloader的ethernet功能无法正常使用,所以先测试两个工程是否能正常跳转,目前的问题就是即使只有app添加ethernet通信,在两个工程跳转时还是会遇到问题。
2、是的,目前还没有在bootloader工程添加烧写程序,仅仅是在测试工程跳转
使用上述指令是可以正常跳转的,但我想知道为什么使用exit函数无法跳转。
3、好的谢谢,期待您的回复
,
Yale Li:
好的,已跟进
,
MTFT:
你好,麻烦帮我回复一下。
第二个问题我去尝试一下,第一个和第三个问题能否帮我跟进一下。
,
Yale Li:
好的,已跟进
,
MTFT:
你好,麻烦帮我回复一下
关于第3个问题:
是因为在CPU1_APP工程中使用了下面这部分代码,导致在跳转过程使函数IPC_sync()失效。
为了更好说明这个问题,我重新上传一份压缩文件。
0334.appTest.zip
这份文件包含了4个工程:CPU1_APP, CM_APP, CPU1_BOOTLOADER, CM_BOOTLOADER
烧写范围
CPU1_BOOTLOADER、CM_BOOTLOADER:
sector0~sector2
CPU1_APP、CM_APP:
sector3~sector13
这份文件可直接烧写至controlCARD运行。
这里做一下简单说明:
controlCARD上电复位后先运行CPU1_BOOTLOADER和CM_BOOTLOADER,运行时CPU1_BOOTLOADER使controlCARD的LED灯D1慢速闪烁3次然后跳转至CPU1_APP,使LED灯D1快速闪烁4次然后继续跳转至CPU1_BOOTLOADER。CM核与CPU1核工作类似,使LED灯D2进行类似闪烁动作。
问题:
1、在CPU1_APP中,如果define了ETHERCAT,则CM_BOOTLOADER无法正常跳转至CM_APP
2、即使不define ETHERCAT,CM_BOOTLOADER也无法正常跳转至CM_APP,或者CM_APP跳转至CM_BOOTLOADER时会进入dafaultISR中。
,
Yale Li:
好的,我跟进过去了