9be0623d4c
C99 says that strncmp has UB for either string being NULL, so the current behavior is technically correct, but it's an easy fix to handle this case correctly. 7.1.4: "unless explicitly stated otherwise in the detailed description... if an argument to a function has ...null pointer.. the behavior is undefined". 7.21.1: "Unless explicitly stated otherwise in the description of a particular function in this subclause, pointer arguments on such a call shall still have valid values, as described in 7.1.4". Also make the same change for the minimal version in bare-arm/lib.c. This work was funded through GitHub Sponsors. Signed-off-by: Jim Mussared <jim.mussared@gmail.com> |
||
---|---|---|
.. | ||
lib.c | ||
main.c | ||
Makefile | ||
mpconfigport.h | ||
mphalport.h | ||
README.md | ||
stm32f405.ld | ||
system.c |
The bare-arm port
This port is intended to be the bare-minimum amount of code and configuration required to get MicroPython compiling and running on a bare-metal ARM-based target. No external dependencies or libraries are needed for this build and it shows exactly what hardware and system functionality MicroPython needs to run.
To build, simply run make
in this directory. The output will be
build/firmware.elf
(and also corresponding .bin
and .dfu
files). This
firmware can run on an STM32F405-based board (eg a PYBv1.x) and make deploy
will program it to such an MCU when put in USB DFU mode. The output is a UART
at 115200 baud, with TX on PA0.
There are some simple demonstration code strings (see main.c
) which are
compiled and executed when the firmware starts. They produce output on the
system's stdout.
The size of the firmware (the machine code that is programmed to the microcontroller's flash/ROM) is currently around 56500 bytes.