Power first
Bring-up means switching on a brand-new board for the first time. Go in order: power, then clocks, then code. Power first, because nothing works on a bad supply. Here a regulator turns 5 V into the 3.3 V the chips need.
A multimeter measures the voltage between its two probes. Black goes on ground, red on the 3.3 V rail, the wire that feeds every chip. It reads 3.29 V, inside the regulator's limits of 3.235 V to 3.365 V, so power is good.
Then clocks
An oscilloscope draws voltage against time. Its probe on the clock line shows a steady square wave. Each cycle spans just over four squares of 20 ns, about 83 ns, so the clock runs at 12 MHz.
The scope redraws many times a second, and each sweep would start at a random point, smearing the wave. A trigger waits until the voltage rises past a set level, then starts the sweep, so every sweep lines up and the wave stands still.
Then code
With power and clock good, plug in a debugger. It talks to the chip through SWD, two wires called SWDIO and SWCLK, or through JTAG's four wires, and writes your program into the chip's flash memory.
The debugger can halt the CPU, freezing it between instructions. Then it reads the registers, the CPU's own tiny stores. The program counter, PC, holds the address of the next instruction. Single-step one short 16-bit instruction and PC moves on 2 bytes.
Buses and faults
The microcontroller talks to a temperature sensor over I2C: one clock wire, SCL, and one data wire, SDA. A logic analyser clips onto both and records them as streams of 0s and 1s, many samples per bit.
Reading bits by eye is slow, so the analyser decodes them. It finds the start, the 7-bit address 0x48, and each byte with its acknowledge bit, ACK. The sensor replies 0x19 0x00, which means 25.0 °C.
JTAG can also do boundary scan (IEEE 1149.1), over its four wires: SWD cannot. Every signal pin gets a tiny test cell. Bits shift through this chain to drive and read each pin without running code, finding a pin that is not soldered.
When a board fails, follow a routine. Make the fault happen, then check one thing at a time in the same order: power, clock, code, bus. Change only one thing before testing again, and write every reading down.
What the tool shows
;; step 1/10 · power-first ;; about: 3.3 V regulator Bring-up order 1 power rails at the right voltage? 2 clocks is the oscillator running? 3 code can the debugger talk to the CPU? Before power-on, a resistance check between 3V3 and GND catches a short.
Power, then clocks, then code: each stage needs the one before it. A CPU with a bad supply or no clock cannot run code, and a debugger cannot talk to it. The LM1117-3.3 regulator's datasheet allows 3.235 V to 3.365 V on its output from 0 °C to 125 °C at loads up to 800 mA (3.267 V to 3.333 V at 25 °C).