HOME > Development > Advanced Embedded Systems Bare-Metal Programming Ground Up™

Advanced Embedded Systems Bare-Metal Programming Ground Up™

  • Development
  • Mar 13, 2025
SynopsisAdvanced Embedded Systems Bare-Metal Programming Ground Up&,...
Advanced Embedded Systems Bare-Metal Programming Ground Up™  No.1

Advanced Embedded Systems Bare-Metal Programming Ground Up&, available at $74.99, has an average rating of 4.76, with 100 lectures, based on 143 reviews, and has 2685 subscribers.

You will learn about Write advanced firmware using only bare-metal embedded-c Write bare-metal drivers for DMA Memory-to-Memory transfer Write DMA ADC drivers using bare-metal embedded-c Write DMA PWM drivers using bare-metal embedded-c Write DMA UART drivers using bare-metal embedded-c Write DMA SPI drivers using bare-metal embedded-c Write DMA I2C drivers using bare-metal embedded-c Develop proficiency in your embedded development skills and confidently take the next steps Write Realtime Clock (RTC) drivers using bare-metal embedded-c Write Watchdog Timer (IWDG and WWDG) drivers using bare-metal embedded-c Write bare-metal embedded-c drivers for entering Standby mode and Waking up Use the debugger effectively to analyze and resolve any bugs Understand and write every single line of code yourself- no Copy/Paste Build every single line of code from scratch by writing to the microcontroller鈥檚 memory space directly. Analyze the chip documentation This course is ideal for individuals who are If you are an absolute beginner to embedded systems, then take this course. or If you are an experienced embedded developer and want to learn how to professionally develop embedded applications for ARM processors, then take this course. It is particularly useful for If you are an absolute beginner to embedded systems, then take this course. or If you are an experienced embedded developer and want to learn how to professionally develop embedded applications for ARM processors, then take this course.

Enroll now: Advanced Embedded Systems Bare-Metal Programming Ground Up&

Summary

Title: Advanced Embedded Systems Bare-Metal Programming Ground Up&

Price: $74.99

Average Rating: 4.76

Number of Lectures: 100

Number of Published Lectures: 100

Number of Curriculum Items: 100

Number of Published Curriculum Objects: 100

Original Price: $69.99

Quality Status: approved

Status: Live

What You Will Learn

  • Write advanced firmware using only bare-metal embedded-c
  • Write bare-metal drivers for DMA Memory-to-Memory transfer
  • Write DMA ADC drivers using bare-metal embedded-c
  • Write DMA PWM drivers using bare-metal embedded-c
  • Write DMA UART drivers using bare-metal embedded-c
  • Write DMA SPI drivers using bare-metal embedded-c
  • Write DMA I2C drivers using bare-metal embedded-c
  • Develop proficiency in your embedded development skills and confidently take the next steps
  • Write Realtime Clock (RTC) drivers using bare-metal embedded-c
  • Write Watchdog Timer (IWDG and WWDG) drivers using bare-metal embedded-c
  • Write bare-metal embedded-c drivers for entering Standby mode and Waking up
  • Use the debugger effectively to analyze and resolve any bugs
  • Understand and write every single line of code yourself- no Copy/Paste
  • Build every single line of code from scratch by writing to the microcontroller鈥檚 memory space directly.
  • Analyze the chip documentation
  • Who Should Attend

  • If you are an absolute beginner to embedded systems, then take this course.
  • If you are an experienced embedded developer and want to learn how to professionally develop embedded applications for ARM processors, then take this course.
  • Target Audiences

  • If you are an absolute beginner to embedded systems, then take this course.
  • If you are an experienced embedded developer and want to learn how to professionally develop embedded applications for ARM processors, then take this course.
  • Are you tired of Copying and Pasting code you don’t understand?

    Here鈥檚 an overview of what you鈥檙e getting in this advanced level course

         

  • Developing bare-metal DMA Drivers:

    This course completely demystifies the Direct Memory Access (DMA)peripheral. Over 50% of the course is spent on this topic, so that by the end of this course you would have mastered the DMA peripheral.

    We shall thoroughly look at developing the following bare-metal DMA drivers.

        – Bare-Metal DMA Memory-to-Memory Transfer Driver

        – Bare-Metal ADC DMA Regular Conversion Driver

        – Bare-Metal ADC DMA TimerTriggered Conversion Driver

        – Bare-Metal UART RX/TX DMA Driver

        – Bare-Metal SPI RX/TX DMA Driver

        – Bare-Metal I2C  RX/TX DMA Driver

        – Bare-Metal PWM DMADriver

  • Developing bare-metal RTC Drivers:

    The Realtime Clock (RTC) peripheral is another advanced peripheral demystified in this course. We shall study the theory of realtime clocks, take a look at the capabilies of the realtime clock on our microcontroller and then develop the following drivers for the realtime clock.

        – Bare-Metal RTC Calendar Driver

        – Bare-Metal RTC AlarmDriver

        – Bare-Metal RTC TimestampDriver

        – Bare-Metal RTC Tamper DetectionDriver

  • Developing bare-metal Watchdog Timer Drivers:

    Watchdog Timers are an essential component of any robust embedded device. In my opinion, no embedded device should be released onto the market without the implementation of an Independent Watchdog Timer (IWDG). You will understand why I hold this opinion in the course.

  •         In this course we shall develop the following Watchdog Timer drivers:

                – Bare-Metal Independent Watchdog (IWDG) TimerDriver

                – Bare-Metal Windowed Watchdog (WWDG) TimerDriver

  • Working with Standby Mode and Wakeup:

    Knowing how to put your embedded devics into Low-power mode and coming out of it will greatly improve your ability to developer power efficient embedded solutions. This course will teach you how to put your device into Standby mode and come out of it using different methods.

    Specifically, we shall develop the following drivers:

       – Bare-Metal Standby Mode and Wakeup Pin Driver

       – Bare-Metal Standby Mode and RTC Wakeup TimerDriver

  • The Art of Debugging :

    Knowing how to properly debug your firmware will save you lots of time and money, and may even prolong your life because of the level of frustration and stress you will avoid.

    In this course you shall grasp the theoretical aspects of debugging, understand the various types of debugging such functional debugging and performance debugging, and learn the various tools and methods used in different scenarios.

  •        Some of the techniques we you will master include:

                – Methods of identifying the cause of HardFault

                – Catching anomalousresults

               – Measuring execution time of an algorithm using a Timer

                – Measuring execution time of an algorithm using a Logic Analyzer

                – Working with arrays dumps

                – Debugging techniques for Timers

    With a programming based approach, this course is designed to give you a solid foundation in bare-metal firmware development for  ARM-based microcontrollers . The goal of this course is to teach you how to navigate themicrocontroller 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.

    Still keeping it simple, this course comes in different ARM Cortex-M development boards  so that students can put the techniques to practice using an ARM Cortex-M development board of their choice. This version of the course uses the STMicroelectronics  STM32F4-NUCLEO which has an ARM Cortex-M4 microcontoller.

    This is the Advanced level course for the world famous Embedded Systems Bare-Metal Programming Ground Up& (STM32).You have to take the Embedded Systems Bare-Metal Programming Ground Up& (STM32) before taking this course

    So with that understood, let me tell you鈥?/p>

                                                                                         Exactly What You鈥檙e Getting

    This is dramatically different from any course you have ever taken because it鈥檚 more of a professional hands-on 鈥渇ield guide鈥?to stm32 bare metal firmware development.
    The reason why is because there鈥檚 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鈥檚 easy.

    And you鈥檒l immediately 鈥済et鈥?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

    See, this course will change your professional life forever. Here is what one student had to say about the Embedded Systems Bare-Metal Programming Ground Up& (STM32) course :

      “I would suggest this course for all the beginners. The concepts have been covered in the right sequence.And also the best part of this lecture series is getting to know how to explore the reference manual and datasheets.”

    Here is what another student had to say :

        “Extremly helpful to get to understand the uC programming deeper! For me it is much easier from now to develop code because I undertstand the base behind, so I’m more confident and more experienced to develop and debug the code. Really, this course is very useful to link the hardware knowledge with the coding skills. This fills the gap between them. Thanks for it! 馃檪

    A third student :

    I am a professional semiconductor chipset application engineer with 30 years in global embedded product design in system applications. I can say this teacher is very straight forward by sharing his many years knowledge to the students with his true heart. Yes. I love his teaching pace and style!

                                                                                   Taken by 8000+ Students with 1000+ Reviews

    If at least one of the following applies to you then keep reading if not then simply skip this course:

    Escape From “

    1. Copying/Pasting code you don鈥檛 understand

    2. Using third party libraries and header files like HAL, LL and StdPeriph

    3. Experiencing bugs you don鈥檛 understand

    4. Being afraid of technical documentations like the reference manual and datasheet of the chip

    5. Imposter syndrome

    ” Arrive At

    1. Building every single line of code from scratch by writing to the microcontroller鈥檚 memory space directly.

    2. Using No third party libraries or header files

    3. Understanding and writing every single line of code yourself- no Copy/Paste

    4. Using the debugger effectively to analyze and resolve any bugs

    5. Developing proficiency in your embedded development skills and confidently take the next steps

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

    Here鈥檚 an overview of what you鈥檙e getting in this advanced level course

           

  • Developing bare-metal DMA Drivers:

    This course completely demystifies the Direct Memory Access (DMA)peripheral. Over 50% of the course is spent on this topic, so that by the end of this course you would have mastered the DMA peripheral.

    We shall thoroughly look at developing the following bare-metal DMA drivers.

        – Bare-Metal DMA Memory-to-Memory Transfer Driver

        – Bare-Metal ADC DMA Regular Conversion Driver

        – Bare-Metal ADC DMA TimerTriggered Conversion Driver

        – Bare-Metal UART RX/TX DMA Driver

        – Bare-Metal SPI RX/TX DMA Driver

        – Bare-Metal I2C  RX/TX DMA Driver

        – Bare-Metal PWM DMADriver

  • Developing bare-metal RTC Drivers:

    The Realtime Clock (RTC) peripheral is another advanced peripheral demystified in this course. We shall study the theory of realtime clocks, take a look at the capabilies of the realtime clock on our microcontroller and then develop the following drivers for the realtime clock.

        – Bare-Metal RTC Calendar Driver

        – Bare-Metal RTC AlarmDriver

        – Bare-Metal RTC TimestampDriver

        – Bare-Metal RTC Tamper DetectionDriver

  • Developing bare-metal Watchdog Timer Drivers:

    Watchdog Timers are an essential component of any robust embedded device. In my opinion, no embedded device should be released onto the market without the implementation of an Independent Watchdog Timer (IWDG). You will understand why I hold this opinion in the course.

  •         In this course we shall develop the following Watchdog Timer drivers:

                – Bare-Metal Independent Watchdog (IWDG) TimerDriver

                – Bare-Metal Windowed Watchdog (WWDG) TimerDriver

  • Working with Standby Mode and Wakeup:

    Knowing how to put your embedded devices into Low-power mode and coming out of it will greatly improve your ability to developer power efficient embedded solutions. This course will teach you how to put your device into Standby mode and come out of it using different methods.

    Specifically, we shall develop the following drivers:

       – Bare-Metal Standby Mode and Wakeup Pin Driver

       – Bare-Metal Standby Mode and RTC Wakeup TimerDriver

  • But it gets better because you  will also master.

  • The Art of Debugging :

  • Knowing how to properly debug your firmware will save you lots of time and money, and may even prolong your life because of the level of frustration and stress you will avoid.

    In this course you shall grasp the theoretical aspects of debugging, understand the various types of debugging such functional debugging and performance debugging, and learn the various tools and methods used in different scenarios.

           Some of the techniques we you will master include:

                – Methods of identifying the cause of HardFault

                – Catching anomalousresults

               – Measuring execution time of an algorithm using a Timer

                – Measuring execution time of an algorithm using a Logic Analyzer

                – Working with arrays dumps

                – Debugging techniques for Timers                                                    

                                                               Specially Designed For People Who Hate Copy/Paste

    Listen. If you don鈥檛 like 鈥淐opy/Paste鈥?you鈥檙e not alone. I can鈥檛 stand it either. I鈥檇 literally rather have a piece of code that I wrote from scratch that doesn鈥檛 work than someone else鈥檚 working code I copied and pasted.

    And that鈥檚 why I鈥檝e spent months designing and recording this course in which I show you how to locate every single register used and the meaning of every hexadecimal value written into the register.

    Also it comes with a money back guarantee so you have nothing to lose.

    Course Curriculum

    Chapter 1: Setting Up

    Lecture 1: Downloading CubeIDE

    Lecture 2: Installing CubeIDE

    Lecture 3: Getting the required documentation

    Lecture 4: Getting the required package for bare-metal development

    Lecture 5: Testing the project setup

    Chapter 2: Essentials of Firmware Debugging

    Lecture 1: Introduction to Debugging

    Lecture 2: Getting familiar with the Debug View

    Lecture 3: Working with the Instrumentation Trace Macrocell (ITM)

    Lecture 4: Retargetting printf() and creating Log functions

    Lecture 5: Debugging with UART – Analyzing the Documentation

    Lecture 6: Debugging with UART – Writing the UART Driver

    Lecture 7: Debugging with UART – Testing the UART Driver

    Lecture 8: Debugging GPIO with Serial Wire Viewer (SWV)

    Chapter 3: Developing Bare-Metal Memory-to-Memory Direct Memory Access (DMA) Drivers

    Lecture 1: Overview of the Direct Memory Access (DMA) Module

    Lecture 2: Analyzing the DMA Documentation

    Lecture 3: Writing the DMA Memory-to-Memory Driver

    Lecture 4: Implementing the DMA Data Transfer function

    Lecture 5: Testing the DMA Driver

    Chapter 4: Developing Bare-Metal ADC DMA Drivers

    Lecture 1: Understanding ADC Independents Modes

    Lecture 2: Analyzing the ADC Documentation

    Lecture 3: Writing the ADC DMA Driver (Part I)

    Lecture 4: Writing the ADC DMA Driver (Part II)

    Chapter 5: Developing Bare-Metal ADC Timer Trigger DMA Drivers

    Lecture 1: Writing the ADC Timer Triggered Driver

    Lecture 2: Testing the ADC Timer Triggered Driver

    Chapter 6: Developing Bare-Metal UART DMA Drivers

    Lecture 1: Overview of the UART Protocol

    Lecture 2: Listing the Steps

    Lecture 3: Implementing the UART RX TX Initialization functions

    Lecture 4: Implementing the DMA Stream RX TX Configuration function (Part I)

    Lecture 5: Implementing the DMA Stream RX TX Configuration function (Part II)

    Lecture 6: Implementing the DMA Stream RX TX Configuration function (Part III)

    Lecture 7: Testing the UART DMA Driver

    Chapter 7: Developing Bare-Metal SPI DMA Drivers

    Lecture 1: Understanding the SPI Protocol

    Lecture 2: Analyzing the SPI Documentation

    Lecture 3: Implementing the SPI DMA Initialization function

    Lecture 4: Implementing the TX Stream Configuration function

    Lecture 5: Implementing the RX Stream Configuration function

    Lecture 6: Implementing the Transfer and Receive functions

    Lecture 7: Implementing the MPU9250 Mems Device SPI DMA Driver (Part I)

    Lecture 8: Implementing the MPU9250 Mems Device SPI DMA Driver (Part II)

    Lecture 9: Implementing the MPU9250 Mems Device SPI DMA Driver (Part III)

    Lecture 10: Implementing the MPU9250 Mems Device SPI DMA Driver (Part IV)

    Lecture 11: Testing the MPU9250 Mems Device SPI DMA Driver

    Chapter 8: Developing Bare-Metal I2C DMA Drivers

    Lecture 1: Understanding the I2C Protocol

    Lecture 2: Analyzing the I2C Documentation

    Lecture 3: Implementing the I2C DMA Initialization function (Part I)

    Lecture 4: Implementing the I2C DMA Initialization function (Part II)

    Lecture 5: Implementing the I2C DMA Tx Stream Initialization function

    Lecture 6: Implementing the I2C DMA Rx Stream Initialization function

    Lecture 7: Implementing the I2C DMA Stream Transfer function

    Lecture 8: Implementing the I2C DMA Stream Receive function

    Lecture 9: Implementing the I2C DMA Read function

    Lecture 10: Implementing the I2C DMA Write function

    Lecture 11: Implementing the I2C DMA Stream IRQHandlers

    Lecture 12: Testing the I2C DMA Driver with the MPU9250 Mems Device

    Chapter 9: Developing Bare-Metal PWM DMA Drivers

    Lecture 1: Understanding STM32 Timers

    Lecture 2: Analyzing the PWM Documentation

    Lecture 3: Implementing the PWM Initialization function

    Lecture 4: Developing the set_dutycycle() function

    Lecture 5: Implementing the PWM DMA Initialization function(Part I)

    Lecture 6: Implementing the PWM DMA Initialization function(Part II)

    Lecture 7: Testing the PWM DMA Driver

    Chapter 10: More on Debugging

    Lecture 1: Catching Anomalies with Breakpoints

    Lecture 2: Catching HardFaults

    Lecture 3: Debugging Timers using SWV Graph

    Lecture 4: Measuring the Execution Time of an Algorithm

    Lecture 5: Dumping Register Information

    Lecture 6: Determining Execution Time and Place using Profiling

    Chapter 11: Developing Bare-Metal RTC Drivers

    Lecture 1: Understanding Real Time Clocks

    Lecture 2: Listing the Steps for Configuring the RTC Calendar

    Lecture 3: Implementing the RTC Calendar Initialization function (Part I)

    Lecture 4: Implementing the RTC Calendar Initialization function (Part II)

    Lecture 5: Setting the Timer Prescalers

    Lecture 6: Exiting the Initialization Mode

    Lecture 7: Getting the Calendar Information

    Lecture 8: Testing the RTC Calendar Driver

    Lecture 9: Implementing the RTC Alarm Initialization function (Part I)

    Lecture 10: Implementing the RTC Alarm Initialization function (Part II)

    Lecture 11: Implementing the RTC Alarm Interrupt Handler and Testing

    Lecture 12: Analyzing the Steps to Configure the RTC Timestamp

    Lecture 13: Implementing the RTC Timestamp Initialization function

    Lecture 14: Implementing the RTC Timestamp Interrupt Handler

    Lecture 15: Testing the RTC Timestamp Driver

    Lecture 16: Implementing the RTC Tamper Detection Initialization function

    Lecture 17: Testing the RTC Tamper Detection Driver

    Chapter 12: Developing Bare-Metal Independent Watchdog (IWDG) Timer Drivers

    Lecture 1: Overview of the Independent Watchdog

    Lecture 2: Analyzing the Steps for Initializing the IWDG Timer

    Lecture 3: Implementing the IWDG Initialization function

    Lecture 4: Implementing other Modules for Testing the IWDG Driver

    Instructors

  • Advanced Embedded Systems Bare-Metal Programming Ground Up™  No.2
    BHM Engineering Academy
    21st Century Engineering Academy
  • Advanced Embedded Systems Bare-Metal Programming Ground Up™  No.3
    Israel Gbati
    Embedded Firmware Engineer
  • Rating Distribution

  • 1 stars: 2 votes
  • 2 stars: 1 votes
  • 3 stars: 9 votes
  • 4 stars: 42 votes
  • 5 stars: 89 votes
  • Frequently Asked Questions

    How long do I have access to the course materials?

    You can view and review the lecture materials indefinitely, like an on-demand channel.

    Can I take my courses with me wherever I go?

    Definitely! If you have an internet connection, courses on Udemy are available on any device at any time. If you don’t have an internet connection, some instructors also let their students download course lectures. That’s up to the instructor though, so make sure you get on their good side!