---- Chime Lee
Swift Frame(雨燕)是一款基于 LiteOS 设计思想打造的轻量级嵌入式代码架构,专为 MCU 级资源受限场景设计,核心借鉴 LiteOS 的任务调度与 IPC 通信范式,以 “模块化拆分、异步消息通信、分层 ID 寻址” 为核心,实现嵌入式业务的解耦、高效协作。
命名灵感源于雨燕 —— 身形小巧、飞行迅捷、能耗极低,契合框架 “轻量、高效、适配嵌入式资源受限场景” 的核心特性。
- 🪶 极致轻量:无冗余逻辑,适配 KB 级内存的 MCU,基于 LiteOS Task / 消息队列极简封装;
- 🧩 模块化设计:业务拆分为 Service(进程级集群)、Module(线程级单元),独立部署 / 运行,故障隔离;
- 📨 异步消息通信:基于 REQ/RESP 消息 ID 的异步交互,无阻塞通信,贴合 LiteOS IPC 设计范式;
- 🔍 分层 ID 寻址:Service/Module/ 消息三级唯一 ID,精准路由,无寻址冲突;
- 🛡️ 安全可控:静态数据池管理业务数据,引用计数避免内存泄漏 / 野指针。
| 层级 | 位段分配 | 取值范围 | 说明 |
|---|---|---|---|
| Service ID | 高 8 位(16~23) | 0x00010000~0x00FF0000 | 业务集群标识(如网络 / 文件 / I/O),最多 255 个 |
| Module ID | 中 8 位(8~15) | 0x00010100~0x00FFFE00 | 基于 Service ID,每个 Service 最多 255 个 Module |
| 消息 ID | 低 8 位(0~7) | 0x00010101~0x00FFFFFE | 低 8 位含 1 位 REQ/RESP 标识(0=REQ,1=RESP)+7 位业务序号 |
ID 唯一性约束:
- Module ID 全局唯一;
- 同一 Module 下的消息序号不重复,REQ/RESP 共用序号(仅标识位不同)。
框架将消息分为请求(reqMsg)和响应(respMsg)两类,核心字段对齐 LiteOS 消息队列设计(固定长度,仅存元信息):
// 请求消息结构体(核心字段)
struct reqMsg {
uint32_t msgID; // 消息ID(含REQ标识)
uint32_t seq; // 消息序列号(全局自增,用于数据绑定)
uint32_t srcModuleID; // 发送方Module ID
uint32_t destModuleID; // 接收方Module ID
void* dataAddr; // 业务数据在数据池的地址
uint32_t dataLen; // 业务数据长度
const char* typeTAG; // 数据类型标签(类型安全校验)
int32_t (*proc)(struct respMsg*); // 响应回调函数
void* addr; // 发送者线程地址(LiteOS Task句柄)
};
// 响应消息结构体(核心字段)
struct respMsg {
uint32_t msgID; // 消息ID(含RESP标识)
uint32_t seq; // 与请求消息序号一致,用于关联
uint32_t srcModuleID; // 响应方Module ID
uint32_t destModuleID; // 接收方Module ID(原请求发送方)
void* dataAddr; // 响应数据在数据池的地址
uint32_t dataLen; // 响应数据长度
const char* typeTAG; // 数据类型标签
int32_t retCode; // 响应错误码
void* addr; // 响应者线程地址
};| 组件 | 对应 LiteOS 模块 | 核心职责 |
|---|---|---|
| 消息管理者 | LOS_MsgQueue | 维护 Module 与消息队列的映射,根据 destModuleID 分发消息,管理消息序列号 |
| 数据池 | LOS_Mem | 静态内存池管理业务数据,基于引用计数实现数据生命周期管理,避免动态内存泄漏 |
| Service | LiteOS 组件簇 | 业务集群(如网络 Service / 文件 Service),管理所属 Module 的启停 / 隔离 |
| Module | LiteOS Task | 最小业务执行单元,绑定 LiteOS Task,独立消息队列,处理指定 REQ/RESP 消息 |
本框架为个人 / 团队自研嵌入式架构,基于 MIT 许可证开源,可自由修改、复用,仅限非商业用途。
Swift Frame(雨燕)始终遵循 “轻量、高效、解耦” 的嵌入式设计原则,以 LiteOS 为底层基石,让嵌入式业务开发像雨燕飞行一样 —— 迅捷、低耗、灵活。