Embedded Programming with Android

Bringing Up an Android System from Scratch

Specificaties
E-book, blz. | Engels
Pearson Education | e druk, 2015
ISBN13: 9780134030913
Rubricering
Juridisch :
Pearson Education e druk, 2015 9780134030913
Onderdeel van serie Android Deep Dive
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

This book begins with basic embedded programming. Ye demonstrates bare metal programming and debugging. Then, he shifts to applying that knowledge to "bringing up" U-boot and Android. That is, how to start from a generic set of source code that does not run on any hardware (or on any emulator) and then through the needed hardware-specific code to provide a low-level interface to the emulated hardware.

The full text downloaded to your computer

With eBooks you can: search for key concepts, words and phrases make highlights and notes as you study share your notes with friends

eBooks are downloaded to your computer and accessible either offline through the Bookshelf (available as a free download), available online and also via the iPad and Android apps.

Upon purchase, you will receive via email the code and instructions on how to access this product.

Time limit

The eBooks products do not have an expiry date. You will continue to access your digital ebook products whilst you have your Bookshelf installed.

Specificaties

ISBN13:9780134030913
Taal:Engels
Bindwijze:e-book

Inhoudsopgave

<p style="margin:0px;"></p> <p style="margin:0px;" msonormal"="">Preface&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;xv</p> <p style="margin:0px;">Acknowledgments &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xxi</p> <p style="margin:0px;">About the Author &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;xxiii</p> <p style="margin:0px;"></p> <p style="margin:0px;" msonormal"="">&nbsp;</p> <p style="margin:0px;"></p> <p style="margin:0px;" msonormal"="">Part I: Bare Metal Programming &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1</p> <p style="margin:0px;">Chapter 1: Introduction to Embedded System Programming &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3</p> <p style="margin:0px;"></p> <p style="margin:0px;" msonormal"="">What Is an Embedded System? &nbsp;&nbsp;3</p> <p style="margin:0px;">Bare Metal Programming &nbsp;&nbsp;3</p> <p style="margin:0px;">Learning Embedded System Programming &nbsp;&nbsp;5</p> <p style="margin:0px;">Software Layers in an Embedded System &nbsp;&nbsp;7</p> <p style="margin:0px;">Tools and Hardware Platform &nbsp;&nbsp;11</p> <p style="margin:0px;">The Difference between Virtual Hardware and Real Hardware&nbsp; &nbsp;11</p> <p style="margin:0px;">Summary &nbsp;&nbsp;12</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Chapter 2: Inside Android Emulator &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;13</p> <p style="margin:0px;">Overview of the Virtual Hardware &nbsp;&nbsp;13</p> <p style="margin:0px;">Configuring Android Virtual Devices &nbsp;&nbsp;14</p> <p style="margin:0px;">Hardware Interfaces &nbsp;&nbsp;17</p> <p style="margin:0px;">Serial &nbsp;&nbsp;18</p> <p style="margin:0px;">Timer&nbsp; &nbsp;18</p> <p style="margin:0px;">Summary &nbsp;&nbsp;24</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Chapter 3: Setting Up the Development Environment &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25</p> <p style="margin:0px;">The Host and Client Environments &nbsp;&nbsp;25</p> <p style="margin:0px;">Development Environment Setup &nbsp;&nbsp;26</p> <p style="margin:0px;">Downloading and Installing Android SDK &nbsp;&nbsp;27</p> <p style="margin:0px;">Downloading and Installing the GNU Toolchain for ARM &nbsp;&nbsp;27</p> <p style="margin:0px;">Integrated Development Environment &nbsp;&nbsp;29</p> <p style="margin:0px;">Your First ARM Program &nbsp;&nbsp;29</p> <p style="margin:0px;">Building the Binary &nbsp;&nbsp;30</p> <p style="margin:0px;">Running in the Android Emulator &nbsp;&nbsp;32</p> <p style="margin:0px;">makefile for the Example Projects &nbsp;&nbsp;36</p> <p style="margin:0px;">Summary &nbsp;&nbsp;38</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;">Chapter 4: Linker Script and Memory Map&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;39</p> <p style="margin:0px;">Memory Map&nbsp; &nbsp;39</p> <p style="margin:0px;">Linker &nbsp;&nbsp;41</p> <p style="margin:0px;">Linker Script&nbsp; &nbsp;51</p> <p style="margin:0px;">Linker Script Example 53</p> <p style="margin:0px;">Initializing Data in RAM &nbsp;&nbsp;56</p> <p style="margin:0px;">Summary &nbsp;&nbsp;61</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Chapter 5: Using the C Language &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;63</p> <p style="margin:0px;">C Startup in a Bare Metal Environment &nbsp;&nbsp;63</p> <p style="margin:0px;">Calling Convention &nbsp;&nbsp;78</p> <p style="margin:0px;">Goldfish Serial Port Support &nbsp;&nbsp;81</p> <p style="margin:0px;">Summary &nbsp;&nbsp;92</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Chapter 6: Using the C Library &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;93</p> <p style="margin:0px;">C Library Variants &nbsp;&nbsp;93</p> <p style="margin:0px;">Newlib C Library &nbsp;&nbsp;96</p> <p style="margin:0px;">Common Startup Code Sequence &nbsp;&nbsp;97</p> <p style="margin:0px;">CS3 Linker Scripts &nbsp;&nbsp;97</p> <p style="margin:0px;">Customized CS3 Startup Code for the Goldfish Platform &nbsp;&nbsp;103</p> <p style="margin:0px;">System Call Implementations &nbsp;&nbsp;104</p> <p style="margin:0px;">Running and Debugging the Library &nbsp;&nbsp;112</p> <p style="margin:0px;">Using Newlib with QEMU ARM Semihosting &nbsp;&nbsp;116</p> <p style="margin:0px;">Summary &nbsp;&nbsp;122</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Chapter 7: Exception Handling and Timer &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;125</p> <p style="margin:0px;">Goldfish Interrupt Controller &nbsp;&nbsp;125</p> <p style="margin:0px;">The Simplest Interrupt Handler &nbsp;&nbsp;128</p> <p style="margin:0px;">Nested Interrupt Handler &nbsp;&nbsp;140</p> <p style="margin:0px;">Testing System Calls/Software Interrupts &nbsp;&nbsp;163</p> <p style="margin:0px;">Timer &nbsp;&nbsp;164</p> <p style="margin:0px;">Real-Time Clock &nbsp;&nbsp;172</p> <p style="margin:0px;">Summary &nbsp;&nbsp;181</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Chapter 8: NAND Flash Support in Goldfish &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;183</p> <p style="margin:0px;">Android File System&nbsp; &nbsp;183</p> <p style="margin:0px;">NAND Flash Properties &nbsp;&nbsp;185</p> <p style="margin:0px;">NAND Flash Programming Interface in the Goldfish Platform&nbsp; &nbsp;187</p> <p style="margin:0px;">Memory Technology Device Support &nbsp;&nbsp;188</p> <p style="margin:0px;">MTD API &nbsp;&nbsp;189</p> <p style="margin:0px;">NAND Flash Programming Interface Test Program&nbsp; &nbsp;206</p> <p style="margin:0px;">Summary&nbsp; &nbsp;216</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"=""></p> <p style="margin:0px;">Part II: U-Boot &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;217</p> <p style="margin:0px;">Chapter 9: U-Boot Porting&nbsp; &nbsp;219</p> <p style="margin:0px;"></p> <p style="margin:0px;" msonormal"="">Introducing U-Boot &nbsp;&nbsp;219</p> <p style="margin:0px;">Downloading and Compiling U-Boot&nbsp; &nbsp;220</p> <p style="margin:0px;">Debugging U-Boot with GDB&nbsp; &nbsp;224</p> <p style="margin:0px;">Porting U-Boot to the Goldfish Platform&nbsp;&nbsp; 227</p> <p style="margin:0px;">Summary&nbsp; &nbsp;246</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Chapter 10: Using U-Boot to Boot the Goldfish Kernel &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;249</p> <p style="margin:0px;">Building the Goldfish Kernel &nbsp;&nbsp;249</p> <p style="margin:0px;">Prebuilt Toolchain and Kernel Source Code &nbsp;&nbsp;250</p> <p style="margin:0px;">Running and Debugging the Kernel in the Emulator &nbsp;&nbsp;252</p> <p style="margin:0px;">Booting Android from NOR Flash &nbsp;&nbsp;254</p> <p style="margin:0px;">Booting Android from NAND Flash &nbsp;&nbsp;270</p> <p style="margin:0px;">Summary &nbsp;&nbsp;280</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"=""></p> <p style="margin:0px;">Part III: Android System Integration &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;281</p> <p style="margin:0px;">Chapter 11: Building Your Own AOSP and CyanogenMod &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;283</p> <p style="margin:0px;"></p> <p style="margin:0px;" msonormal"="">Introducing AOSP and CyanogenMod &nbsp;&nbsp;283</p> <p style="margin:0px;">Setting Up an Android Virtual Device &nbsp;&nbsp;284</p> <p style="margin:0px;">AOSP Android Emulator Build &nbsp;&nbsp;288</p> <p style="margin:0px;">CyanogenMod Android Emulator Build &nbsp;&nbsp;297</p> <p style="margin:0px;">Summary &nbsp;&nbsp;307</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Chapter 12: Customizing Android and Creating Your Own Android ROM &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;309</p> <p style="margin:0px;">Supporting New Hardware in AOSP &nbsp;&nbsp;309</p> <p style="margin:0px;">Supporting New Hardware in CyanogenMod &nbsp;&nbsp;332</p> <p style="margin:0px;">Summary &nbsp;&nbsp;338</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"=""></p> <p style="margin:0px;">Part IV: Appendixes &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;339</p> <p style="margin:0px;">Appendix A: Building the Source Code for This Book &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;341</p> <p style="margin:0px;"></p> <p style="margin:0px;" msonormal"="">Setting Up the Build Environment &nbsp;&nbsp;341</p> <p style="margin:0px;">Setting Up a Virtual Machine &nbsp;&nbsp;344</p> <p style="margin:0px;">Organization of Source Code &nbsp;&nbsp;344</p> <p style="margin:0px;">Source Code for Part I &nbsp;&nbsp;345</p> <p style="margin:0px;">Source Code for Part II &nbsp;&nbsp;350</p> <p style="margin:0px;">Source Code for Part III &nbsp;&nbsp;352</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Appendix B: Using Repo in This Book &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;355</p> <p style="margin:0px;">Resources for Repo &nbsp;&nbsp;355</p> <p style="margin:0px;">Syncing a New Source Tree In Minutes &nbsp;&nbsp;355</p> <p style="margin:0px;">Downloading Git Repositories Using Local Manifest &nbsp;&nbsp;356</p> <p style="margin:0px;">&nbsp;</p> <p style="margin:0px;" msonormal"="">Index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;359</p> <p style="margin:0px;">&nbsp;</p>

Net verschenen

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Embedded Programming with Android