This blog series will start with that one philosophical question that everyone hates: What is a microcontroller?
You see, everyone knows what a human is, in some sense. If I point towards a human and I scream human !, everyone will look at me like I've escaped a mad house, because everyone knows what a human is. In the same way, if you'd be surprised when seeing a microcontroller near an engineer:
- Option 1: The engineer will be proud that we knows what a microcontroller is and will start the first conversation he had that year
- Option 2 (most likely): The engineer will look down on you with shame because you did not know what god damn a microcontroller is.
There is no clear definition on what a microcontroller is. You can't just say that it's a CPU, packed with some ram and peripherals and call it a day. No, you need to actually understand the anatomy of a microcontroller, how it works and why it is needed. That's the microcontroller architecture for you. And the best way to get a feeling of that is the engineering way.

A bunch of them. Literally.
Let's start in the top-down manner. We have a ton of microcontrollers nowadays. starting from well-known Raspberry Pi Pico, Arduino Uno, STMs, ESPs, and ending with some obscure brands that seem to have literally no documentation. And this is beautiful since we have diversity and we can study the attempts of humanity to create the perfect microcontroller. And this is not nice, because almost each MCU is different in its way.
Each microcontroller has a Processing Unit (and we will be focusing on this most of the time). And each Processing Unit is built on specific cores templates. Espressif has Xtensa cores or/and RISC5 cores, Raspberry Pis and STMs have ARM Cortex M series chips. And for each types of cores there exists a specific instruction set. Have two devices with the same vendor but different instruction sets, you entire codebase has to be updated. TLDR; the ocean of microcontrollers is huge and changing and people are trying their best to unify it. More on that at the end of this blog.

RP2040, a Cortex M0 MPU
Enter the second most accessible, cheap, over-cloned MPU of all times: Raspberry Pi Pico (the first one is Arduino UNO, but the internet is full of Arduinos). What makes it so special? Nothing! It's just a piece of PCB with two Cortex M0 cores, Microcontroller Magic and some electrical engineering stuff that costs less than your school bus ticket. But it is extremly, extremly powerful.
This bad boy speaks ARMv6, has 26 GPIO ports and a whopping 2MB of onboard flash memory. That's 53 times more than Apollo11's memory, the first device to land on the Moon. (Meanwhile we are struggling to blink a LED in Rust).
Alright, there is a lot of information. GPIO, ARMv6, memory, PCB, Cortex M0. What's this all about? Now we start the actual dive into Microprocessor Architecture.
An overview
A microcontroller, including Raspberry Pi Pico has a Processing Unit. This is where all the Microcontroller Magic happens. Imagine a cat: it has its own Processing Unit: her nervous system. And she knows some instructions: eat, jump, sit, sleep, leave a surprise in the owners boots. A cat is quite hard, but possbile to train to act an instruction based on an input. In this way, a MCU is just like a cat but easier to train. Just feed it some bytes via peripherals and it will execute an instruction.
Now, just like our cat has eyes, skin, nose and ears through which it can interact with the