Sobre el proyecto

Este repositorio es un proyecto paraguas (Umbrella) de pila completa para control de vuelo que incorpora 9 subrepositorios independientes mediante git submodule, gestionando de forma centralizada la arquitectura global, la documentación de ingeniería y los métodos de integración. Los subrepositorios evolucionan de forma independiente; el proyecto paraguas solo registra instantáneas de versiones y documentación. La composición del proyecto incluye: - flyctrl/: firmware de control de vuelo (Rust no_std, con EKF, PID, modos de vuelo, FDIR, enlace ascendente MAVLink) - fly-simulater/: plataforma de simulación física (fly-sim-core, con plant, controller, sensor, wind, SIL) - mcu_simulater/: emulador a nivel de instrucciones de MCU (Unicorn STM32F407 + periféricos virtuales I2C/UART/USB) - joc-base/: núcleo RTOS + capa de placa (STM32F407 minimal, base del ELF de firmware, rama dev) - joc-rtos-app-sdk/: SDK de aplicaciones (Rust no_std, registro/dispositivos/tareas, búfer de registro de 180B) - mavlink-core/: códec MAVLink (tramas/enumeraciones/COMMAND_LONG) - physics/: motor físico phy-sdk (dependencia opcional de fly-sim-core, física real en SIL) - groundctrl/: estación terrestre (Rust) - joc-drvtest-app/: aplicación de prueba de controladores (depuración de controladores de periféricos) Inicio rápido: 1. Inicializar submódulos: `git submodule update --init --recursive` 2. Compilar firmware: `./scripts/build.sh real-sensors` o `./scripts/build.sh hil`, los artefactos se generan en /tmp 3. Regresión en un clic: `./scripts/verify.sh` 4. Integración en un clic: `./scripts/integrate.sh` (todo) o pasos específicos como `unlock`, `firmware`, etc. Las URL de los submódulos son todas en formato SSH; la descarga entre máquinas requiere permisos de clave SSH. Si se produce un error de file transport, se puede usar `git -c protocol.file.allow=always submodule update --init --recursive`. Convención de rutas de artefactos de integración: se priorizan las variables de entorno (como JOC_BASE_ELF, JOC_APP_FLYCTRL, etc.), seguidas del diseño estándar del proyecto paraguas (como joc-base/build_hil/stm32f407_minimal.elf), y por último las rutas históricas de respaldo. Flujo en una máquina nueva: inicializar submódulos → compilar firmware → ejecutar toda la integración. Las instantáneas de versiones están fijadas por el proyecto paraguas; los commits de los submódulos se consultan mediante `git submodule status`. Tras avanzar, es necesario registrar la nueva instantánea en el proyecto paraguas para garantizar la reproducibilidad. Navegación de documentación: - docs/architecture.md: arquitectura global (pila de simulación de tres capas/flujo de datos/responsabilidades) - docs/engineering.md: explicación detallada de las funciones de cada proyecto - docs/integration.md: métodos de integración (periféricos virtuales/SIL/HIL/inyección de fallos/vuelo desbloqueado) - docs/postmortem-rtos-pendsv-fallback.md: retrospectiva de la corrección del defecto de reserva de cola vacía de PendSV - scripts/integrate.sh: script de integración en un clic - scripts/verify.sh: script de regresión en un clic