041、Zephyr RTOS内核基础:线程概念
Zephyr RTOS内核基础:线程概念从一次现场设备“假死”说起去年在做一个工业网关项目,现场反馈设备运行72小时后会间歇性“死机”——看门狗没复位,LED还在闪,但MQTT数据就是发不出去。远程抓日志发现,负责网络通信的线程优先级被某个传感器采集线程“饿死”了。当时用的就是Zephyr RTOS,排查到最后,问题出在线程优先级配置和调度策略上。那次之后我重新翻了一遍Zephyr的线程管理文档,发现很多坑其实在概念层面就能避免。今天这篇笔记,就从线程的创建、调度、生命周期这几个核心点展开,结合我踩过的坑来聊。线程是什么?别被“轻量级”三个字骗了Zephyr里的线程,本质上就是一个独立的执行上下文——有自己的栈空间、寄存器状态、调度优先级。很多人觉得RTOS的线程比Linux线程“轻量”,但轻量不代表可以随便创建。Zephyr的线程是静态分配的,栈空间在编译时就定死了,不像Linux那样可以动态扩展。看这段代码,一个典型的线程创建:#defineMY_STACK_SIZE

相关新闻