I believe that the Arm Community could be interested in the "Embedded C Programming Course with Arm Cortex-M" video course, which I've been teaching for over a year on YouTube. The playlist for this course is available below.
Embedded Systems Programming Course on YouTube
The course starts from the beginning and is structured as a series of short, focused, hands-on lessons that teach you how to program Arm Cortex-M microcontrollers in C.
My goal is not just to teach C–other courses do it already quite well. But there are virtually no courses that would step down to the machine level and show you exactly what happens inside the Arm processor. This deeper understanding will allow you to use both the Arm processor and the C language more efficiently and with greater confidence. You will gain understanding not just what for your program does, but also how the C statements translate to machine instructions and how fast the processor can execute them.
What I believe is special about this "Modern Embedded Programming" course is that it shows exactly what happens inside an Arm Cortex-M microcontroller. Specifically, I use the IDE and the various views in the debugger, such as disassembly, registers, memory, variables, call stack, etc. to explain exactly what's happening and also what can go wrong. For example, in the lesson about functions and the stack, I show an example of a stack overflow. (Have you ever seen how an Arm CPU "executes" it's own interrupt table?) In the lesson about stdint.h and mixing integers in expressions I show examples of non-portable code and how it changes behavior between 32-Arm and 16-bit MSP430. In the last lesson about structures I show how Cortex-M3/M4 can handle misaligned data while Cortex-M0 can't, and so on.
I’d love to hear your comments about the course. Is there anything that you would like to see in the upcoming lessons? Do you see anything that you would teach differently? Or perhaps you have ideas for teaching specific subjects? Please share…
[CTAToken URL = "https://www.youtube.com/playlist?list=PLPW8O6W-1chwyTzI3BHwBLbGQoPFxPAPM" target="_blank" text="Watch more lessons" class ="green"]
Since the last post the following two lessons have been added to the course:
In Lesson 15 "Startup Code Part-3" you initialize the custom vector table. You also develop fault-handler code and test it. Finally, you add all interrupt handlers and learn how to alias them such that you can override only the ones that you actually use.
In Lesson 0x10 "Interrupts Part-1" you get a gentle introduction to the subject of interrupts. In this lesson you will learn what interrupts are, and how they work.
In Lesson 17 "Interrupts Part-2" you delve deeper into interrupts. You will see how interrupts work in the MSP430 processor, which will help you to understand how Arm Cortex-M differs from other processors. Specifically, you will see exactly how an interrupt service routine is entered and how it returns.