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

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:

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.