Extreme Embedded Firmware Engineering Learning Path

Embedded Build Systems with GNU Tools and Makefiles | Modern Bare-Metal Embedded C++ | Embedded Systems Design Patterns

3 courses | 44+ hours | Complete Source Code Included

1. Embedded Build Systems with GNU Tools and Makefiles:

Have you ever wondered what it is like to develop embedded firmware without using any IDE- just a simple text editor and the command line ?

Have you heard of build systems like Make, if so have you ever wondered how these tools can be applied to embedded firmware development to automate the build process?

If you have no idea of what build systems like Make are, do you want to learn about them from scratch and apply them to your embedded firmware development ?
If any of this applies to you then keep reading this overview of our new course :

Extreme Embedded Bare-Metal Development

The goal of this course is to teach you how to set up an embedded toolchain, set up a build system, and then navigate the reference manual and datasheet of the tools as well the target microcontroller to develop firmware for the target microcontroller without using any IDE (Integrated Development Environment), libraries or third party header files.

Exactly What You're Getting

This is dramatically different from any course you have ever taken because like many of my courses, this is more of a professional hands-on “field guide” to stm32 extreme bare metal firmware development. The reason why is because there’s no fluff or filler. It immediately gets down to the actual subject, showing you exactly what to do, how to do it, and why.

You Will Be Able To :

  • Build complete firmware without using an Integrated Development Environment (IDE)
  • Write your own Linker Script
  • Write your own C Startup file
  • Effectively apply GNU Bin Tools
  • Effectively apply Build Systems like Make to your Embedded Development
  • Effectively write your own Makefiles to automate the Build Process in your Embedded Projects
  • Build every single line of code from scratch by writing to the microcontroller’s memory space directly.
  • Use No third party libraries or header files
  • Develop proficiency in your embedded development skills and confidently take the next steps
  • Define addresses for the different peripherals
  • Analyze the chip documentation
  • Create registers from the addresses

2. Modern Bare-Metal Embedded C++ From Ground Up

Practical programming course on embedded systems using the C++ programming language
Key features of C++ such as template programming and object-oriented programming can greatly improve embedded software portability, in recent years this has made C++ very attractive to embedded developers.

Goal of this course
is to teach you how to navigate the microcontroller reference manual and datasheet to extract the right information to professionally build peripheral drivers and firmware. To achieve this goal, no libraries are used in this course, purely bare-metal Embedded-C++ and register manipulations.

By the end of this course you will be able write drivers for peripherals like ADC, UART, PWM, GPIO, TIMER,I2C, SPI, etc. You will also master the ARM architecture and how to build professional embedded firmware for ARM processors.

Furthermore, you will master C++ key features like Object-Oriented methods, Template Programming, and optimization.

By the end of this course...

You Will Be Able To :

  • Write Class Templates for accessing Microcontroller Registers
  • Write Object-Oriented Peripheral Drivers
  • Master Object-Oriented Techniques for Microcontrollers
  • Master C++ Templates for Microcontrollers
  • Write Universal Asynchronous Receiver-Transmitter (UART) drivers using bare-metal-C++
  • Write Analog-to-Digital Converter (ADC) drivers using bare-metal Embedded-C++
  • Write General Purpose Timer (GPTM) drivers using bare-metal Embedded-C++
  • Write System Tick (SysTick) Timer drivers using bare-metal Embedded-C++
  • Write Serial Peripheral Interface (SPI) drivers using bare-metal Embedded-C++
  • Write Inter-Integrated Circuit (I2C) drivers using bare-metal Embedded-C++

3. Embedded Systems Design Patterns From Ground Up

This course teaches you how to...
Apply design patterns to embedded firmware development

Design patterns are reusable solutions to commonly occurring problems in software development.

Design patterns allow us to think about solutions in a more abstract way and therefore identify and underscore the important properties of the solution. Also, design patterns allow us to reuse solutions that have been proven to be effective in other similar circumstances.

Goal of this course
is to provide a set tools for firmware developers to deal with commonly recurring firmware design issues.

The course focuses on practical solutions by taking real-world problems and solving them using various design pattern solutions, examples such as data access in an ECG system using the Client-Server Design Pattern, IO device development using the Strategy Design Pattern, hardware portability using Hardware Proxy Design Pattern, Sensor Data Subscription and Notification Observer Design Pattern etc.

By the end of this course...

You Will Be Able To :

  • Implement Client-Server Design Pattern for accessing data in an ECG system
  • Implement the Hardware Proxy Design Pattern to enable hardware portability
  • Implement Observer Design Pattern for Subscribing to Sensor Data
  • Master C++ Templates for Microcontrollers
  • Implement the STRATEGY Design Pattern in your firmware
  • Implement the STATE Design Pattern in your firmware
  • Implement the Hardware Adapter Design Pattern in your firmware
  • Master Embedded-C Bit manipulations

Learn More

Frequently Asked Questions

When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.
How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.
What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.
Do I get a certificate?
Yes, after a successful completion of the course.

Your Instructor


EmbeddedExpertIO represents a vibrant collective dedicated to the mastery of sophisticated embedded systems software development for professionals.

EmbeddedExpertIO stands as a premier source of tailored embedded systems development courses, catering to individuals and enterprises seeking to hone or acquire embedded firmware programming expertise. Our extensive course selections encompass beginner to advanced levels, addressing diverse facets of embedded systems development, such as WiFi, STM32, IoT systems design, memory safeguarding, and beyond.

Our core objective is to equip individuals and organizations with the indispensable skills to thrive in the swiftly evolving embedded systems sector. We achieve this by providing immersive, hands-on education under the guidance of seasoned industry specialists. Our ambition is to emerge as the favored learning platform for embedded systems development professionals across the globe.