프로젝트 소개
이 저장소는 플라이컨트롤 풀스택 다중 저장소의 셸 프로젝트(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: 전체 아키텍처 (3계층 시뮬레이션 스택/데이터 흐름/책임)
- docs/engineering.md: 각 프로젝트 기능 상세
- docs/integration.md: 연동 방식 (가상 주변장치/SIL/HIL/장애 주입/언락 비행)
- docs/postmortem-rtos-pendsv-fallback.md: PendSV 빈 큐 폴백 결함 수정 회고
- scripts/integrate.sh: 원클릭 연동 스크립트
- scripts/verify.sh: 원클릭 회귀 스크립트
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.