Hands-on Embedded: Bare Metal Edition [2021 class archive]

Hands-on Embedded: Bare Metal Edition is a two-day training course with programming examples taught by Michael Caisse. It is offered onsite at the Gaylord Rockies from 09:00 to 17:00 on Saturday, October 23rd and and Sunday, October 24th, 2021 (immediately prior to the conference). Lunch is included.

Course Description

Ever wonder how to start an embedded project from scratch? Just you, some silicon, and your handy tools bending bits to your will. No pesky operating system trying to kill you with neurotoxins, promising cake, or compromising your e-wallet. But where do you begin? What tools should you use? How would you debug this type of thing?

In this hands-on class we will “bring up” an ARM based processor from scratch as we build our robot kits into something more than a pile of parts but less than the Jetson’s Rosie housekeeper. We will learn how to use datasheets to layout memory and instruct the linker where the bits should be placed. We will write start-up code and coerce the microprocessor to begin executing our main routine. We will learn about special function registers and control a variety of on-chip peripherals. And we will learn how to use Modern C++ to tame the complexity of our little mobile friend.


Participants should be familiar with C++.

Course Topics

A few of the things we will cover:

  • Toolchains and tools of the trade
  • Buildtools
  • Linker scripts 101
  • Life before main – start-up code
  • Using the datasheet to make things go
  • Interrupt Controllers and Interrupt Service Routines
  • Debugging on target
  • Special Function Registers
  • Using Modern C++ in embedded systems
  • Code organization for testing
  • Useful libraries and patterns

This is a highly interactive and hands-on course. Participants will need to bring a laptop and USB Micro-B cable (for example a USB Type-A to Micro-B cable or some combination based on your laptop’s port configuration). Supported operating systems include Windows, Linux, and macOS. Required versions will be specified October 1st.

Note: This course has an additional material fee for the robot kit. The kit includes: STM32 based development board, two motors, wheels, h-bridge, breadboard, chassis, battery holder, batteries, wires, and sensors.

Register Here

Course Instructor

Michael Caisse started using C++ with embedded systems over 30 years ago. He continues to be passionate about combining his degree in Electrical Engineering with elegant software solutions and is always excited to share his discoveries with others. Michael works for Ciere where he provides software consulting and contracting, C++ training and mentoring, and electronic design.
When he isn’t fighting with compilers or robots, he enjoys fencing with a sabre.