当前位置: 首页 > news >正文

prvTaskExitError异常退出,FreeRTOS启动失败分析

FreeRTOS报错信息如下:

Error:…\src\freertos\portable\RVDS\ARM_CM4F\port.c,233

根据断言信息,报错位置为port.c文件第233行,查看源代码:

staticvoidprvTaskExitError(void){/* A function that implements a task must not exit or attempt to return to * its caller as there is nothing to return to. If a task wants to exit it * should instead call vTaskDelete( NULL ). * * Artificially force an assert() to be triggered if configASSERT() is * defined, then stop here so application writers can catch the error. */configASSERT(uxCriticalNesting==~0UL);portDISABLE_INTERRUPTS();for(;;){}}

发现是执行了prvTaskExitError函数,再根据官方文件注释,FreeRTOS中规定,任务不能退出,如果要退出只能调用vTaskDelete( NULL ),否则就会异常报错,根据这个提示,检查各个任务,是不是有异常退出。

如果有多个任务,可以对在prvTaskExitError函数中增加调试代码,打印任务名称,如下:

staticvoidprvTaskExitError(void){/* A function that implements a task must not exit or attempt to return to * its caller as there is nothing to return to. If a task wants to exit it * should instead call vTaskDelete( NULL ). * * Artificially force an assert() to be triggered if configASSERT() is * defined, then stop here so application writers can catch the error. */TaskHandle_t xTask=xTaskGetCurrentTaskHandle();constchar*pcTaskName=pcTaskGetName(xTask);printf("Error:Task %s exited unexpectedly!\r\n",pcTaskName);configASSERT(uxCriticalNesting==~0UL);portDISABLE_INTERRUPTS();for(;;){}}

再次运行,即可打印出任务名称,从而具体分析某个任务:

Error:Task ftp_server exited unexpectedly!
Error:…\src\freertos\portable\RVDS\ARM_CM4F\port.c,237

可以看出,导致异常退出的任务是ftp_server,分析ftp_server任务,发现是有return返回的地方,导致任务异常退出了。

http://www.jsqmd.com/news/475747/

相关文章:

  • Leather Dress Collection 快速原型开发:使用 Qt 构建图形化测试客户端
  • 向AI学习项目技能(三)
  • 2026“养虾”狂潮:当 OpenClaw 成为新生产力,我们该狂欢还是冷思考?
  • Gemini Embedding 2把多模态信息整合同一向量空间了,还需要多向量列吗?
  • 洛谷有感!!!!!
  • Dataset类的使用
  • Agent Skills(智能体技能)
  • LeetCode热题100(三)
  • JamTools实用指南:五大核心功能的使用技巧与最佳实践
  • 我没有那么多数据,​我需要马上学,我不要硬规则,​我可以逐步学习,​现在我边标边学
  • 一句话让 AI 获取并且读完巴菲特十年股东大会实录,自动生成投资分析框架——InfiniSynapse 做到了
  • 2026年威海GEO推广哪家强套餐价格大揭秘
  • 在vscode中可以使用阿里云coding plan吗?
  • 突破Minecraft物品堆叠限制:如何用3行代码实现资源管理效率提升300%?
  • 【数据结构与算法】1_python版 _算法概念
  • LCL三相并网逆变器:准PR比例谐振控制策略详解与仿真说明文件解析
  • 【AI模型参考】AI智能的核心概念
  • Flutter 工具 loc_checker 的鸿蒙化适配实战 - 精准统计代码行数、自动化度量鸿蒙项目效能、构建质量门禁基石
  • 3.13打卡day27
  • 计算机毕业设计 java 学生就业信息管理系统 Java+SpringBoot 学生就业信息服务平台 Web 版高校就业信息管理系统
  • 技术逆向英语|202602022
  • 关于keil编译器版本问题的解决办法
  • 清杉科技:从技术研发到商业化运营的全面突破
  • 3步解锁音乐自由:ncmdump让NCM格式转换不再复杂
  • Python基于flask-django家用电器家电销售商城售后服务管理系统的设计与实现
  • 3.1~3.8
  • 【程序源代码】快递运单对账工具(客户可定制版)
  • 微信小程序音乐播放器毕设效率优化实战:从冗余加载到秒级响应
  • 解决node-sass@4.14.1 Node Sass is no longer supported. Please use `sass` or `sass-embedded` instead
  • 单片机的工厂方法模式和桥接模式结合使用