Now that you have a good handle on Android’s build system, the next step is to incrementally explore how the built images are used on the target. To best accomplish that, we must step back and look at the hardware configurations Android is typically run on. Indeed, while Android can be made to run on a wide variety of embedded systems, it remains deeply rooted in the world of consumer electronics and, most notably, handsets.
We’re going to start by going over the typical system architecture of a hardware platform made for running Android. We’ll then discuss the architecture of a typical SoC and provide an overview of some of the more notable SoCs out there used to run Android. We’ll also cover the difference between virtual and physical address spaces, the typical host-target debug setup, and finish the chapter with a list of evaluation boards that you could use to prototype your embedded Android system and/or use to learn the trade.
As we discussed in Chapter 1, Android should run on any hardware that runs Linux. Android, however, wasn’t built in a vacuum. It was originally designed for handsets, and its current architecture still reflects that. Figure 5-1 illustrates the architecture block diagram of a prototypical embedded system made to run Android. Your actual target will likely differ, possibly greatly, from the one I illustrate. But for the sake of discussion, this diagram should be good enough.