这个abort出现在任务切换时,不是堆栈溢出,任务栈剩余空间还很充足,也没踩内存,调查了很久,不知道啥原因。
发现一些现象如下:
1、发现开O3优化就不会出现这个问题。不开就一定会出现。
2、发现跟信号量有关,只要在任务里使用了Semaphore相关的函数就会出现。当然开O3优化也不会出现。
求各位大佬指点迷津。
Nancy Wang:
应该跟任务中使用Semaphore没有关系,是可以使用的。
尝试简化代码看看,再逐步添加一些功能。
缩小优化范围看看,比如对某些文件进行优化,优化文档也可以看一下。
www.ti.com/…/sprui04b.pdf
另外建议结合RTOS下的几个工具看一下。
software-dl.ti.com/…/rov.html
www.ti.com/…/spruh43f.pdf
,
6490767:
现在有了新发现,就是任务中直接使用Semaphore_pend是没问题的(任务切换时不会出现abort);
但是将Semaphore_pend封装在另一个函数里(这个函数在本文件),再调用封装的函数就会abort,封装的函数很简单,单步调试对比Semaphore_pend的入参,也没什么问题,跟直接调用Semaphore_pend的入参是一样的。