在rtt系统的timer回调中调用了带有互斥锁操作的接口函数。
是应用代码中的timer吗?然后是软timer还是硬timer?
如果是硬timer,那么就是在ISR中执行的,在ISR中调用mutex是非法行为。
使用的是rtt系统的timer,貌似实现是用了硬件的滴答计时器。
发布于8年前
在rtt系统的timer回调中调用了带有互斥锁操作的接口函数。
是应用代码中的timer吗?然后是软timer还是硬timer?
如果是硬timer,那么就是在ISR中执行的,在ISR中调用mutex是非法行为。
使用的是rtt系统的timer,貌似实现是用了硬件的滴答计时器。
发布于8年前
我们定位了 一个原因:
在rtt系统的timer回调中调用了带有互斥锁操作的接口函数。
原因大概是:遇到该问题的原因好像是连继调用了rt_hw_interrupt_disable函数
具体如何产生的问题,原理是什么没有明确定位。
发布于8年前
对写穿的内存区域下 写断点
如果能定位是哪里写穿了,问题就定位了。
我在出问题的地方打了断点,正在分析问题原因。
发布于8年前
这个反映的是你的任务栈使用情况,一般和函数调用层数,函数中局部非静态变量占用内存空间有关。
一般可以增大栈大小解决。但是,但是,但是,如果增加了栈大小,问题依然是这样,就非常必要怀疑是否有其他代码把任务控制块里的结构体修改了。
这个怀疑是否有其他代码把任务控制块里的结构体修改了,如何来确认呢,有什么好用的方法和思路吗?
发布于8年前
已经用增大栈大小试过了,但是仍然还是有这个问题。
看别人的帖子里有说是:
1、溢出是由于让fatFs支持长文件名导致的
2、遇到该问题的原因好像是连继调用了rt_hw_interrupt_disable函数
但是我这里的工程中没有用到fatfs。
问 请教关于栈溢出问题?