ARM Cortex-M Assembly Programming
24 videos • 8,576 views • by Pyjama Brah! Unlock the power of low-level programming with this hands-on course on ARM Cortex-M assembly programming. Designed for enthusiasts, embedded systems developers, and anyone eager to master the intricacies of CPU operation, this course takes you on a deep dive into the ARM Cortex-M architecture by guiding you through the design and implementation of a round robin scheduler from scratch.Through a carefully structured blend of theory, practical examples, and step-by-step coding, you’ll gain a solid understanding of how modern microcontrollers work, how to write efficient assembly code, and how to manage multiple tasks on a single CPU. By the end of the course, you’ll have built a functional round robin scheduler—a foundational concept in real-time operating systems (RTOS)—and developed the skills to tackle advanced embedded programming challenges.This course begins with setting up your development environment and understanding the end goal. From there, you’ll explore how ARM Cortex-M CPUs operate, building a mental model of the controller, its architecture, and key concepts like the NVIC, privilege modes, and exception handling. You’ll then move into writing and debugging assembly programs, dissecting their anatomy, and experimenting with Cortex-M3 instructions and stack manipulation. The theoretical foundation of the scheduler comes next, covering multitasking on a single CPU, context switching, task anatomy, and the role of the SysTick timer. In the hands-on section, you’ll put this knowledge into practice by programming the SysTick timer, setting up tasks and stacks, managing CPU context, and achieving round robin task switching. Finally, the course wraps up with reflections on key takeaways, potential pitfalls, and a comparison of your scheduler to FreeRTOS.This course is ideal for embedded systems programmers looking to deepen their understanding of ARM Cortex-M, hobbyists and students interested in low-level programming and operating system fundamentals, and developers transitioning from high-level languages to assembly for performance-critical applications. A basic understanding of programming concepts is recommended, and familiarity with C or another programming language is helpful but not required. Above all, a willingness to explore the nuts and bolts of CPU operation is key.By the end of this course, you’ll not only have a working round robin scheduler but also the confidence to write assembly code for ARM Cortex-M processors and a deeper appreciation for how embedded systems manage multiple tasks. Take your first step toward mastering the art of low-level programming!