我在使用FreeRTOS过程中遇到的问题和解决办法

1,卡死在vPortRaiseBASEPRI函数里

    static portFORCE_INLINE void vPortRaiseBASEPRI( void )
    {
        uint32_t ulNewBASEPRI = configMAX_SYSCALL_INTERRUPT_PRIORITY;

        __asm
        {
            /* Set BASEPRI to the max syscall priority to effect a critical
             * section. */
/* *INDENT-OFF* */
            msr basepri, ulNewBASEPRI
            dsb
            isb
/* *INDENT-ON* */
        }
    }

我找到的原因:创建的任务函数退出了。比如下面图片的示例,没有while循环,进入之后直接退出
在这里插入图片描述

2,内存优化

方法1:减少不必要的任务优先级1个优先级占用20B的空间

#define configMAX_PRIORITIES					( 16 )

3,硬件中断

优先考虑堆栈不足
一般的问题参考https://blog.csdn.net/weixin_43862847/article/details/105683634
分析的时候后,断点要打在hardfault_handler函数入口处,如果发现堆栈被破坏了,栈内PC指针指向非代码或者内存空间,优先考虑堆栈不足
注意:单步调试下水位线不一定准确,全速不出错才是真的没问题。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用 FreeRTOS 过程,可能会遇到以下一些常见问题: 1. 任务堆栈溢出:任务堆栈不够大,导致任务运行时发生堆栈溢出。解决方法是增加任务堆栈大小或优化任务逻辑,减少堆栈使用量。 2. 任务优先级错误:任务的优先级设置不当,导致任务调度出现问题,例如优先级反转或优先级饥饿。解决方法是正确设置任务的优先级关系,确保高优先级任务能够及时运行。 3. 断嵌套错误:断嵌套层数过多,导致断处理函数无法正常执行或系统响应变慢。解决方法是合理设置断优先级,避免嵌套过多的断。 4. 资源竞争:多个任务同时访问共享资源,导致数据错误或死锁等问题。解决方法是使用信号量、互斥锁或消息队列等机制对共享资源进行保护和同步。 5. 内存泄漏:未正确释放动态分配的内存,导致内存泄漏问题。解决方法是确保在不再使用动态分配内存时及时释放,可以使用内存泄漏检测工具来辅助排查问题。 6. 时间管理错误:任务的时间管理不当,导致任务无法按时完成或出现时间相关的问题。解决方法是合理设置任务的延时、定时器或使用时间片轮转调度策略。 7. 队列溢出:队列的长度设置不当,导致队列溢出或数据丢失。解决方法是根据实际需求设置适当的队列长度,并进行错误处理或数据丢弃机制。 对于这些问题,可以通过以下方式来解决: 1. 仔细阅读 FreeRTOS 官方文档和参考手册,了解 FreeRTOS使用方法和功能。 2. 使用 FreeRTOS 提供的调试工具和配置选项,如堆栈溢出检测、任务调度器状态查询等功能,帮助发现和解决问题。 3. 使用适当的调试技术和工具,如断点调试、日志输出、追踪等,帮助定位和排查问题。 4. 参考 FreeRTOS 社区和论坛,寻求帮助和交流经验,可能会找到类似问题的解决方案。 5. 仔细分析代码逻辑和任务间的依赖关系,确保任务间的同步和通信正确实现。 6. 定期进行性能测试和负载测试,以发现潜在的问题并优化系统性能。 请注意,以上方法仅为一般性建议,针对具体问题还需要根据实际情况进行具体分析和解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菠萝地亚狂想曲

送我一瓶农夫山泉?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值