During school and my career I have had the opportunity to program a number of microcontrollers, microprocessors, ASICs, and FPGAs. In many cases I have found a substantial gap between the documentation provided by manufacturers/vendors and what is actually necessary to get a device functioning like I want it to. The set of links on this page is the beginning of my effort to fill those gaps.
In some cases, the examples I provide are very specific to a certain device, but in others they can be broadly applied to a number of different device types. I've also tried to provide some overviews about the differences between CPUs and GPUs and FPGAs (currently under construction). There are a very limited amount of examples I've published so far, but I plan on turning a very long set of notes into webpages in the near future. So take a look again soon!