Full transcript
Intro
0:12If I had to start learning embedded system from zero in 2026, I would not start by trying to
0:18learn everything at once. I would not start with Linux, drivers, RTOS, IoT, embedded security,
0:26PCB design, FPGA, Yocto and every communication protocol at the same time. And to be honest,
Why beginners get lost
0:33that is exactly how many beginners get lost. Embedded system is a huge field.
0:38You can work with microcontrollers, embedded Linux devices, IoT getaways, automotive systems,
0:46industrial systems, medical devices, security, and many other areas. But in my opinion,
0:53before choosing a specific path, you need to build a strong foundation. Hi, I'm Taison and welcome
1:00to the channel. I'm an embedded software engineer with more than 3 years of experience. I first work
1:05more in embedded security and now I'm working more with IoT systems here in Madrid. On this channel,
1:12I share practical content about embedded systems, IoT, Linux, programming tools, and career tips
1:18from my own experience working in the field. So, if that sounds useful to you, consider subscribing
1:24to the channel. In this video, I'll walk you through the road map I would personally follow
1:29if I had to start learning embedded system from zero today. And the goal is simple.
1:33Build the foundation first, then choose your path. One of the reasons I wanted to create this video
My first embedded project experience
1:38is because of something that happened early in my career. Back in 2021, I had the opportunity to do
1:44an internship at a local company here in Spain as an embedded software engineer. I was assigned to
1:49work on a data acquisition project using an NXP board. The board was used to read the electrical
1:56signal, things like current and voltage, and then process that data. I remember being given
2:02the board, the data sheet, the reference manual and basically having to start understanding how
2:07everything worked. At that time, I did not have much experience with that specific NXP board. But
2:12I had already worked a bit with STM32 boards and that helped me a lot. Not because STM32 and the
2:19NXP are exactly the same, but because I already had some understanding of microcontrollers,
2:25peripherals, registers, datasheets, and how to approach documentation. I still had to read a lot,
2:32test things, debug, implement code, and go through the documentation step by step. But
2:38having that foundation made the transaction much easier, and that is the point of this video.
2:45This road map is not about memorizing one specific board or one specific tool. It is about building
The roadmap overview
2:51skills that transfer from one platform to another. Because in the industry you may work with STM32,
2:58NXP, Nordic, TI, microchip or a custom board. The specific platform can change but
3:05the fundamentals I would allow you to adapt. The road map I would follow has six main pillars. The
3:11first one is the most important core fundamentals then you have board selection and peripherals then
3:18basic electronics then memory then professional tools and finally once the foundation is there
3:26you choose your path that path can be firmware embedded Linux IoT embedded security FPGA or
3:36another specialized area but the main message is this do not start by trying to learn everything.
3:42Start by building the foundation that will make everything else easier later. The first pillar is
Pillar 1: Core fundamentals
3:48core fundamentals. For me, this is the must have pillar. Regardless of the area you choose later,
3:54firmware, embedded Linux, IoT, security, FPGA or anything else, you need this foundation. The first
4:02skill here is C programming. C is still extremely important in embedded systems. A lot of production
4:08level embedded code is written in C, especially when you are working close to the hardware. You
4:14don't need to become a C language expert from day one, but you need to be comfortable with
4:19the parts of C that are used all the time in embedded development. That means functions,
4:25arrays, pointers, structures, enams, hop file, source files and data types like uint8_t,
4:33uint16_t and uint32_t. You also need to understand bit manipulation. In embedded systems,
4:39you will often need to set a bit, clear a bit, toggle a bit, or check if a bit is set. This becomes very
4:46important when you are working with registers. For example, if a peripheral register controls
4:51a GPIO pin, you may need to set one specific bit to configure that pin as an output. So,
4:57bitwise operations are not just academic, they are practical. Then there are keywords like volatile,
5:04extern, const and static. You don't need to understand every detail immediately,
5:09but you should know why they exist and where they are used. For example, volatile is very important
5:15when a value can change outside the normal flow of the program like a hardware register or a variable
5:21changed inside an interrupt. The second part of this pillar is the CPU mental model. You don't
5:27need to master assembly at the beginning, but you should understand at a high level how a CPU works.
5:34The CPU fetches instructions from memory, decodes them, executes them, and interacts with register,
5:41RAM, flash, and peripherals. This mental model helps you understand why embedded programming is
5:47different from normal application programming. The third part is debugging. You need to learn
5:52how to debug even simple programs like set break points, step through the code, inspect variables,
6:00check memory, look at register, and use serial logs. At the beginning, this may feel slow,
6:07but it is one of the most valuable skills you can build. In real work, debugging is a huge part of
6:13embedded development. Sometimes the code compiles, but the board does not behave as expected.
6:19Sometimes the bug is a wrong pointer. Sometimes it is a wrong data type. Sometimes it is a stack
6:26problem, timing issue or memory corruption. You don't need to go extremely deep from day one, but
6:32you need to start building that debugging mindset. And the last part of this pillar is documentation.
6:38Learn how to read data sheets, reference manuals, user manuals, schematics, application notes,
6:44and the data. This is one of the biggest differences between just following tutorials
6:49and preparing for real work. In the industry, someone may give you a board and documentation
6:54and you need to figure things out. You need to understand how to translate a register description
6:59from a reference manual into C code. This is where everything connects C pointers, bit operations,
7:05memory addresses, and hardware documentation. For me, this is the real foundation. The second pillar
Pillar 2: Board selection and peripherals
7:12is board selection and peripherals. At some point you need a real development board. You can choose
7:17different platforms like STDM32, Nordic, NXP, Microchip, TI, and many others. But if I had
7:25to recommend one starting point, I would choose an STM32 Nucleo or Discovery board. And I want
7:31to be clear here, there is nothing wrong with Arduino. Arduino is great for hobby projects,
7:36prototypes, and learning the very first concept of electronics and programming. But if your goal
7:41is to get closer to a professional embedded workflow, I would personally choose something
7:46like STM32. The reason is that with STM32, you get exposed to datasheets, reference manuals,
7:54board schematics, peripherals configuration, clock configuration, and debugging workflows that are
8:00closer to what you may see in companies. With Arduino, there is nothing wrong with it, but a
8:06lot of things are already abstracted for you. You can build things quickly, which is great, but you
8:11don't always see what is happening underneath. With an STM32 type board, you are closer to the
8:17hardware. You start seeing how the peripherals are configured, how registers are used, how the
8:22clock system affects your application, and how the microcontroller actually interacts with the
8:27external world. You can start with STM32CubeIDE. It helps you select the board, configure pins,
8:34configure peripherals, generate code, build the project and debug. At the beginning, using this
8:40type of tool is not a problem. The goal is not to do everything from scratch on day one. The goal is
8:45to start building project and slowly understand what's happening underneath. Then once you are
8:51comfortable, you can go deeper and try more manual approach if you want. The peripherals I
8:56would focus on first are GPIO, UART, timers, ADC, I2C, SPI or "spy", CAN, Watchdog, and later
9:06DMA. A very simple but useful path is this. First blink an LED. Then read a button. Then send logs
9:14over UART. Then read an analog value with ADC. Then communicate with a sensor using I2C or SPI.
9:22Then use timer interrupts. Then add watchdog. Then later experiment with DMA. This may sound basic,
9:28but this is how you build real understanding. One peripheral at a time, one small project at a time.
9:34Also do not ignore clock configuration. At some point you need to understand how the system clock
9:40works. How peripherals clocks are enabled and how clock configuration affect timers UART baud rate ADC
9:48and other peripherals. This is why the reference manual becomes important. You are not just writing
9:53code. You are learning how the microcontroller works. The third pillar is basic electronics. You
Pillar 3: Basic electronics
9:58don't need to become a hardware engineer to work in embedded software. But you need to understand
10:03the basics of electronics. Embedded software interacts with real circuits. So you should
10:09understand voltage, current, resistance, ohms law, resistors, capacitors, diodes, transistor,
10:17LEDs, buttons, sensors, voltage, regulators, and logical levels. You should also understand pull-
10:23up and pull-down resistors. This is one of those topics that looks simple, but in real debugging,
10:29it matters a lot. If an input pin is floating, your software may behave strangely and the problem
10:35may not be your code. It may be the circuit. You should also learn how to read a schematic. In a
10:40company, a hardware engineer may give you the schematic of a board and you need to understand
10:45how the microcontroller connects to the rest of the circuit. Like where is the MCU? Which
10:50pins are connected to sensors? Where is the power section? Where is the reset circuit? Which pins
10:55are used for UART, SPI, I2C, CAN or GPIO? Where are the pull-up resistors? Where are the
11:01connectors? This is very practical knowledge. And then you need measurement tools. At minimum, learn
11:07how to use a multimeter. Then if possible get a cheap logic analyzer. A logic analyzer is very useful
11:14for digital protocols like UART, SPI and I2C. Later learn the basic of an oscilloscope. An
11:21oscilloscope helps you see the real shape of the signal voltage levels noise clock signals and
11:28timing. In embedded systems the bug is not always in the code. Sometimes the problem is wiring,
11:34signal quality, voltage levels, timing or hardware configuration. That's why basic electronics is
11:41part of the road map. The fourth pillar is memory. Memory is one of the most important
Pillar 4: Memory
11:46topics in embedded systems. You need to understand where your code lives, where your variables live,
11:52and how the MCU memory is organized. At a basic level, you should understand flash memory, RAM,
11:59EROM, stack, heap, resistors, memory-mapped I/O, and DMA. Flash is usually where your program code
12:06is stored. RAM is where your variables live during runtime. The stack is used for function calls,
12:12local variables, and return addresses. The heap is used for dynamic memory allocation,
12:18although in many embedded system you may avoid dynamic allocation or use it very carefully.
12:23Then you have registers. Peripheral registers are often mapped to memory addresses. That means your
12:30C code can access a memory address and by writing to that address you can configure or control
12:36hardware. This is a very important concept. When you understand memory-mapped I/O embedded
12:41programming starts to make much more sense. Then there is DMA, which stands for Direct Memory Access.
12:47DMA allows data to move between memory and peripherals without the CPU handling every
12:53single transfer. This is useful for things like ADC, UART, SPI, and other data-heavy operations. At the
13:01beginning, you don't need to master DMA, linker scripts or startup code deeply. But you should
13:07slowly build the mental model like where is the code? Where are global variables? Where is the
13:12stack? Why can stack overflow happen? Why is memory limits important? Why do data types matter? This
13:19pillar connects directly with C programming, debugging and performance. The fifth pillar is
Pillar 5: Professional tools
13:25professional tools. This is the part that many beginners ignore, but it makes a big difference
13:30when you want to work professionally. The first tool is Git. You should learn how to create commits,
13:36create branches, push code, pull code, merge changes, and work with a remote repository. You
13:42don't need to become a Git expert immediately, but you should be comfortable enough to manage
13:47your projects and collaborate with others. Then use GitHub, GitLab, or Bitbucket to host your
13:53projects. For beginners, GitHub is a great place to document your learning. A simple project with
13:58a good README can already say a lot about you. Then learn build tools. In the beginning, you
14:04may compile a C file manually from the terminal. That's okay. But professional project usually
14:10use build systems. So learn the basic of Make, CMake, and Ninja. Understand what a make file does.
14:16Understand what a CMakeLists.txt file does. Understand include directories, source files,
14:23libraries, and build folders. Then learn GDB basics. Learn how to set break points, inspect
14:28variables, step through code, and check memory. This tool help you move from I followed a tutorial
14:35to I can structure, build, debug and maintain a project. The last pillar is choosing your path.
Pillar 6: Choose your path
14:41Once you have the foundation, you can go deeper into a specific area and this is where embedded
14:46system become very broad. One path is firmware. This is the path closest to microcontrollers and
14:52bare metal development. If you choose firmware, you need strong C, peripherals, interrupt,
14:57timers, communication protocols, watchdogs, DMA, low power modes, debugging, datasheets,
15:04and reference manual. Later, you can add FreeRTOS , bootloader, firmware updates, unit testing,
15:10and driver development. Good project here could be a sensor data logger, a motor controller,
15:15a CAN bus node, a FreeRTOS based sensor system, or a bootloader and firmware update demo. Another
15:22path is embedded Linux. This is very common in more complex devices and getaways. If you choose
15:28embedded Linux, learn the Linux command line, file permission, processes, systemd, networking,
15:34SSH, shell scripting, cross compilation, C or C++ on Linux, device tree basics, kernel module,
15:42and later Yocto or buildroot. A good project here could be a Raspberry Pi or BeagleBone getaway, a custom
15:48Yocto image, a systemd service that reads sensor data, or a device tree overlay project. Another
15:54path is IoT. This is especially relevant for connected devices and getaways. For IoT you should
16:00understand MQTT, HTTP, networking, JSON, telemetry, device provisioning, logging, reconnect logic,
16:08cloud basics and TLS basics. Later you can go deeper into Azure IoT hub over the updates,
16:14certificate management, fleet management and edge getaways. Good project here could be an MQTT
16:21sensor getaway, an Azure IoT telemetry project, a device provisioning demo or a secure IoT device
16:27using certificates. Another path is embedded security. This is focused on protecting device,
16:32firmware, updates, and communication. For embedded security you need C, memory, cryptography basics,
16:40secure boot concepts, firmware signing, hashing, certificates, TLS, thread modeling, secure updates
16:47and hardware security basics. Later you can go deeper into secure elements, TPMS, key storage,
16:54anti-rollback, vulnerability research, fuzzing, static analysis and secure coding. And then there
17:01are other paths like FPGA and digital design. The important point is this. You don't need to
17:07choose everything at once. Choose one main path. Build two or three solid project around it and
17:13document them properly. Once your foundation is strong, moving between areas become much easier.
17:18For example, someone who starts with firmware can later move into IoT. Someone who works with
17:24embedded Linux can later move into security. Someone working with IoT getaways may need Linux
17:30networking, cloud, security, and firmware knowledge. These areas are connected but
17:36You need a base first. So if I had to start learning embedded systems from zero in 2026,
Final advice
17:42This is the roadmap I would follow. First, build the core fundamentals. C programming, CPU mental
17:47model, debugging, datasheets, register, and bit manipulation. Then choose a real board and
17:53learn peripherals. Then learn basic electronics because your code interacts with real hardware.
17:58Then understand memory, RAM, flash, stack, heap, registers, memory-map I/O and DMA. Then add
18:05professional tools like Git, GitHub, Make, Cmake, Ninja and GDB. And finally, choose your path,
18:12firmware, embedded Linux, IoT, embedded security, FPGA, or another specialization. But remember,
18:19the goal is not to learn everything at once. The goal is to build the foundation first. Then build
18:24two or three solid projects in your shoes and path and document them on GitHub. That's what can help
18:29you transition more smoothly into the industry. And that is the roadmap I wish more beginners
18:34had before entering their first embedded role. If you are learning embedded system right now,
18:40let me know in the comments which stage you are in. Are you learning C? Are you starting
18:44with STM32? Are you interested in firmware, embedded Linux, IoT or security? And if you
18:50want more practical embedded system content from the perspective of someone working in the field,
18:54subscribe to the channel. Thanks for watching and I'll see you in the next video.