fovVdk 发表于 2018-2-28 19:38:14

求助:任务堆栈溢出

在rtos中,使用xTaskCreate创建任务后,多次调用该任务导致堆栈溢出,大佬们知道怎么优化这种多次调用任务创建,防止堆栈溢出
或者说本身就是不合理的,推荐一个好的方法{:3_59:}

lusson 发表于 2018-2-28 21:01:36

你的意思是创建这个任务后又删除然后再创建再删除,几次后溢出?

aozima 发表于 2018-3-1 09:31:08

多次调用任务创建
并不会造成溢出,线程里面使用过大才会溢出。

软件方面自己测算好栈的最大深度,确保不会溢出。
包括可能调用的函数指针。
并尽量避免递归,如果必须有,最大递归深度也要明确。
开发期间可以让线程切换时做栈检查。

硬件方面,可以对栈底做保护,当栈溢出时能从硬件上面探查到。

fovVdk 发表于 2018-3-1 14:45:29

lusson 发表于 2018-2-28 21:01
你的意思是创建这个任务后又删除然后再创建再删除,几次后溢出?

是的,多次后堆栈溢出了

fovVdk 发表于 2018-3-1 14:47:08

aozima 发表于 2018-3-1 09:31
并不会造成溢出,线程里面使用过大才会溢出。

软件方面自己测算好栈的最大深度,确保不会溢出。


谢谢大牛{:handshake:}

pryprypry 发表于 2018-3-3 08:58:28

应该是任务里面用了什么算法导致递归,或者栈分配的不够大导致的。

simplorer 发表于 2018-3-3 15:59:46

我原来开发的时候也遇到这个问题,查了很久,一直没定位。
现在都是使用静态任务创建,静态分配。
因为做电机控制,溢出的话,电机行为不可控,太危险。
页: [1]
查看完整版本: 求助:任务堆栈溢出