这个项目能做什么

该仓库是一个飞控全栈多仓库的壳工程(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:一键回归脚本