这个项目能做什么
该仓库是一个飞控全栈多仓库的壳工程(Umbrella),通过 git submodule 纳入 9 个独立子仓库,集中管理整体架构、工程说明和联调方式。子仓库独立演进,壳工程仅记录版本快照与文档。
工程组成包括:
- flyctrl/:飞控固件(Rust no_std,含 EKF、PID、飞行模式、FDIR、MAVLink 上行)
- fly-simulater/:物理仿真平台(fly-sim-core,含 plant、controller、sensor、wind、SIL)
- mcu_simulater/:MCU 指令级仿真器(Unicorn STM32F407 + 虚拟外设 I2C/UART/USB)
- joc-base/:RTOS 内核 + 板级(STM32F407 minimal,固件 ELF 底座,dev 分支)
- joc-rtos-app-sdk/:应用 SDK(Rust no_std,日志/设备/任务,180B 日志缓冲)
- mavlink-core/:MAVLink 编解码(帧/枚举/COMMAND_LONG)
- physics/:物理引擎 phy-sdk(fly-sim-core 可选依赖,SIL 真实物理)
- groundctrl/:地面站(Rust)
- joc-drvtest-app/:驱动测试应用(外设驱动调试)
快速开始:
1. 初始化子模块:`git submodule update --init --recursive`
2. 构建固件:`./scripts/build.sh real-sensors` 或 `./scripts/build.sh hil`,产物在 /tmp 下
3. 一键回归:`./scripts/verify.sh`
4. 一键联调:`./scripts/integrate.sh`(全部)或指定步骤如 `unlock`、`firmware` 等
子模块 URL 均为 SSH 形式,跨机器拉取需 SSH key 权限。若遇 file transport 错误,可用 `git -c protocol.file.allow=always submodule update --init --recursive`。
联调产物路径约定:优先使用环境变量(如 JOC_BASE_ELF、JOC_APP_FLYCTRL 等),其次为壳工程规范布局(如 joc-base/build_hil/stm32f407_minimal.elf),最后兜底历史路径。新机器流程:初始化子模块 → 构建固件 → 运行全部联调。
版本快照由壳工程锁定,子模块 commit 通过 `git submodule status` 查看,推进后需在壳工程中记录新快照,确保可复现。
文档导航:
- docs/architecture.md:整体架构(三层仿真栈/数据流/职责)
- docs/engineering.md:各工程功能详解
- docs/integration.md:联调方式(虚拟外设/SIL/HIL/故障注入/解锁飞行)
- docs/postmortem-rtos-pendsv-fallback.md:PendSV 空队列回退缺陷修复复盘
- scripts/integrate.sh:一键联调脚本
- scripts/verify.sh:一键回归脚本
评论
0 评分人数达到10人后显示
登录后参与讨论。