1. 项目概述

1.1 系统定位

JxOS是一款面向MCU的小型前后台系统,专为资源受限的嵌入式设备设计。该系统采用模块化架构,提供消息传递、事件处理、软件定时器、低功耗管理等核心功能,同时集成了按键扫描、LED控制等常用外设驱动模块。

1.2 设计理念

系统设计遵循三个核心原则:

  1. 硬件解耦 :功能模块与硬件平台高度解耦,提升代码复用率
  2. 兼容性优先 :避免使用复杂数据结构和语法特性,确保跨平台兼容性
  3. 快速开发 :提供标准化应用框架和常用功能模块,缩短开发周期

2. 系统架构设计

2.1 目录结构

JxOS/
├───demo_code        # 示例代码
├───jxos             # 核心系统
│   ├───bsp          # 板级支持包(逐步迁移至driver/lib)
│   ├───kernel       # 系统内核
│   ├───driver       # 硬件相关驱动
│   ├───lib          # 硬件无关库
│   ├───sys_service  # 系统服务
│   └───std_app      # 标准应用
├───platform         # 平台适配
│   ├───N76E003      # 新唐MCU实现
│   └───STM8S103K3   # STM8实现
└───JSnet            # 网络功能扩展

2.2 核心模块说明

2.2.1 内核模块(kernel)

提供基础系统服务:

  • 任务调度管理
  • 事件同步机制
  • 消息传递系统
  • 内存分配接口
  • 进程间通信(邮箱/管道)

2.2.2 驱动模块(driver)

采用静态初始化方式,通过config.h配置:

// 典型驱动配置示例
#define LED_GPIO_PORT  GPIOA
#define LED_GPIO_PIN   GPIO_PIN_5
#define LED_ACTIVE_LEVEL 1

2.2.3 功能库(lib)

动态初始化模块,提供通用功能:

  • 环形缓冲区
  • CRC校验
  • 软件定时器
  • 软件PWM

2.2.4 系统服务(sys_service)

基于任务实现的后台服务:

  • 低功耗管理
  • 系统日志输出
  • 看门狗监控

3. 硬件适配方案

3.1 支持平台

已验证的硬件平台包括:

  1. 新唐N76E003(8051内核)
  2. STM8S103K3(STM8内核)
  3. x86 PC(测试环境)

3.2 移植要点

  1. 时钟配置 :适配系统Tick定时器
  2. 中断处理 :实现临界区保护
  3. 外设驱动 :提供基础GPIO/UART驱动

4. 应用开发框架

4.1 项目创建流程

  1. 创建平台目录: platform/<MCU型号>/<项目名>
  2. 建立配置文件:
    • config/jxos_config.h 系统参数配置
    • config/type.h 类型定义
  3. 实现框架文件:
    • framework/main.c 主循环入口
    • framework/isr.c 中断服务例程
    • framework/callback_handler.c 回调处理

4.2 典型任务结构

// 用户任务示例
void user_task(void) 
{
    jxos_event_t event;
    while(1) {
        // 等待事件触发
        if(jxos_event_wait(&event, TIMEOUT_MS)) {
            // 事件处理逻辑
        }
        
        // 后台处理
        user_process();
    }
}

5. 关键功能实现

5.1 消息传递机制

提供两种消息接口:

  1. 高级接口 :通过消息名获取句柄
jxos_msg_handle_t hdl = jxos_msg_get_handle("MSG_NAME");
jxos_msg_send(hdl, &data, sizeof(data));
  1. 低级接口 :直接操作全局变量
extern volatile uint8_t g_msg_flag;
g_msg_flag = 1;

5.2 低功耗管理

实现多级休眠模式:

  1. 通过sys_service注册休眠回调
  2. 系统自动管理休眠状态切换
  3. 支持外设唤醒源配置

6. 扩展功能实现

6.1 无线网络功能

基于433MHz射频模块实现:

  1. 物理层驱动封装在driver目录
  2. 网络协议栈实现为独立模块(JSnet)
  3. 提供标准消息接口与上层通信

6.2 按键处理

标准应用模块特性:

  • 支持单击/双击/长按识别
  • 消抖时间可配置
  • 通过消息或全局变量上报事件

7. 系统配置指南

7.1 内存配置

// jxos_config.h 典型配置
#define JXOS_HEAP_SIZE     1024
#define MAX_TASK_NUM       8
#define MAX_MSG_QUEUE_SIZE 32

7.2 模块使能

// 功能模块开关
#define USE_SOFT_TIMER     1
#define USE_LOW_POWER      1
#define USE_BUTTON_MODULE  1

8. 开发注意事项

  1. 中断处理限制

    • 避免在ISR中调用复杂函数
    • 临界区使用 ENTER_CRITICAL/EXIT_CRITICAL
  2. 兼容性约束

    • 避免使用函数指针
    • 结构体成员保持字节对齐
  3. 性能优化

    • 关键路径使用静态内存分配
    • 长任务适当加入延时
Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐