# test_project **Repository Path**: huaxiaolunan_admin_admin_admin/test_project ## Basic Information - **Project Name**: test_project - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-04 - **Last Updated**: 2026-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # rtos_template - RTOS + AI 嵌入式工程模板 V3.0 > **融合方案**:以 B 工程(project_rtos_ai_key_board)的工程治理为底座, > 移植 A 工程(demo_framework)的内核设计(Kconfig + section registry + 真实驱动 + 测试套件)。 ## 核心特性 | 特性 | 来源 | 说明 | |---|---|---| | CMake 强制层间隔离 | B | component.cmake 在编译期 FATAL_ERROR 阻止违规依赖 | | Kconfig 配置系统 | A | `make menuconfig` 驱动 feature gating | | section-based 设备注册 | A | Linux 内核 idiom,`DEVICE_REGISTER` 宏 + `.devices` section | | OS 抽象层 | 新增 | os_task/os_mutex 统一 API,PC 用 pthread,STM32 用 FreeRTOS | | LVGL 多版本适配 | 新增 | v8/v9 并列,业务代码只调 lvgl_port_* API | | 测试分层 | A + 新增 | T1 框架内核 / T2 子仓库 / T3 产品 / T4 集成 | | AI 代码治理 | B | .cursorrules + coding_standard + ai_self_check 三层防御 | | 跨平台脚本 | B | linux/windows 一键 setup/build/run | ## 快速开始 ### Linux/macOS ```bash # 1. 安装依赖(自动检测 apt/dnf/yum/pacman/brew) ./linux/setup.sh # 2. 构建(默认 PC sim + watchface_demo) ./linux/build.sh # 或用 Makefile make build # 3. 运行 ./linux/run.sh # 或 make run # 4. 测试(构建 + 跑全部测试) ./linux/test.sh # 或 make test # 5. 配置(可选,需 kconfiglib) ./linux/menuconfig.sh # 或 make menuconfig ``` #### 常用参数 ```bash ./linux/build.sh --tests # 同时构建测试 ./linux/build.sh --product earphone_demo # 切换产品 ./linux/build.sh --platform stm32_wearable # 交叉编译(需 arm-none-eabi-gcc) ./linux/build.sh --clean # 清理后重建 ./linux/build.sh --generator Ninja # 用 Ninja 代替 Make ./linux/test.sh --no-build # 不重新构建,直接跑 ./linux/test.sh dev_registry # 只跑指定测试 ``` > **如果 .sh 没有执行权限**(zip 包解压后常见): > ```bash > bash linux/setup.sh # setup 会自动给所有 .sh 加 +x > # 之后就可以 ./linux/build.sh > ``` ### Windows (MSYS2) ```cmd :: 1. 安装依赖(自动检测 MSYS2 / 独立 MinGW / VS2022) windows\setup.bat :: 2. 构建 windows\build.bat :: 3. 运行 windows\run.bat :: 4. 测试 windows\test.bat ``` #### Windows 常用参数 ```cmd windows\build.bat --tests windows\build.bat --product earphone_demo windows\build.bat --platform stm32_wearable windows\build.bat --clean windows\build.bat --generator "Visual Studio 17 2022" windows\test.bat --no-build windows\test.bat dev_registry ``` ### 脚本特性 所有脚本支持**从任意目录调用**(自动推断工程根目录): ```bash cd /tmp /home/user/rtos_template/linux/build.sh # 工作 /home/user/rtos_template/linux/run.sh # 工作 ``` ## 目录结构 ``` rtos_template/ ├── application/ # 【应用层】产品定制 │ └── products/ │ ├── watchface_demo/ # 手表演示(含完整启动序列示例) │ ├── earphone_demo/ # 耳机演示(占位) │ └── glasses_demo/ # 眼镜演示(占位) │ ├── app_framework/ # 【应用框架层】子仓库,跨产品复用 │ ├── modules/ # 业务模组 │ └── middleware/ │ ├── libraries/ # os抽象层 / ring_buffer / lvgl_task │ └── service/ # ai_backend │ ├── drv_framework/ # 【驱动框架层】子仓库,跨平台复用 │ ├── dev_registry/ # section-based 设备注册(A 移植) │ │ └── ops/ # 各设备类 ops 契约 │ ├── drivers/ # 通用外设驱动 │ │ ├── device/ # mpu6050 / fake_gsensor │ │ ├── peripheral/ # led_driver / uart_line_buffer │ │ └── display/lvgl_port/# LVGL 多版本适配层(v8/v9) │ └── services/ # driver_bus / gsensor_svc │ ├── vendor/ # 【供应商层级】芯片相关 │ ├── sdk/ # 芯片原厂 SDK(不改源码) │ ├── bsp/ # 板级支持包 │ │ ├── pc_simulator/ # PC 仿真板 │ │ └── stm32_wearable/ # STM32 板(scaffold) │ ├── hal/ # HAL 抽象层(接口 + 防御性分发) │ └── third_party/ # FreeRTOS / LVGL(多版本并列) │ ├── tests/ # 【工程级测试】 │ ├── unit/ # T1 框架内核测试(A 移植) │ ├── common/ # 共享 mock 工具 │ └── integration/ # T4 集成测试 │ ├── docs/ # 【工程文档】 │ ├── architecture_rules.md │ ├── coding_standard_full.md │ ├── ai_self_check_prompt.md │ └── porting_guide.md │ ├── tools/ # 【跨子仓库共享工具】 │ └── scripts/ # build.py / flash.py / kconfig_gen.py │ ├── cmake/ # 【构建辅助】 │ ├── component.cmake # register_component + 层间隔离校验 │ ├── platform.cmake # 平台检测 │ ├── kconfig.cmake # Kconfig 集成 │ └── toolchain-arm-none-eabi.cmake │ ├── linux/ windows/ # 【平台脚本】 │ ├── .cursorrules # AI 协作红线规则 ├── CLAUDE.md # Claude Code 工作指南 ├── CMakeLists.txt # 顶层 CMake ├── Kconfig # 顶层 Kconfig ├── Makefile # 便捷入口 └── README.md # 本文件 ``` ## 架构层次与依赖方向 ``` application → app_framework → drv_framework → vendor(hal/bsp/sdk) (产品定制) (业务复用) (驱动复用) (芯片相关) ``` 依赖方向严格向下,CMake `register_component()` 在编译期用 `FATAL_ERROR` 阻止违规。 ## 启动序列规范 产品 `main.c` 必须按以下 5 阶段顺序启动(参考 `application/products/watchface_demo/main.c`): 1. `board_init()` — 注册所有 HAL ops(vendor/bsp) 2. `os_register(posix/freertos)` — OS 抽象层注册 3. `dev_framework_init()` — 遍历 .devices section,调用每个 dev 的 init 4. `ai_backend_get_info()` — 查询 AI 后端能力 5. 业务循环 — 产品专属逻辑 ## 验证可行性 执行以下命令验证模板闭环: ```bash # 构建(应该成功) make build # 运行(应该看到 5 阶段启动日志) make run # 测试(应该看到 4 个测试 PASS) make test ``` 预期输出: ``` [main] Phase 1: board_init... [main] Phase 2: os_register... [main] Phase 3: dev_framework_init... [main] Phase 4: ai_backend_get_info... [main] AI backend: Stub 0.1.0-skeleton (max_in=4, max_out=4) [main] Phase 5: business demo... [main] driver_bus count: 0 [main] gsensor not available (ret=-6), expected on PC sim without device injection [main] os_mutex test: lock OK [main] All phases done. Demo finished. ``` ## 文档 - [架构规则](docs/architecture_rules.md) — 层次矩阵 + HAL 解耦模型 - [编码规范](docs/coding_standard_full.md) — 827 行嵌入式 C 规范 - [AI 自检模板](docs/ai_self_check_prompt.md) — 5 套 AI 协作自检 prompt - [移植指南](docs/porting_guide.md) — 新芯片/新板如何接入