初次使用Hercules的MCU,在使用TMS570LS3137的199$的开发板跑的DEMO程序(Hercules Safety MCU Demos下的程序),总是有时(有时不会)会在如下代码中进入sys_startup.c中的void _c_int00()的while(1);
if (esmREG->ESTATUS1[2])
{
/* USER CODE BEGIN (22) */
/* USER CODE END */
while(1);
}
请问如何解决??
谢谢。
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.
初次使用Hercules的MCU,在使用TMS570LS3137的199$的开发板跑的DEMO程序(Hercules Safety MCU Demos下的程序),总是有时(有时不会)会在如下代码中进入sys_startup.c中的void _c_int00()的while(1);
if (esmREG->ESTATUS1[2])
{
/* USER CODE BEGIN (22) */
/* USER CODE END */
while(1);
}
请问如何解决??
谢谢。
转个搜索到的解决方法:http://e2e.ti.com/support/microcontrollers/hercules/f/312/t/171947.aspx?pi25291=1
This might be due to the CCMR4 errata. It will be fixed in RevB. Anyway, I don't think the interrupt can be enabled before the ISR is initilized. The way that interrupt is enabled inHalCoGen 3.0.0 is NOT recommended. Try this:
1. Comment or delete ‘cpsie if’ in sys_core.asm
问题原因:
双核Cortex-R4处理器运行在锁步(lock-step)的操作模式。一个核心比较模块(CCM-R 4)的输出信号来自每个R4的CPU进行比较。
在两个CPU的任何差别,输出是一个高危险性级别的故障标记。CPU内部寄存器都不能保证在上电时,两个 CPU在相同的状态下。
Hi Kejun,
在系统功能开发阶段,建议你把Startup中那些用于安全较验的代码屏蔽掉。在系统功能开发完成后,需要开发Safety方面的功能时,再打开这些安全功能。
Regards,
Jay