主题中讨论的其他器件:C2000WARE
您好!
我正在使用 MCU F28388D 开发我的项目、我使用了 MCU 的全部3个内核。
当我在调试模式下为3个内核构建3个项目时、一切仍然正常(优化杆:关闭。 opt_for_speed :Level 2)。
但是、当我在发布模式下构建它们时、会出现问题、详细信息如下:
CPU1内核:--opt_ar杆:o2、opt_for_speed:Level2。
CPU2内核:--opt_ar杆:o2、opt_for_speed:Level2。
CM 芯:-opt_fort:OFF,opt_for_speed:LEVEL2。
我的 C28x 编译器:TI v 18.12.4.LTS 和 ARM 内核:TI v18.12.4.LTS。 C2000ware_motorcontrol_SKD_3_00_01_00内的 C2000ware 版本3.02.00.00。 CCS9.3.0.00012
程序仍在运行、但存在问题、当 CPU2从 CM 内核到 CPU2内核之间的共享 RAM 读取变量时、发现故障(CPU1内核也会发生这种情况)。
我放置在背接地环路中的读取命令(while (1)位于主环路中:
CPU2内核中的示例代码
void main()
{
.
while (1) //后接地环路
{
//从共享 RAM CM 读取变量到 CPU2
sysmode = ipcCMtoCPU2Data.systemMode; =>失败
…
}
}
临时解决 方案,在读取命令"sysmode = ipcCMtoCPU2Data.systemMode"或将-opt_level ->关闭或将 opt_for_speed 更改为1级之前,我将 delay device_delay_US (10U)-大约10us。程序运行正常。
但我不知道根本的内核原因、我认为问题与访问 CPU 内核之间的共享 RAM 和保护芯片的安全功能有关?
您能否在 TRM、数据表等文档中向我提供有关此问题的原因或信息?