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

Ratings: 3.93 / 5.00




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