The First Practical, Hands-On Guide to Embedded System Programming for Android
Today, embedded systems programming is a more valuable discipline than ever, driven by fast-growing, new fields such as wearable technology and the Internet of Things. In this concise guide, Roger Ye teaches all the skills you’ll need to write the efficient embedded code necessary to make tomorrow’s Android devices work.
The first title in Addison-Wesley’s new Android™ Deep Dive series for intermediate and expert Android developers, Embedded Programming with Android™ draws on Roger Ye’s extensive experience with advanced projects in telecommunications and mobile devices. Step by step, he guides you through building a system with all the key components Android hardware developers must deliver to manufacturing. By the time you’re done, you’ll have the key programming, compiler, and debugging skills you’ll need for real-world projects.
First, Ye introduces the essentials of bare-metal creating assembly language code that runs directly on hardware. Then, building on this knowledge, he shows how to use C to create hardware interfaces for booting a Linux kernel with the popular U-Boot bootloader. Finally, he walks you through using filesystem images to boot Android and learning to build customized ROMs to support any new Android device. Throughout, Ye provides extensive downloadable code you can run, explore, and adapt.
You will
Build a complete virtualized environment for embedded development Understand the workflow of a modern embedded systems project Develop assembly programs, create binary images, and load and run them in the Android emulator Learn what it takes to bring up a bootloader and operating system Move from assembler to C, and explore Android’s goldfish hardware interfaces Program serial ports, interrupt controllers, real time clocks, and NAND flash controllers Integrate C runtime libraries Support exception handling and timing Use U-Boot to boot the kernel via NOR or NAND flash processes Gain in-depth knowledge for porting U-Boot to new environments Integrate U-Boot and a Linux kernel into an AOSP and CyanogenMod source tree Create your own Android ROM on a virtual Android device
Android is a nearly perfect system to use for small hardware projects. Whether you are a Maker, building a project for Single-board computer or an entrepeneur with a product for the burgeoning IoC market, there couldn't be a better OS than Android. Unfortunately, until now, there has been only one book for developers looking to embed Android on a new device, Karim Yaghmour's excellent "Embedded Android".
Roger Ye's "Embedded Programming with Android" is the perfect prequil. It addresses an incredibly difficult topic: bootstrapping new hardware. The book manages to divide the subject -- intrinsically specific to the particular target tool-chain and hardware -- into several manageable and generalizable steps. The hands-on exercises make clever use of Android's QEMU emulator and lay out the process of taking hardware from bare metal, to running bootloader.
Make no mistake, bringing up new hardware is not for the faint of heart. This is not a beginner's book. Even an experienced developer with some experience programming close to hardware will have to use some ingenuity to work through the exercises. Working through them, however is a huge step towards porting Android to your own board.
Roger Ye has taken a unique approach to teaching bare metal programming. Using an emulator, he enables easy access, uniformity, reliability, and low cost instruction of an important topic. Whether you are learning this subject on your own, or teaching a classroom full of students, Roger's approach has unique advantages.