The most widely deployed mobile virtualization solution
The constraints imposed on the design can be summarised as:
Clearly, these requirements taken together can only be met using virtualization: Linux had to run (de-privileged) in a virtual machine (VM), with the baseband stack and BREW running in a different VM. And all this needed to be achieved with excellent performance in order to provide a good user experience.
However, the virtualization approach once faced much scepticism. I remember many discussions with actual or potential customers, who would doubt that an ARM9 core could provide enough grunt for a Linux-based UI, even when running Linux on a core of its own, let alone virtualized. The main reason is that the ARM9 has virtually-addressed caches and lacks an address-space ID (ASID) tag in the translation lookaside buffer (TLB). As a consequence, Linux (like most other OSes) on ARM9 flushes TLBs and caches on each context switch. This leads to poor performance on context-switch intensive workloads, such as a touchscreen-based UI.
Build Secure Smartphones for the Enterprise
Learn How to Build a More Secure Smartphone
Build Mass-Market Smartphones with Mobile Virtualization
SecureIT Mobile Government White Paper (Chinese Version)
SecureIT Mobile Enterprise (Chinese Version)
Energy Management
Build a Smartphone for the Mass-Market (Korean Version)
The NirvanaPhone Concept Specification and Reference Architeture
Motorola Evoke Teardown
seL4: Formal Verification of an OS Kernel
Automatic Device Driver Synthesis with Termite
The Motorola Evoke QA4 - A Case Study in Mobile Virtualization
Android Migration at the Speed of Light
Virtualization and Componentization in Embedded Systems
Virtualization for Embedded Systems
Role of Virtualization in Embedded Systems
Your System is Secure? Prove it!
Towards Trustworthy Computing Systems: Taking Microkernels to the Next Level
Secure Embedded Systems Need Microkernels