# ChibiOS 21.11.5 port This branch ports both firmware targets from the historical tinySA ChibiOS fork to the official ChibiOS `ver21.11.5` release. The draft currently pins the public integration commit `db35f6df137058c612dc13e4488ac923219d881a` from `PhysicistJohn/chibios`. It contains two focused commits on top of the release tag: 1. restore the standalone STM32F0 TIM14 GPT interrupt service; 2. preserve active USBv1 endpoint-zero PMA buffers when configuration endpoints are rebuilt. Those fixes are also proposed independently to current ChibiOS in PRs #84 and #85 and to `stable-21.11.x` in draft PRs #86 and #87. The temporary fork URL will be replaced with the canonical ChibiOS URL and merged stable commit before this port is marked ready. ## Port changes - Adopt the RT7/HAL9 configuration markers, OS library settings, build rules, Cortex-M port paths, and license include required by ChibiOS 21.11.5. - Raise kernel-aware F303 interrupt priorities to respect the RT7 fast-interrupt reservation. - Migrate board GPIO initialization, DMA allocation, ADC group definitions, PAL line events, USB serial hooks, endpoint configuration, PWM configuration, queue reset calls, time conversions, and thread diagnostics. - Update the project-local F303 ADC LLD while retaining its tinySA-specific behavior. - Convert custom `BaseSequentialStream` VMTs to the current layout. ## Build With an Arm GNU toolchain on `PATH`: ```sh git submodule update --init --recursive make TARGET=F303 -j8 make clean make TARGET=F072 -j8 ``` ## Qualification boundary The predecessor RC5 image using the same application port and equivalent ChibiOS fixes was exercised on a tinySA Ultra+ ZS407. Its exact DFU write and readback, USB runtime, warm reset retention, cold boot, and all fourteen built-in self-tests passed. A fresh official-versus-candidate comparison had one first-cold measured-level threshold failure in case 2; three repeats, including a second cold run, passed. Physical forced-fault injection was not performed. The clean public branch has different commit identity and embedded version, so it is a new binary. It must be rebuilt and receive a final physical smoke and self-test run before this draft is promoted to ready.