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

wordpress区分移动站怎样免费制作网页

wordpress区分移动站,怎样免费制作网页,网站设置右击不了如何查看源代码,好的网站首页建设公司一、前言与问题 在基于 FreeRTOS 的嵌入式系统中,我使用 STM32F1 开发一个 MQTT 客户端应用,涉及两个主要任务: ATRecvParser:负责解析 Wi-Fi 模块的 AT 命令响应(如 OK、ERROR 和 IPD 数据)。MQTT_Clien…

一、前言与问题

在基于 FreeRTOS 的嵌入式系统中,我使用 STM32F1 开发一个 MQTT 客户端应用,涉及两个主要任务:

  • ATRecvParser:负责解析 Wi-Fi 模块的 AT 命令响应(如 OK、ERROR 和 +IPD 数据)。
  • MQTT_Client_Task:通过 MQTT 协议连接服务器,订阅主题并发布消息。

在运行过程中,程序出现以下异常:

  1. 调用栈跳转:调试器显示程序在 prvIdleTask(空闲任务)prvCheckTasksWaitingTermination(FreeRTOS 内部清理函数)之间反复跳转,无法正常运行。
  2. TCB 异常:任务控制块(TCB)的 pxTCB 值显示为 0xA5A5A5A5(未初始化值),表明 TCB 可能损坏。

    二、了解空闲任务prvIdleTask、pxTasksWaitingTerminatio、TCB

    1、什么是空闲任务-----prvIdleTask

    1.调用时间

    在没有其他任务可运行时(没有任何其他任务处于就绪态)保持 CPU 忙碌

    2.调用例子:

    系统中有三个任务:defaultTaskATRecvParser MQTT_Client_Task

    • defaultTask 调用 osDelay(1),几乎一直处于阻塞态。
    • ATRecvParser 因 HAL_AT_Secv 阻塞。
    • MQTT_Client_Task 已删除,不再调度。

    此时,当系统中无其他就绪任务时,调度器将 CPU 分配给 prvIdleTask。

      3.特征

    • 自动创建,优先级最低(通常为 0)。
    • prvIdleTask 是一个无限循环任务,包含 for(;;) 循环,定期检查系统状态。
    • 执行低优先级操作(如电源管理钩子)。
    • 调用 prvCheckTasksWaitingTermination 清理已删除任务。
    • (避免进入低功耗模式,视配置而定)。

    二、什么是pxTasksWaitingTerminatio

    • prvCheckTasksWaitingTermination
      • 这是 FreeRTOS 内部函数(定义在 tasks.c 中),负责检查并清理 pxTasksWaitingTermination 列表中的已删除任务。
      • 当任务被 vTaskDelete 标记为待删除时,FreeRTOS 将其 TCB 加入该列表。prvCheckTasksWaitingTermination 会释放 TCB 和栈内存,但前提是任务列表有效且资源可用。
      • 如果 TCB 指针无效或列表遍历出错,函数可能进入死循环或异常状态。

    关系:

    • prvIdleTask 是 prvCheckTasksWaitingTermination 的调用者之一。空闲任务在系统空闲时运行,负责清理工作,因此当 MQTT_Client_Task 删除后,prvIdleTask 会尝试调用 prvCheckTasksWaitingTermination。

    三、TCB

    TCB(Task Control Block,任务控制块) 是 FreeRTOS 中用于管理任务的核心数据结构。它存储了一个任务的所有关键信息,以便 FreeRTOS 调度器能够正确地创建、调度、暂停或删除任务。TCB 包含以下主要内容:任务的栈指针。任务状态:如运行态、就绪态、阻塞态等。任务优先级:决定调度顺序。任务名称:用于调试。

    以下是一个TCB的内容:在这里展现的是一个损坏的TCB,正常 TCB:pxTCB 应为有效地址(如 0x20001000),pxTopOfStack 指向栈顶,xStateListItem 包含有效列表项。

    问题:

    每个任务都有一个独立的 TCB。那我上面的prvCheckTasksWaitingTermination();有不是一个任务,为什么可以看见他的TCB?

    • pxTCB 并不是 prvCheckTasksWaitingTermination 自己的 TCB(因为它不是任务),而是它正在处理的某个已删除任务(如 MQTT_Client_Task)的 TCB。
    • FreeRTOS 的 TCB 是动态分配的,当任务删除时,TCB 被加入 pxTasksWaitingTermination,等待清理。prvCheckTasksWaitingTermination 从列表中取出 TCB,赋值给局部变量 pxTCB 进行处理。

    四、TCB损坏导致pxTasksWaitingTerminatio和prvIdleTask之间跳转

    正常情况下,MQTT_Client_Task 删除后,ATRecvParser 阻塞,系统中无就绪任务,prvIdleTask 运行并通过 prvCheckTasksWaitingTermination 清理资源,随后持续运行直到有任务就绪。

    TCB 损坏原因

    • 栈溢出:MQTT_Client_Task 的栈(2048 字节)可能不足,溢出覆盖 TCB 内存。
    • 内存不足:堆内存(2032 字节)可能无法分配 TCB 或栈,导致无效指针。
    • 任务删除异常:vTaskDelete(NULL) 在网络操作未完成时执行,TCB 状态不一致。
    • 互斥锁死锁:at_ret_mutex 未解锁,阻塞 ATSendCmd,影响 mqtt_connect,导致 TCB 未正确更新。

    我就是因为删除的任务重,at_ret_mutex 未解锁就把任务删除了,导致资源为释放,TCB损坏

    http://www.dtcms.com/wzjs/227662.html

    相关文章:

  1. 做网站的IDE竞价托管哪家专业
  2. qq群优惠券里面网站怎么做的福州整站优化
  3. 安全员c证电子证书查询搜索引擎优化教程
  4. 网站建设项目可行性报告如何优化网页加载速度
  5. 商丘网站建设推广公司如何编写一个网站
  6. 广州建设时时彩网站发稿平台
  7. 网站建设开源项目github营销型网站
  8. 做网站还是做阿里如何做电商新手入门
  9. 贵阳市公共住宅投资建设集团官方网站静态网页设计与制作
  10. 深圳做网站百度推广登录平台
  11. 企业网站优化公司哪家好教你免费申请个人网站
  12. 网站建设的费用入账百度服务中心人工客服电话
  13. 数据网站怎么做测试企业qq一年多少费用
  14. 访问国外网站dns搜索历史记录
  15. 陕西省建设工程信息网官网谷歌搜索优化seo
  16. 理卖做各视频网站的会员哪些网站可以免费发广告
  17. 鞍山便民信息平台百度seo优化规则
  18. 做餐饮的网站青岛网站制作推广
  19. 做网站有哪些法规苏州网站制作推广
  20. 求网站开发客户关键词网络推广企业
  21. 深圳团购网站设计哪家好百度权重网站排名
  22. 网站建设与推广培训学校如何在各大平台推广
  23. 莆田 网站建设seo优化排名易下拉软件
  24. 企业网站建设可行性分析表互联网营销方案
  25. 长春网站网站创建的流程是什么
  26. 手机网站设计哪家好长沙建站优化
  27. 淮安注册公司代办网站搜索引擎优化方案
  28. web是网页设计吗seo搜索优化
  29. 百度网站前面的图片seo优化知识
  30. 提供手机网站制作哪家好个人网站设计图片