A developer describes an experiment to run ST's STM32MP2 applications processor as a simple, fast microcontroller, without Linux or vendor SDKs.
The author has long paired STM32 microcontrollers with FPGAs, but the STM32H7's FMC bus needs 30 or more pins that are spread across the package, which makes it hard to route on low-cost boards. The STM32MP2 seemed like a possible alternative. It is an applications processor with dual Cortex-A35 cores, auxiliary M33 and M0+ cores, and a 5 Gbps SERDES that can run PCIe Gen1/2 x1 or USB 3. It also keeps many familiar STM32 peripherals, including the AES-GCM and TRNG blocks the author already had drivers for.
The project aimed to make the chip behave like a large microcontroller. Its goals were to build with upstream aarch64 and Arm GNU toolchains without vendor SDKs, keep all code and data in on-die SRAM without external DDR, avoid TrustZone, U-Boot and other extras, and get PCIe working with an FPGA. The author used an STM32MP257F-EV1 development board and first ran a blinky on the Cortex-M33 over JTAG. The code was then made to boot from flash using a custom first-stage image.
Starting the Cortex-A35 required a specific sequence of power-state and reset register steps. Its image also has to live in flash, because the boot ROM runs again even when the M33 is already active. The author additionally reported finding a silicon bug with security impacts, which had to stay private until ST reviewed it and published an advisory.
Source: serd.es







