The course is intended for newcomers to the embedded software field and is structured as a series of short, focused, hands-on lessons that teach you how to program embedded micro-controllers in the C programming language. But the goal is not just to teach you C—other courses and books 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 embedded processor.
So, starting from lesson-one you will actually see how the ARM Cortex-M processor executes your code, how it manipulates registers, and how a computer can "do" things in the real world, such as turn on and off an LED.
This deeper understanding will allow you to use the C language more efficiently and with greater confidence. You will gain understanding not just what your program does, but also how the C statements translate to machine instructions and get a sense for how fast the processor can execute them. Also, you will get some familiarity with the ARM Cortex-M core, which will look really good on your resume.
The following table provides links to useful resources about the development toolsets and the board used in the course.
| ARM-KEIL MDK (Microcontroller Development Kit)
(scroll down to MDK Editions and choose the MDK-Lite, size-limited evaluation)
The ARM-KEIL MDK is used staring from Lesson 21.
| TI Code Composer Studio
(choose the Windows version and make sure to select the ARM GCC compiler during installation)
The CCS toolset and GNU-ARM compiler is used staring from Lesson 19.
| IAR Embedded Workbench for ARM
(choose Kickstart, size-limited evaluation)
The IAR toolset is used up to Lesson 18.
| LM-FLASH programmer
(click on "Get Software" to download the flash programmer for your TivaC LaunchPad).
The LM-FLASH tool can be used to recover an unresponsive TivaC Lauchpad board. To recover the board, launch lmflash, click on the "Other Utilities" tab at the top, and select "Debug Port Unlock, Fury, DustDevil, TM4C123 and TM4C129" radio button. Click on the "Unlock" button and follow the instructions.
| Troubleshooting TivaC LaunchPad
(fixing common problems with TivaC LaunchPad and related software)
| Tiva TM4C123GXL LaunchPad User Manual
(applies also for Stellaris EK-LM4F120XL LaunchPad)
| Tiva TM4C123GH6PM Data Sheet
(also applies to LM4F120H5QR)
| Tiva/Stellaris In-Circuit ICDI Manual
(USB drivers installation instructions)
The following table lists all lessons released so far together with the accompanying notes (transcripts) and project files. The complete Playlist of this course is available on YouTube.
|Running Time||Video Title (watch on YouTube)||Notes||Project||Video Download|
|9:17||Lesson 0: Getting Started||notes0|
|17:06||Lesson 1: Counting||notes1||lesson1|
|11:00||Lesson 2: Flow of Control||notes2||lesson2|
|12:23||Lesson 3: Variables and Pointers||notes3||lesson3|
|16:45||Lesson 4: Blinking the LED||notes4||lesson4|
|14:30||Lesson 5: Preprocessor and volatile||notes5||lesson5|
|17:06||Lesson 6: Bit-wise operators in C||notes6||lesson6|
|15:22||Lesson 7: Arrays and Pointer Arithmetic||notes7||lesson7|
|17:06||Lesson 8: Functions and the Stack||notes8||lesson8|
|19:08||Lesson 9: Modules, Recursion, AAPCS||notes9||lesson9|
|27:42||Lesson 10: Stack Overflow and Other Pitfalls of Functions||notes10||lesson10|
|28:34||Lesson 11: <stdint.h>, Endianness, Mixing Types in Expressions||notes11||lesson11|
|32:11||Lesson 12: Structures and CMSIS||notes12||lesson12|
|23:27||Lesson 13: Startup Code Part-1||notes13||lesson13|
|25:44||Lesson 14: Startup Code Part-2||notes14||lesson14|
|27:35||Lesson 15: Startup Code Part-3||notes15||lesson15|
|15:59||Lesson 0x10: Interrupts Part-1||notes16||lesson16||video16|
|19:52||Lesson 17: Interrupts Part-2||notes17||lesson17||video17|
|15:28||Lesson 18: Interrupts Part-3||notes18||lesson18||video18|
|22:19||Lesson 19: GNU-ARM and Eclipse||notes19|| lesson19
|16:58||Lesson 20: Race Conditions||notes20||lesson20||video20|
|18:37||Lesson 21: Foreground Background Systems||notes21|| lesson21
|23:26||Lesson 22: RTOS part-1||notes22|| lesson22
|37:36||Lesson 23: RTOS part-2||notes23|| lesson23
|19:15||Lesson 24: RTOS part-3||notes24|| lesson24
|25:35||Lesson 25: RTOS part-4||notes25|| lesson25
|29:31||Lesson 26: RTOS part-5||notes26|| lesson26
|43:03||Lesson 27: RTOS part-6||notes27|| lesson27
|Turkish||Gömülü Sistemler Programlama Dersleri|