Scheduler Design on ARM Cortex-M

Learn arm cortex-m controller assembly programming

Note: This course is already included in the Library Access!

Learn the assembly programming for ARM Cortex-M CPUs by writing a scheduler from scratch, without using any IDE, SDK or boiler plate code. A scheduler is at the heart of every operating system.

By writing one from scratch, not only will you learn how to write assembly code, but also how the CPU works and, how a single CPU can run more than one process. As part of this course, the goal is to make a single CPU run three infinite while(1){} loops!


Bestseller Beginner Intermediate

(5) 2000+ students enrolled.

Last updated: 3 October 2025 | English | 365 days Access.


includes

~ 5 hr  of recorded video lectures.
24  lessons.
Emulator  based experiments.
downloadable resources.
Certificate  on completion of course.
Cheat sheets and/or quick reference guides.
Case studies based on open-source code.
Coding exercises and challenges.
End-to-end project implementations.
New content regularly added!

a message for you...

what you will master through the journey

Understand ARM Cortex-M CPU Architecture
Mental Model of CPU and Systems
Programmer’s Model and NVIC
Privilege Levels and Operating Modes
CPU Boot-Up Process
Exception Handling
Writing Assembly Code
Startup Assembly Program
Instruction Sets and Encoding
Anatomy of Assembly Files
Stack Manipulation
Scheduler Theory
Task Anatomy
Context Switching and Scheduling
Exception Entry/Exit and SysTick Timer
Hands-On Scheduler Implementation
Programming the SysTick timer and verifying exception handling.
Saving and restoring CPU context during task switches.
Setting up tasks and their stacks for round-robin scheduling.
Achieving round-robin scheduling to switch between processes.
Running Multiple Processes
Key Considerations for Scheduling
Comparison with FreeRTOS
Debugging using GDB

course contents and preview lectures ...

What is so special about this course?

Every complex embedded systems solution uses an OS/RTOS for implementing the state machine. An OS at its core implements a task scheduler (among other things). Not everyone understands how it works.

The design of this course is deliberate in the sense that - in an attempt to implementing the “Scheduler” you will learn the CPU operations, how assembly programs are written and how scheduling works.

Completing this course should set you up to understand & work efficiently with an operating system (like the FreeRTOS).

Certificate

The journey through the course is a challenging one! Our courses are packed with insights and will take time to sink in. You will be awarded with a Certificate of Mastery when you complete 95% of the course work.

What you see above is a sample certificate. The design of this certificate will be modified from time to time to make it more shiny and reflect the rightly earned pride!

There will always be a dedicated certificate identification number to verify it with us. This should enable anyone to check the authenticity of the certificate.

How this is different from Others

FeatureUs!Others
Use abstractions and be top level.
Superficial and hand wavy explanation.
Explain how the CPU works.
Details of how the CPU boots.
Explain how assembly code is written and converted to binary.
Hand code a scheduler.

Instructors

Piyush Itankar
Embedded Engineer (L5), Google
Electrical Engineer holding a Master’s degree in Embedded Systems, with a proven track record at industry giants. At Intel, contributed expertise to Navigation Firmware, Bluetooth Driver development, and RF validation software. Currently thriving as an Embedded Software Engineer at Google, drove innovation in Firmware development for the Power Management Sub-system on Tensor SoCs (Pixel Phones) and presently advancing system software for the Pixel Watch.

Requirements

GitHub account to do the hands-on coding in Codespaces.
Interest in learning the underlying details of how the CPU works.
Functional internet connection.

Who this course is for

Students in Academia with operating systems as a subject in the course.
Those wanting to learn assembly programming.
Those interested in the ARM Cortex-M CPU working.
Those looking to understand how a scheduler works.

FAQs