Embedded Build Systems with GNU Tools and Makefiles

No Integrated Developed Environment (IDE) used : just the command line, a text editor 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.

Plus, it’s easy.

And you’ll immediately “get” the entire mythology I personally use to build firmware for consumer devices in my professional life.

It's About MORE Than Just Getting the Code to Work

So like I said, there’s more than just getting each piece of code to work.

Here’s an overview of what you’re getting...
Understanding the Build Process:

In order to be able to truly develop firmware from scratch we need to understand what goes on
at each and every stage as the .c and .h source files are being converted to .elf executables. We will analyze the Preprocessing Stage -> the Compiling Stage -> the Assembling Stage ->the Linking Stage all the way to the Locator Stage.
Writing the Linker Script:
To be able to properly merge the various source files and place different sections of the source files into different memory regions of our target microcontroller we need to write our own linker script to tell the linker the different regions and sizes of memory available on our target microcontroller and also in which regions of memory we want to store specific sections of the source code.
Writing the C Startup file

The Reset_Handler is the first function to be executed when microcontroller comes out of reset. We will have to define this function in our C Startup file. We will also have to define the vector table in this same file.

Automating the Build Process with Make:

A Build System is a piece of program that takes source code as input and produces a deployable software as output. Make is one of the popular Build Systems out there. We shall learn how to automate our build process with Make.
Analyzing the chip documentations:

Before developing the firmware for any chip you have to learn how to read the documentation provided by the chip manufacturer.
Defining address for the different peripheral:

All components on the microcontroller have an address range.To write to a component or read from a component you need to locate its address range in the documentation and properly define the addresses in your code.

Creating registers from the address:

The addresses in the address range of a component represent the registers of that component. To access these registers you have effectively typecast the addresses.
Understanding CMSIS:

Cortex-Microcontroller Interface Standard (CMSIS)CMSIS is a standard developed by Arm for all Cortex-Microcontrollers. This is the standard used in professional firmware development.

By the end of this course...

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

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.

Course Curriculum

Available in days
days after you enroll

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.