Just the other day I was going though my YouTube subscriptions and came across a recommendation for an Embedded Systems Programming course. Off late I had started taking interest in hobby electronics ( Arduino , Stellaris launchpad .et.al ) so the recommendation was quite welcome !
Quite a few lessons had already been delivered so I started catching up.
The first few lessons were pretty typical of an embedded systems programming course. You start with the target board ( in this case the stellaris launchpad ) setup your IDE, and brush up the fundamentals of C programming ( no C is not passé ) . The tutor ( Miro Samek ) also went over some number systems fundamentals ( binary , decimal , hexadecimal ).
Now it was time for the customary blinky program. The “Hello World” of embedded programming and trust me this version of hello world is much more satisfying ! Ah, the thrill of watching an LED blink . By now you must be wondering what is the “rare” insight to gain from all of this ? Hang on we’re almost there.
Unlike most Blinky tutorials on YouTube, Instead of importing a standard header file and writing the LED toggling Logic ( LED on -> DELAY -> LED off -> DELAY ) inside a while loop. Miro started with the datasheet of the microcontroller and then gradually built up to the Blinky program ! I’d leave the explanation to the one who does it best. Below is the youtube video where Miro explains the Blinky program from “scratch”.
The “rare” insight gained from the above video is that, that’s exactly how Memory Mapped I/O happens ! I have read about it a million times but somehow, watching EXACTLY how it happens, makes so much more sense.
Also in his whole video series ( http://www.youtube.com/playlist?list=PLPW8O6W-1chwyTzI3BHwBLbGQoPFxPAPM) he always takes you from the basics and leaves you with a confidence that, given any development board you can find your way around , even if there are no standard header files provided with it ! ( As long as you have the datasheet ).
Overall, a great tutorial ! definitely worth the Time and Effort.