2.7 KiB
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:
- restore the standalone STM32F0 TIM14 GPT interrupt service;
- 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
BaseSequentialStreamVMTs to the current layout, including the requiredinstance_offsetfield. - Preserve the legacy hard-FPU build's
-fsingle-precision-constantbehavior explicitly. ChibiOS 21.11.x no longer adds it automatically; omitting it promotes unsuffixed sweep constants to software double precision and causes a measurable self-test sweep regression. - Split the F303 HardFault entry into an assembly-only MSP/PSP veneer and an ordinary non-returning C reporter, while reserving a 1 KiB exception stack.
Build
With an Arm GNU toolchain on PATH:
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.