关于FREERTOS的疑问
FREERTOS建了两个任务,成功运行了,但是,每次运行2个小时左右就死机,这是什么情况,是堆栈小的原因吗? 本帖最后由 wuqt 于 2017-8-9 13:39 编辑这个原因就多了,先在idle task设个led看看是不是系统死了,把statck overflow 的 hook函数打开,监视一下是不是堆栈溢出了,还有是不是hardfault了 默认堆栈比较小,如果有sprintf,或者printf长一些的参数就会出现你这种状况。另外要看你其它代码是否有问题。干净的FreeRTOS我测过的4个线程6个队列,运行2天都没问题。 wuqt 发表于 2017-8-8 13:24
这个原因就多了,先在idle task设个led看看是不是系统死了,把heap overflow 的 hook函数打开,监视一下是 ...
使用了uxTaskGetStackHighWaterMark函数查询任务栈没有溢出,请问一下,如果configTOTAL_HEAP_SIZE定义的小了,是不是开始时,任务也可以运行,只是一段时间后会导致死机? jxbjxbjxb 发表于 2017-8-9 10:11
使用了uxTaskGetStackHighWaterMark函数查询任务栈没有溢出,请问一下,如果configTOTAL_HEAP_SIZE定义的 ...
Heap太小只会分配不到内存返回-1,看你是不是死在分配不到内存了,很可能运行久了内存碎片太多导致分不到大块的内存。刚开始运行没问题一般来说栈是够的,不过还是要监视一下是不是死在
vApplicationStackOverflowHook()里面了。
页:
[1]