一路往蓝-Anbo
从 8 位机时代走到今天,我见证了硬件的飞跃,也磨平了很多的棱角。曾在繁华的大湾区折腾过梦想与品牌,让产品漂洋过海,如今则在异国他乡的某某设计中心研发岗位上再次回归初心。
这么多年过去,手里的烙铁和眼前的Terminal 依然亲切。常常自嘲是一个“只会写代码的人”,但这种坚持并非出于无奈,而是源于最底层的热爱。
我深知每一个 Bug 背后都是成长的机会,每一行代码都是与世界的对话。不求惊天动地,只希望在每一个产品中,都能留下作为一个嵌入式开发者对技术最朴素的尊重与执着。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【第八章】终极集成:状态机(FSM)与面向对象在 RTOS 中的落地
本文介绍嵌入式RTOS开发中的ActiveObject设计模式,将任务、队列、状态机和面向对象编程融合为统一架构。首先分析线性代码的局限性,提出采用有限状态机(FSM)处理事件驱动逻辑;然后阐述C语言实现面向对象封装的方法;最后详细介绍ActiveObject模式,该模式整合私有任务、消息队列和状态机,实现无锁编程和模块解耦。文章还提供了从Main到System的架构图谱,并总结了嵌入式RTOS编程模型的8个进阶要点,帮助开发者构建高效可靠的嵌入式系统。原创 2026-01-26 13:36:36 · 51 阅读 · 0 评论 -
【第七章】时序模型:软定时器与“把中断还给硬件”
本文探讨了嵌入式系统中中断与任务的高效协同机制。提出借鉴Linux的"底半部"模型,将中断处理分为硬件中断(顶半部)和任务处理(底半部),强调中断应仅完成数据搬运和任务通知,耗时操作交由任务处理。介绍了RTOS软件定时器的应用场景与限制,警示回调函数中的阻塞风险。同时对比了相对延时与绝对延时的区别,推荐使用vTaskDelayUntil实现精准周期控制。最后指出Tickless模式对低功耗设计的重要性,实现CPU深度睡眠以节省能耗。原创 2026-01-26 13:33:24 · 32 阅读 · 0 评论 -
【第六章】内存模型:栈溢出的深渊与堆的碎片
摘要: RTOS环境下,内存管理面临栈空间刚性预分配和堆碎片化两大挑战。每个任务独占的栈空间易导致浪费和溢出风险,而标准库的malloc则带来不可重入、执行时间不确定和内存碎片问题。解决方案包括:1)避免在任务中定义大数组局部变量,改用全局变量或动态申请;2)使用FreeRTOS的Heap_4算法减缓碎片化;3)采用定长内存池实现无碎片、O(1)速度的动态分配。内存池通过预分配固定大小块,完美解决高频通信场景下的内存管理问题,是"零拷贝"数据流的理想选择。原创 2026-01-26 13:31:15 · 36 阅读 · 0 评论 -
【第五篇】资源管理模型:共享资源的“围城”
资源管理没有银弹,只有权衡。关中断 (互斥锁 (Mutex守护任务 (Gatekeeper读写锁模式。最好的锁,就是不需要锁(Local Variable)。原创 2026-01-26 13:30:07 · 29 阅读 · 0 评论 -
【第四章】控制流模型:信号量与事件组的“红绿灯”艺术
摘要:本文深入探讨RTOS中的同步机制,重点分析二值信号量与互斥锁的关键区别(特别是优先级反转问题),并介绍事件组和任务通知的应用场景。信号量用于任务同步(无所有权),而互斥锁用于资源保护(有所有权和优先级继承特性)。事件组可实现多条件同步(AND/OR逻辑),任务通知则是最轻量级的同步方式(速度快、省内存)。正确选择同步工具(Mutex保护资源、信号量同步状态、事件组处理复杂条件、任务通知优化性能)是构建可靠RTOS系统的关键,同时需注意避免死锁问题。原创 2026-01-26 13:28:06 · 42 阅读 · 0 评论 -
【第三章】数据流模型:队列(Queue)不仅仅是传数据
摘要:本文探讨RTOS中队列(Queue)的核心机制与应用场景。队列不仅是数据缓冲区,更是所有权转移点和流控阀门。重点分析了值拷贝与零拷贝模型的选择标准:小数据直接传值,大数据传递指针并严格遵循所有权转移原则。文章揭示了常见的栈变量陷阱,并提出队列满时的两种处理策略:阻塞等待或丢弃旧数据。最后讨论了多对一和一对多的通信模式,强调系统设计时应明确数据管道的所有权和流控机制。原创 2026-01-26 13:25:23 · 75 阅读 · 0 评论 -
【第二章】任务划分:即使有 RTOS,也不要创建 20 个任务
摘要: RTOS任务划分需遵循"黄金标准":阻塞性与频率。任务创建消耗大量RAM(TCB与栈)和CPU资源,需谨慎。核心原则:1)阻塞源不同时拆分任务(如网络与串口处理);2)频率/实时性差异大时拆分(如高频电机控制与低频GUI)。避免过度拆分强耦合逻辑(如温湿度采集的连续步骤),应使用任务内状态机。典型物联网设备(如咖啡机)仅需4-5个核心任务(控制、通信、GUI等),通过队列解耦。设计核心:高内聚代码保留在单任务,仅对需解耦的场景引入多任务,平衡资源与并发需求。原创 2026-01-26 13:22:54 · 47 阅读 · 0 评论 -
【第一章】核心思维:那个在此刻“消失”的 CPU
摘要:RTOS本质是"有状态的抢占"而非"多任务",单核MCU通过时间片分时复用实现任务切换。裸机编程的线性思维在RTOS中不再适用,开发者需接受代码随时被打断的现实。RTOS通过保存/恢复CPU寄存器组(上下文)实现任务切换,每个任务拥有独立栈空间。非原子操作(如全局变量自增)会导致竞态条件,必须使用临界区或互斥锁保护。RTOS编程需要建立并发思维,关注代码原子性、可重入性和栈空间分配。原创 2026-01-26 13:20:31 · 48 阅读 · 0 评论
分享