碧落
碧落
这家伙很懒,什么也没写!

注册于 8年前

回答
5
文章
0
关注者
0

发布于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。

回到
顶部

发布
问题

投诉
建议