Freertos任务切换异常问题

在调试FreeRTOS系统时,程序在vTaskSwitchContext()函数中出现断言失败,导致任务无法切换。该函数负责选取优先级最高的任务执行,而断言提示当前无就绪任务。可能的原因包括栈空间不足、优先级设置错误等。博主检查了相关资源并尝试关闭断言,发现程序能正常运行,但这并非长久之计。期望有经验的工程师分享解决此类问题的方法。

最近调试运行了freertos的代码时发现程序不知为何任务切换不了,经检查发现程序死在了断言中,这个断言所处的函数是vTaskSwitchContext。这个函数的作用是任务切换用的,断言的位置如下图所示:

 

经分析vTaskSwitchContext()函数的作用是寻找当前就绪列表中优先级最高的任务,然后运行此任务,进入这个断言中说明当前没有就绪任务。为啥会出现这种情况呢?按我的理解当用户任务都阻塞了,空闲任务应该就会进入就绪态呀?网上找了找可能的原因如下:

1.栈空间太小,导致溢出了

2.优先级设置不对

参考链接如下:

1.Problem with array bounds for pxReadyTasksLists (FreeRTOS 8.2.x) - #4 by RAc - Kernel - FreeRTOS Community Forums

2.

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值