ARM BareMetal Scheduler(RTOS functionality)and device driver
Code a funtional system with Linker Script, Assembly and C language using opensource tools for ARM STM32 microcontroller
Description
Have you ever wondered how a few snippets of characters make a silicon chunk to blink an LED?
This course will explain the ARM M4 microcontroller start-up process and will walk though Assembly and C code to bring up the microcontroller. We will code some simple drivers to blink an LED and proceed to create a simple terminal user interface (TUI) using UART. We will also build a simple task scheduler so that multiple tasks can run in a round-robin way.
This is a self contained beginner friendly approach to introduce concepts by writing simple and complete functional code that works on a Nucleo Board. This course performs hands on coding to build, flash and debug a simple functional real time baremetal code to run on STM32F446RE Nucleo Board. A prior knowledge of C is preferable.
We will learn the following as we code through this course.
Essentials
How to refer essential Reference Documents - STM32F446 Datasheet, Programming Manual and Reference Manual
Usage of opensource tools. A lot of documentation is available in public for these tools and can be used free of cost. Tool set-up is not covered here.
Elaborates ARM Microcontroller start-up process.
Code following for minimal baremetal code
Linker File
Start-up Assembly Code
Makefile
C code sections and how to prepare microcontroller to C code compiled with GCC.
Flashing with OpenOCD
Debugging and tracing code with GDB
Extending Code
Extending C code to blink LED
Extending C code to transmit and receive via UART for a terminal user interface.
Context switch
Overview of interrupts, interrupt vector table, Registers.
Context switch basics and Task Control Block
Coding context switch and creation and and deletion of tasks.
Software Concepts
Also uses finite state machine for Tasks.
What You Will Learn!
- End-to-end embedded firmware development flow
- STM32 device Driver
- ARM processor set-up, interrupts and context switch
- Writting Linker scripts
- Writting start-up ARM assembly code
- Embedded C programming basics
- Interfacing with Microcontroller peripherals
- GNU Debugger (GDB)
- ARM microcontroller internals overview
- RTOS concepts
Who Should Attend!
- Beginner embedded systems engineer
- Firmware developer
- Hobby coders
- DIYers