STM32F401 (NUCLEO-F401RE)
The STM32F401RE (Cortex-M4F, 512 KB flash, 96 KB SRAM) is a Tier 1 LabWired target. The current model covers the minimal smoke surface — RCC, GPIO, USART2, SysTick — and does not yet model I²C, SPI, DMA, or timers.
I²C is being onboarded on F407 first — F407 hardware is on the bench, F401 isn't. Once the F407 lane is silicon-verified against the hardware oracle, the I²C1 yaml block ports to F401 as a zero-firmware-change delta. See
docs/boards/stm32f407.md.
For build/run instructions, see
examples/nucleo-f401re/README.md.
Status at a glance
Live status: the table below is a hand-maintained snapshot. For the authoritative, auto-generated view see the chip conformance scoreboard (level · modelled peripherals · register-match vs silicon) and the tier-1 matrix (per-peripheral pass/fail).
| Aspect | Status |
|---|---|
| Chip yaml | configs/chips/stm32f401.yaml |
| System yaml | configs/systems/nucleo-f401re.yaml |
| Reference firmware | crates/firmware-f401-demo/ |
| Validation | UART2 smoke pass — see examples/nucleo-f401re/VALIDATION.md |
| Tier | smoke-validated (UART2 only) |
| Hardware parity | Not byte-parity hardware-validated |
Peripherals (from chip yaml)
| Peripheral | Base | Status | Notes |
|---|---|---|---|
| Cortex-M4F | — | ✅ modeled | Thumb-2 + VFPv4 single-precision |
| SysTick | 0xE000E010 | ✅ modeled | System-exception (15) path |
| RCC | 0x40023800 | ✅ modeled | stm32f4 profile |
| GPIOA | 0x40020000 | ✅ modeled | stm32v2 MODER/AFR layout |
| GPIOB | 0x40020400 | ✅ modeled | Used for board LEDs |
| GPIOC | 0x40020800 | ✅ modeled | Used for user button (PC13) |
| USART2 | 0x40004400 | ✅ modeled | Virtual COM port, IRQ 38 — byte-deterministic in smoke |
Not yet modeled (commonly expected on F401)
The chip yaml currently does not declare any of the following, even though they are present on real F401RE silicon:
- I²C1/2/3 — including the bus used by most external sensors. The
external_devicesattach pattern documented inexamples/demo-blinky/cannot be used on F401 until at least one I²C peripheral is added toconfigs/chips/stm32f401.yaml. Onboarding-in-flight on F407 — seedocs/boards/stm32f407.md. - SPI1/2/3/4/5
- DMA1/DMA2 — required for any HAL-style DMA-backed transfer
- TIM1, TIM2–TIM5, TIM9–TIM11
- ADC1
- USB-OTG-FS, SDIO, I²S
- PWR, FLASH controller registers
- USART1, USART6
Firmware that touches any of these registers will hit
MemoryAccessViolation or stall in a polling loop. See
docs/getting_started_firmware.md for
the diagnosis pattern.
Roadmap notes
F401 is a Tier 1 target (see
docs/coverage_scoreboard.md). Closing the gap
to a full Tier 1 model (DMA, timers, I²C, SPI) remains tracked work. The
hardware-validation playbook to follow once peripherals are added is
docs/boards/nucleo-l476rg.md — six survival tests
asserting byte-for-byte UART parity with real silicon across UART, SPI,
I²C, ADC, DMA, demo paths.