Anbo-MOS 微内核怎么用?从“零依赖工具库”到“全功能微内核”
很多工程师在移植内核时最怕的就是“牵一发而动全身”。在 Anbo-MOS 这里,我把移植难度分成了三档,大家可以根据自己的需求“对号入座”。
一、 三档移植方案:总有一款适合你
我不强迫你实现所有的硬件底层接口(Arch 函数)。根据你想实现的功能,工作量完全不同:
第 0 档:零移植(直接当工具库用)
如果你只需要高效的底层数据结构,Anbo-MOS 的 List(链表) 和 Ring Buffer(环形缓冲区) 是纯 C99 实现,零平台依赖。
-
用法:直接把源码拖进工程,头文件一引就能用。
-
代价:0 行底层代码实现。
第 1 档:最小移植(仅需 2 个函数)
如果你想用 Anbo 的事件总线(EBus)、对象池(Pool)或者状态机(FSM),你只需要实现最基础的临界区保护:
-
实现接口:
Anbo_Arch_Critical_Enter/Exit。 -
收益:解锁异步事件分发和层次化状态机,让你的业务逻辑彻底解耦。
第 2 档:完整移植(工业级闭环)
如果你要开启软件定时器、多路看门狗和异步日志系统,则需要实现完整的 5-6 个桩函数(包括 GetTick、UART_DMA 等)。
二、 模块依赖矩阵:要多少,取多少
为了做到极致的轻量,我给所有非核心模块都加了开关。你在 anbo_config.h 里把宏设为 0,对应的 .c 文件编译出来就是空的,零代码体积,零 Arch 依赖。
| 模块 | 核心能力 | 是否可直接使用(无依赖) |
| List / RB | 基础数据结构 | 是 |
| EBus / FSM | 异步信号发布订阅 / 状态机 | 需临界区保护 |
| Timer / WDT | 软件定时器 / 多路看门狗 | 需 Tick 接口 |
| Log | 异步日志输出 | 需 UART 驱动 |
三、 Anbo_Device:是“工具”而不是“枷锁”
这是我在移植文档里着重写的一点。很多人问:我要不要把驱动都包装成内核提供的 Anbo_Device 接口?
我的建议是:看场景,不硬套。
1. 什么时候该用?(推荐包装)
-
字节流设备:比如 UART、USB CDC。
-
原因:这类设备天然需要环形缓冲、TX 忙状态跟踪和异步 I/O。包装成
Anbo_Device后,日志系统可以开箱即用,RX 事件也能自动发布到总线上。
2. 什么时候不该用?(直接调 BSP)
-
寄存器级传感器:比如 I2C/SPI 的 IMU 或 ADC。
-
原因:这种“写寄存器地址 -> 读数据”的同步操作,包装成
Read/Write流模型反而累赘。直接暴露BSP_IMU_ReadFIFO()这种带语义的 API,代码更清晰,性能更高。
结论: Anbo-MOS 支持两种方式并存。USART1 用 Anbo_Device 接入系统,IMU 则直接调用 BSP 函数,架构上完全不冲突。
四、 快速上手清单
想在你的项目里跑起来?对一下这个清单:
-
[ ] 选档位:决定你要 0 档、1 档还是 2 档移植。
-
[ ] 拷源码:将
anbo/kernel/复制到项目。 -
[ ] 设宏定义:在
anbo_config.h里关掉不需要的模块。 -
[ ] 写桩函数:实现对应的
Anbo_Arch_*函数。 -
[ ] 编译运行:添加路径,链接,Done!
五、 写在最后
Anbo-MOS 的设计初衷不是为了成为另一个“大而全”的 RTOS 负担,而是成为你手里那把顺手的瑞士军刀。
六、 传送门(求一星!)
这套东西凝结了我多年的工程经验。如果它能帮你理清架构思路,或者让你少踩几个低功耗的坑,请务必去 GitHub 点个 Star! 大家的 Star 是我持续更新、适配更多硬件平台(H7/G0/F4 等)的最大动力。
-
内核核心仓库 (Repo A): https://github.com/AnboPeng/Anbo-MOS
-
应用全栈套件 (Repo B): https://github.com/AnboPeng/Anbo-L4s5-App
代码已推,文档已齐。咱们 GitHub 见,源码里见!
更多推荐



所有评论(0)