开发MKL17Z64VFM4客户板,前几天测试时没有任何问题,现在需要软件升级一下,下载代码后发现只要执行LPUART_RTOS_Send()系统就会软复位,但是单步调试时假若是跟踪到LPUART_RTOS_Send内部则不会发生软复位,不跟踪到LPUART_RTOS_Send内部就会发生软复位。
SDK采用的是2.3.1,其中的Freertos版本为9.0(SDK 2.3.1自带),48Mhz运行。
郁闷了!!!有谁遇到过此类情况?
其中还用到I2C,使用I2C 时不会发生软复位,检查代码多次,没发现什么问题,关键是原先软件运行了一个多月,除了软件本身功能上有点问题外,系统运行一直是正常的。
刚试了SDK 2.4.1版本,结果是一样的
Hi Thooman:
看以来有点类似 race condition. 有两个任务在同时竞争同一个资源。 当你单步跟踪时,冲突的概率降低,所以不会发生reset.
Regards
Daniel
可以肯定不是资源竞争的问题,因为调用资源时是做了mutex的,关键是原先程序运行的很好,连续测试了一个多月都没发生过问题,而现在是每次运行都出问题