Home

Awesome

embedded_zig

A "minimal" ARM cortex-M firmware in Zig running on a STM32F103. It blinks.

building

Get GNU Arm Embedded Toolchain and Zig in PATH and type:

make

running on a bluepill

Run OpenOCD on a terminal:

openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg

Open your favorite GDB:

arm-none-eabi-gdb firmware.elf -ex 'target extended-remote :3333'
load
r

Bonus: you can type make inside gdb and load it again.

issues

If you have any linking issues uncomment the line below (in the Makefile) to use GNU ld:

#    zig build-exe ${BUILD_FLAGS} $(OBJS:%=--object %) --name $@.elf --linker-script ${LINKER_SCRIPT}
   arm-none-eabi-ld ${OBJS} -o $@.elf -T ${LINKER_SCRIPT} -Map $@.map --gc-sections

raq (rarely asked questions)

a) Shouldn't the Makefile...

A: lalalala

b) How do I flash this?

A: see running on a bluepill

c) Why didn't you use @cImport()?

A: yes