I admit this may have had the effect on me because the NES had a special place in my childhood.
You build up a computer from simulated logic gates, constructing the ALU, CPU, Ram, I/O etc. The opcodes are comparable to those in the CPUs you mentioned, but you have the added benefit of the magic that occurs when it is able to process those opcodes. The best part is, thanks to the courses exceptional guidance and streamlining, it only takes about half a day or so to get it to that point.
After that you can follow the rest of the course to making a compiler, etc. Or you could move to an NES emulator as you mentioned. The nand2tetris halfway mark would also be a good jumping point for the principles, compiler, and RISC equipment mentioned in the OP's course.
In the old days the only peripherals were timers and ADCs. You could make a generic and useful tutorial for those. Not anymore!
I figured by skipping AC I might miss a huge part of the picture.
[pdf] https://web.wpi.edu/Pubs/ETD/Available/etd-042811-095908/unr...
Over the period of being the TA for these courses multiple times, I learned a great deal, but also noticed several recurring issues the students seemed to face. In addition to furthering my own knowledge on the care and feeding of microcontrollers, this thesis is an attempt to provide students with a resource to overcome some of their difficulties, to provide a better understanding of the hardware level operation of a microcontroller, and as instruction into improving their knowledge and code.
edit: in addition, for really low level hardware, check out Ben Eater's series on YouTube building a breadboard 6502
In just a few days, I learned a lot about:
- Memory allocation
- Image encoding
- Bluetooth
- Drivers
I recommend it to anyone interested in learning embedded systems programming.