求助:任务堆栈溢出
在rtos中,使用xTaskCreate创建任务后,多次调用该任务导致堆栈溢出,大佬们知道怎么优化这种多次调用任务创建,防止堆栈溢出或者说本身就是不合理的,推荐一个好的方法{:3_59:} 你的意思是创建这个任务后又删除然后再创建再删除,几次后溢出? 多次调用任务创建
并不会造成溢出,线程里面使用过大才会溢出。
软件方面自己测算好栈的最大深度,确保不会溢出。
包括可能调用的函数指针。
并尽量避免递归,如果必须有,最大递归深度也要明确。
开发期间可以让线程切换时做栈检查。
硬件方面,可以对栈底做保护,当栈溢出时能从硬件上面探查到。 lusson 发表于 2018-2-28 21:01
你的意思是创建这个任务后又删除然后再创建再删除,几次后溢出?
是的,多次后堆栈溢出了 aozima 发表于 2018-3-1 09:31
并不会造成溢出,线程里面使用过大才会溢出。
软件方面自己测算好栈的最大深度,确保不会溢出。
谢谢大牛{:handshake:} 应该是任务里面用了什么算法导致递归,或者栈分配的不够大导致的。 我原来开发的时候也遇到这个问题,查了很久,一直没定位。
现在都是使用静态任务创建,静态分配。
因为做电机控制,溢出的话,电机行为不可控,太危险。
页:
[1]