Cortex-M0+ Bringup // Chapter 1 - Introduction

dim. 24 septembre 2017 by Mick Cherry


This article is the first of a (long) serie that explains in details how to start a small MCU (Cortex-M0+ STM32L053) from scratch.

All the basic aspects of a small mcu bringup will (hopefully) be covered: toolchain, linker script, swd, debugging, uart, ...

The present article is here to list and source the hardware tools used for this serie (see below).

Here is the full posts list for this serie:

Chapter - Introduction

Chapter - A simple program to run (the easy part)

Chapter - A toolchain (cross-compilation)

Chapter - Before the main (Reset Handler)

Chapter - Headers & Startup Files (what-are-we-missing-this-time?)

Chapter - What goes where? (Linker script)

Chapter - A properly cross-compiled binary (handcrafted Makefile)

Chapter - A Cortex-M0+ MCU (the target mcu)

Chapter - A flasher (SWD)

Chapter - A flasher software (Memory Map)

Chapter - A debugger (gdb)

Chapter - It's alive! (finally)

Chapter - Fiat Lux: Led blinking (GPIO set)

Chapter - Button: Easy Polling (GPIO get)

Chapter - Button: Easy Interrupting (GPIO IRQ)

Chapter - In the beginning was the word (UART debug)

Chapter - Tick-tock (Systick)

Chapter - Voltage measure (ADC made easy)

Hardware Store

The goal of this long serie of posts is to explain in detail how to start (boot) a STM32L053 mcu and perform some basic board bringup tasks such as blinking a led (a long time classic - if not mandatory - feature when booting a board for the first time), printing debug on a serial line, getting a button interruption.

Here is the hardware list used for the following posts. We need 5 hardware parts to complete the goal: a computer (to cross-compile), a target mcu or board, a flasher, a power supply, a usb ttl serial cable.


The target MCU we are using is a STM32L053 embedded on a NUCLEO-L053R8 evaluation board.

The eval board user manual is available here.

The STM32L053 datasheet is available here.

Nucleo evaluation board with the ST-LINK/V2-1 attached on top


The flasher is a hardare part that is used to transfer the compiled binary from your computer to the target mcu on the eval board. We use a ST-LINK/V2-1 which is a (detachable) part of the nucleo evaluation board.

Power supply

Some power supply is required to power the nucleo eval board. We use 3 alkaline cells (AAA) to provide 4.5V of power supply to the board.

Computer & internet

We obviously need a computer to compile and flash the software to the target mcu.

USB/UART cable

It is often useful to be able to print some messages from the target mcu (debug, info, ...) on a screen, usually your computer screen. For this, we need a last hardware part which is a cable that converts USB signal/protocols to UART.

USB/UART ftdi cable

Basic embedded software setup

All these hardware parts will be tied together in a classic embedded software development setup, which can be seen like this:

Embedded Dev Basic Setup


In the next post, we will write an exceedingly small and simple program which will be the the first one we flash in the target mcu.