You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tinySA/docs/CHIBIOS_21_11_5_PORT.md

64 lines
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:
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, including
the required `instance_offset` field.
- Preserve the legacy hard-FPU build's `-fsingle-precision-constant` behavior
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`:
```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.

Powered by TurnKey Linux.