WHY2025

Bare metal programming from the ground up
2025-08-10 , Cassiopeia
Language: English

So you have a new microcontroller, how do you get started programming it?

This is going to be the talk I wished already existed when I first got into microcontroller programming.


Getting started with a new microcontroller can be daunting. They do come with datasheets, but these are often hundreds if not thousands of pages long and assume you already know the basics. So that's what I will be explaining: how to get started programming these thing, from Reset_Handler to blinking LED.

This talk will cover the following things:

  • How to read datasheets
  • How to write a simple linker script
  • How to do basic initialization of a chip, enough to get a LED blinking
  • How to get the binary you created onto a microcontroller.

I will assume you have some programming experience, but experience with embedded software is not required.

See also: Talk slides

I've been interested in electronics and programming as a child. When I later realized I could combine the two in embedded software development, a new world opened up to me.

I've tried many different things: Arduino C, MicroPython, and a bit of embedded Rust. Eventually I ended up writing my own Go compiler for embedded systems: TinyGo.

I like to skip vendor toolchains and BSPs and really understand how bare metal programming works. The chip is all yours, so you can do whatever you feel like - even if this was never the intended purpose.