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
a message for you...
what you will master through the journey
course contents and preview lectures ...
Environment Setup
The courses uses the QEMU emulator for a real hardware board (the experiments should also run on real hardware). To ensure that everyone has the same setup and doesn't get tangled in the setup issues - we use the GitHub Codespaces instance running a virtual machine configuration we defined. This section guides through the steps of accessing it.
How the ARM M-class CPUs Work
This section provides a comprehensive introduction to the core concepts of ARM Cortex-M CPUs, laying the foundation for understanding their architecture and operation. Explore the mental model of the CPU, systems, and the Cortex-M controller, gaining insight into how these components interact.
Assembly Programming
Introduces the essentials of assembly programming for ARM Cortex-M CPUs, focusing on practical implementation. Start by exploring the processor boot-up process and writing their first assembly program, gaining hands-on experience with the Cortex-M environment. The section delves into the structure of instructions, their encoding, and how to analyze binary dumps to understand the low-level representation of code. Examine the anatomy of an assembly file, learning its components and organization. Master stack manipulation instructions, understanding their critical role in managing data and CPU context.
Implementing the Scheduler - Theory
Covers the theoretical foundations of implementing a scheduler on ARM Cortex-M CPUs, enabling multitasking on a single processor. Explore how a single CPU can run multiple processes, uncovering the principles behind concurrent task execution. Covers the anatomy of a task, detailing its structure and role within a scheduler. Discover the critical techniques for context switching and scheduling, including the `trick` that facilitates seamless task transitions.
Implementing the Scheduler - Hands on
Practical implementation of a scheduler. Program the SysTick timer and verify its associated exception handling to ensure accurate timing for task scheduling. Covers techniques for saving and restoring CPU context, a critical step for seamless task switching. Set up tasks and their respective stacks, configuring the system to enable round-robin scheduling. Through hands-on exercises, implement round-robin scheduling and achieve process switching.
Conclusion
Final thoughts and next steps.
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
Feature | Us! | 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
Requirements
Who this course is for
FAQs
No. You will learning the required basics (and advance concepts) as part of the course.
Is this course good for beginners?
Yes! The course is taught as if the learner has no idea about ARM Cortex-M CPUs, Assembly and OS.
Why is the course validity 365 days?
We need to maintain the servers that host the courses. At the moment we have enough capital to keep the server afloat for another year. We are striving to make this a lifetime access course. As the funds trickle in, we will revisit the validity and might update it for all the enrolled learners. It is however no a promise!
Do I need a special machine configuration to take this course?
No! All you will need is an internet connection and the Chrome browser. The hands-on examples and lab work is based on GitHub codespaces platform.
Why is a GitHub account needed?
The Experiments and Labs are based on the GitHub provided Codespaces virtual machine. Codespaces will enable a common work environment for all the learners and avoid the hassle of special setup.
Can I change my email-id post purchase?
As much as we'd like to support that, your account will be linked to your email-id post purchase.
What name will be printed on the Certificate?
The name you use on the platform will be printed as is on the Certificate when it is generated.
Can I follow the steps on my own PC?
Yes for the most part. Better yet would be if you have a Linux machine. We will not support debugs on your personal support.
Is doubt resolution support provided?
The courses is self-paced. We do not support Q/A or doubt resolution. The platform provides a way for you to ask questions that other students can respond to.