Mô tả

Are you tired of Copying and Pasting code you don't understand?


Here’s an overview of what you’re 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 Timer Triggered 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 DMA Driver


  • 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 Alarm Driver

        - Bare-Metal RTC Timestamp Driver

        - Bare-Metal RTC Tamper Detection Driver


  • 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) Timer Driver

            - Bare-Metal Windowed Watchdog (WWDG) Timer Driver


  • 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 Timer Driver


  • 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 anomalous results

           - 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 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.

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…


                                                                                     Exactly What You’re Getting

This is dramatically different from any course you have ever taken because it’s more of a professional hands-on “field guide” to stm32 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

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’t understand

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

  3. Experiencing bugs you don’t 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’s 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’s more than just getting each piece of code to work.

Here’s an overview of what you’re 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 Timer Triggered 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 DMA Driver


  • 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 Alarm Driver

        - Bare-Metal RTC Timestamp Driver

        - Bare-Metal RTC Tamper Detection Driver


  • 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) Timer Driver

            - Bare-Metal Windowed Watchdog (WWDG) Timer Driver


  • 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 Timer Driver



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 anomalous results

           - 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’t like “Copy/Paste” you’re not alone. I can’t stand it either. I’d literally rather have a piece of code that I wrote from scratch that doesn’t work than someone else’s working code I copied and pasted.

And that’s why I’ve 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.


Bạn sẽ học được gì

Yêu cầu

Nội dung khoá học

15 sections

Setting Up

5 lectures
Downloading CubeIDE
02:34
Installing CubeIDE
02:38
Getting the required documentation
07:41
Getting the required package for bare-metal development
21:19
Testing the project setup
15:54

Essentials of Firmware Debugging

8 lectures
Introduction to Debugging
05:41
Getting familiar with the Debug View
24:59
Working with the Instrumentation Trace Macrocell (ITM)
11:25
Retargetting "printf()" and creating Log functions
15:28
Debugging with UART - Analyzing the Documentation
16:21
Debugging with UART - Writing the UART Driver
21:56
Debugging with UART - Testing the UART Driver
13:21
Debugging GPIO with Serial Wire Viewer (SWV)
13:13

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

5 lectures
Overview of the Direct Memory Access (DMA) Module
12:23
Analyzing the DMA Documentation
06:42
Writing the DMA Memory-to-Memory Driver
18:26
Implementing the DMA Data Transfer function
06:55
Testing the DMA Driver
29:18

Developing Bare-Metal ADC DMA Drivers

4 lectures
Understanding ADC Independents Modes
08:38
Analyzing the ADC Documentation
14:53
Writing the ADC DMA Driver (Part I)
17:56
Writing the ADC DMA Driver (Part II)
23:58

Developing Bare-Metal ADC Timer Trigger DMA Drivers

2 lectures
Writing the ADC Timer Triggered Driver
25:18
Testing the ADC Timer Triggered Driver
10:30

Developing Bare-Metal UART DMA Drivers

7 lectures
Overview of the UART Protocol
07:43
Listing the Steps
08:08
Implementing the UART RX TX Initialization functions
11:00
Implementing the DMA Stream RX TX Configuration function (Part I)
11:52
Implementing the DMA Stream RX TX Configuration function (Part II)
17:35
Implementing the DMA Stream RX TX Configuration function (Part III)
13:32
Testing the UART DMA Driver
38:06

Developing Bare-Metal SPI DMA Drivers

11 lectures
Understanding the SPI Protocol
11:19
Analyzing the SPI Documentation
09:11
Implementing the SPI DMA Initialization function
21:13
Implementing the TX Stream Configuration function
15:46
Implementing the RX Stream Configuration function
07:17
Implementing the Transfer and Receive functions
14:21
Implementing the MPU9250 Mems Device SPI DMA Driver (Part I)
18:09
Implementing the MPU9250 Mems Device SPI DMA Driver (Part II)
28:57
Implementing the MPU9250 Mems Device SPI DMA Driver (Part III)
04:24
Implementing the MPU9250 Mems Device SPI DMA Driver (Part IV)
14:10
Testing the MPU9250 Mems Device SPI DMA Driver
21:09

Developing Bare-Metal I2C DMA Drivers

12 lectures
Understanding the I2C Protocol
09:21
Analyzing the I2C Documentation
14:32
Implementing the I2C DMA Initialization function (Part I)
11:50
Implementing the I2C DMA Initialization function (Part II)
12:56
Implementing the I2C DMA Tx Stream Initialization function
10:01
Implementing the I2C DMA Rx Stream Initialization function
04:02
Implementing the I2C DMA Stream Transfer function
09:11
Implementing the I2C DMA Stream Receive function
06:17
Implementing the I2C DMA Read function
37:08
Implementing the I2C DMA Write function
05:57
Implementing the I2C DMA Stream IRQHandlers
06:38
Testing the I2C DMA Driver with the MPU9250 Mems Device
24:31

Developing Bare-Metal PWM DMA Drivers

7 lectures
Understanding STM32 Timers
09:32
Analyzing the PWM Documentation
09:40
Implementing the PWM Initialization function
25:44
Developing the "set_dutycycle()" function
16:28
Implementing the PWM DMA Initialization function(Part I)
13:56
Implementing the PWM DMA Initialization function(Part II)
20:25
Testing the PWM DMA Driver
06:05

More on Debugging

6 lectures
Catching Anomalies with Breakpoints
15:23
Catching HardFaults
14:11
Debugging Timers using SWV Graph
29:29
Measuring the Execution Time of an Algorithm
23:09
Dumping Register Information
07:37
Determining Execution Time and Place using Profiling
08:50

Developing Bare-Metal RTC Drivers

17 lectures
Understanding Real Time Clocks
10:49
Listing the Steps for Configuring the RTC Calendar
08:16
Implementing the RTC Calendar Initialization function (Part I)
11:57
Implementing the RTC Calendar Initialization function (Part II)
18:19
Setting the Timer Prescalers
15:10
Exiting the Initialization Mode
13:15
Getting the Calendar Information
07:51
Testing the RTC Calendar Driver
16:16
Implementing the RTC Alarm Initialization function (Part I)
16:24
Implementing the RTC Alarm Initialization function (Part II)
11:06
Implementing the RTC Alarm Interrupt Handler and Testing
17:51
Analyzing the Steps to Configure the RTC Timestamp
05:28
Implementing the RTC Timestamp Initialization function
07:35
Implementing the RTC Timestamp Interrupt Handler
13:28
Testing the RTC Timestamp Driver
10:15
Implementing the RTC Tamper Detection Initialization function
09:58
Testing the RTC Tamper Detection Driver
09:10

Developing Bare-Metal Independent Watchdog (IWDG) Timer Drivers

5 lectures
Overview of the Independent Watchdog
05:23
Analyzing the Steps for Initializing the IWDG Timer
05:01
Implementing the IWDG Initialization function
15:33
Implementing other Modules for Testing the IWDG Driver
14:54
Testing the IWDG Driver
16:20

Developing Bare-Metal Windowed Watchdog (IWDG) Timer Drivers

3 lectures
Overview of the Window Watchdog
12:22
Implementing the WWDG Initialization function
12:49
Testing the WWDG Driver
15:27

Developing Bare-Metal Drivers for Standby Mode and Wakeup

7 lectures
Implementing the Standby and Wakeup Setup Function
18:58
Getting the Source of a "Reset"
09:53
Testing the Standby and Wakeup Driver
10:33
Analyzing Steps for Developing an RTC Wakeup Timer Driver
05:50
Implementing the RTC Wakeup Timer Initializationf Function
13:18
Implementing the "rtc_enter_standby_mode()" Function
08:28
Testing the RTC Wakeup timer Driver
14:12

Closing

1 lectures
Closing Remarks
00:09

Đánh giá của học viên

Chưa có đánh giá
Course Rating
5
0%
4
0%
3
0%
2
0%
1
0%

Bình luận khách hàng

Viết Bình Luận

Bạn đánh giá khoá học này thế nào?

image

Đăng ký get khoá học Udemy - Unica - Gitiho giá chỉ 50k!

Get khoá học giá rẻ ngay trước khi bị fix.