I believe that this group could be interested in the Embedded C Programming Course on YouTube, which I just started to teach (my New Year's resolution for 2013). The playlist for this course is available at:
The course is intended for beginners and is structured as a series of short , focused, hands-on lessons that teach you how to program ARM Cortex-M micr ocontrollers in C.
I've designed this course not just to be watched, but to follow it along on your own computer. In the "Getting Started" Lesson 0, I show you how to do wnload and install the free evaluation version of IAR EWARM and how to orde r the Stellaris Launchpad ARM Cortex-M4 board (for just $12.99). The board is optional, as I show how to use the instruction set simulator.
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 a nd show you exactly what happens inside the ARM processor.
Starting from Lesson 1 you actually see how the ARM Cortex-M processor exec utes your code, how it manipulates registers, and how it counts. You learn how binary numbers map to the hexadecimal system used in the debugger (and in C) and you learn about the two's complement number representation of sig ned numbers.
In lesson 2, you learn about the flow of control and the ARM branch instruc tions. Actually, you witness a disection of the ARM B-instruction (branch). You also learn about the pipeline and pipeline stalls due to branching.
In lesson 3, you learn about variables and pointers. You learn how ARM acce sses variables in memory through the load and store instructions (load-stor e architecture). You also learn how the fundamental concept of memory addre sses maps to pointers in C, how to obtain an address of a variable and how to dereference a pointer.
I hope that this course will help you gain understanding of the ARM Cortex- M core, which will look really good on your resume.
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 state ments translate to machine instructions and how fast the processor can exec ute them.
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 wo uld teach differently? Or perhaps you have some ideas how to teach specific subjects and make them more accessible? Please share...