Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 

Repository files navigation

Swift Frame

---- Chime Lee

一、概述

Swift Frame(雨燕)是一款基于 LiteOS 设计思想打造的轻量级嵌入式代码架构,专为 MCU 级资源受限场景设计,核心借鉴 LiteOS 的任务调度与 IPC 通信范式,以 “模块化拆分、异步消息通信、分层 ID 寻址” 为核心,实现嵌入式业务的解耦、高效协作。

命名灵感源于雨燕 —— 身形小巧、飞行迅捷、能耗极低,契合框架 “轻量、高效、适配嵌入式资源受限场景” 的核心特性。

核心特性

  • 🪶 极致轻量:无冗余逻辑,适配 KB 级内存的 MCU,基于 LiteOS Task / 消息队列极简封装;
  • 🧩 模块化设计:业务拆分为 Service(进程级集群)、Module(线程级单元),独立部署 / 运行,故障隔离;
  • 📨 异步消息通信:基于 REQ/RESP 消息 ID 的异步交互,无阻塞通信,贴合 LiteOS IPC 设计范式;
  • 🔍 分层 ID 寻址:Service/Module/ 消息三级唯一 ID,精准路由,无寻址冲突;
  • 🛡️ 安全可控:静态数据池管理业务数据,引用计数避免内存泄漏 / 野指针。

核心设计

1. ID 规则(32 位分层设计,适配 MCU 32 位寄存器)

层级 位段分配 取值范围 说明
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 共用序号(仅标识位不同)。

2. 消息模型

框架将消息分为请求(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;              // 响应者线程地址
};

3. 核心组件

组件 对应 LiteOS 模块 核心职责
消息管理者 LOS_MsgQueue 维护 Module 与消息队列的映射,根据 destModuleID 分发消息,管理消息序列号
数据池 LOS_Mem 静态内存池管理业务数据,基于引用计数实现数据生命周期管理,避免动态内存泄漏
Service LiteOS 组件簇 业务集群(如网络 Service / 文件 Service),管理所属 Module 的启停 / 隔离
Module LiteOS Task 最小业务执行单元,绑定 LiteOS Task,独立消息队列,处理指定 REQ/RESP 消息

许可证

本框架为个人 / 团队自研嵌入式架构,基于 MIT 许可证开源,可自由修改、复用,仅限非商业用途。

设计理念

Swift Frame(雨燕)始终遵循 “轻量、高效、解耦” 的嵌入式设计原则,以 LiteOS 为底层基石,让嵌入式业务开发像雨燕飞行一样 —— 迅捷、低耗、灵活。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors