Does anyone know of an Idiot's Guide to this topic? In particular, how does a processor with no special I/O instructions issue a request, e.g. to a serial output device to output "Hello, World"? And how does Memory-Mapped I/O work in detail? Where is the Memory Map stored? What are the actual contents of Device Memory? And where do AMBA/AXI (or ACE) fit in? (I did say it had to be an Idiot's Guide!)
Thank you, matthijs, for your all-conquering reply! I think we have a major opportunity here! Chris is right, there are examples of the use of MM I/O on other technologies MIPS, M8051, IA32, and even Apple IIe! Problem is, I don't know much about their respective Assembly languages. And, I'm bound to ask, if those guys can all do it, why can't ARM? Most ARM TRM's and Architecture manuals have a section, under "Memory Model", a section on Memory Types and Attributes. This would be an ideal place for a 2-3 page discussion, with ARM examples, on MM I/O, ARM-style. How about it, chaps?