0
Porting Application, Drivers and OS Prashant Zaveri Android hardware Architect Holland9
Objective <ul><li>Brief over view of OS available for mobile </li></ul><ul><li>Porting Android </li></ul><ul><li>Kernel Pa...
Overview of OS for Mobiles <ul><li>Iphone/Blackberry </li></ul><ul><li>Windows Phone 7 </li></ul><ul><li>Symbian </li></ul...
Iphone/Blacberry <ul><li>Proprietary </li></ul><ul><li>Forget it …Get lost </li></ul>
Windows Mobile <ul><li>New platform …Just started…7 </li></ul><ul><li>At mercy of Microsoft </li></ul><ul><li>Cool but cos...
Symbian OS <ul><li>Leading OS in number of units  </li></ul><ul><li>Still of last decade </li></ul><ul><li>Very difficult ...
Android <ul><li>Completely free </li></ul><ul><li>Development done by Google </li></ul><ul><li>Freedom to innovate </li></ul>
Android architecture
Porting Android <ul><li>Android Architecture </li></ul><ul><li>Android Kernel </li></ul><ul><li>Android Toolchain </li></u...
Android kernel <ul><li>Android relies on Linux version 2.6 for core system services such as security, memory management, p...
Why Linux ? <ul><li>Android needed an open source kernel to build upon. </li></ul><ul><li>Linux is already open source. </...
Android kernel patch <ul><li>IPC Binder  </li></ul><ul><li>Low memory killer </li></ul><ul><li>Asynchronous shared memory ...
Linux Kerenl patch by version
Android Toolchain <ul><li>Android-toolchain-20081019 </li></ul><ul><li>gcc 4.2.1/ binutils 2.17/ gdb 6.6 </li></ul><ul><li...
Native libraries <ul><li>Bionic LibC </li></ul><ul><li>Functional libraries </li></ul><ul><li>Native servers </li></ul>
Bionic <ul><li>What is Bionic ? </li></ul><ul><li>Custom libc implementation optimized for embedded. </li></ul><ul><li>Why...
Functional libraries <ul><li>Libraries which perform essential part of system functionality </li></ul><ul><li>Webkit </li>...
Media framework <ul><li>Android media framework is based on Packet Video’s OpenCORE framework </li></ul><ul><li>It support...
Media framework architecture
Hardware Abstraction Layer <ul><li>Why is HAL layer needed in Android ? </li></ul><ul><li>Seperates the Android platform l...
Android Runtime <ul><li>Android’s custom clean room implementation virtual machine </li></ul><ul><li>Provides application ...
Application Framework <ul><li>Core platform services that are essential to Android </li></ul><ul><li>Most of them run behi...
Platform Initialization
Building the Android runtime <ul><li>General Procedure </li></ul><ul><li>Get the code </li></ul><ul><li>Build it </li></ul...
Building the Android runtime <ul><li>The code </li></ul><ul><li>2.1 gb of git tree </li></ul><ul><li>#repo init –u git://a...
Building the Android runtime <ul><li>Build products </li></ul><ul><li>Userdata.img </li></ul><ul><li>System.img </li></ul>...
Application Developers
Platform Developer
Hardware Developers
Architecture Porting
Thank You Prashant Zaveri [email_address] Mobile Developer Conference  by MoMoB http://momob.in
Upcoming SlideShare
Loading in...5
×

Portinig Application, Drivers And Os

5,149

Published on

2 Comments
9 Likes
Statistics
Notes
No Downloads
Views
Total Views
5,149
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
565
Comments
2
Likes
9
Embeds 0
No embeds

No notes for slide

Transcript of "Portinig Application, Drivers And Os"

  1. 1. Porting Application, Drivers and OS Prashant Zaveri Android hardware Architect Holland9
  2. 2. Objective <ul><li>Brief over view of OS available for mobile </li></ul><ul><li>Porting Android </li></ul><ul><li>Kernel Patch </li></ul><ul><li>HAL </li></ul><ul><li>Adding custom application </li></ul><ul><li>Conclusion </li></ul>
  3. 3. Overview of OS for Mobiles <ul><li>Iphone/Blackberry </li></ul><ul><li>Windows Phone 7 </li></ul><ul><li>Symbian </li></ul><ul><li>Android </li></ul><ul><li>Custom/properitary </li></ul>
  4. 4. Iphone/Blacberry <ul><li>Proprietary </li></ul><ul><li>Forget it …Get lost </li></ul>
  5. 5. Windows Mobile <ul><li>New platform …Just started…7 </li></ul><ul><li>At mercy of Microsoft </li></ul><ul><li>Cool but costly </li></ul>
  6. 6. Symbian OS <ul><li>Leading OS in number of units </li></ul><ul><li>Still of last decade </li></ul><ul><li>Very difficult to innovate </li></ul><ul><li>Finally free..but how much !!! </li></ul><ul><li>Will keep a watch on this </li></ul>
  7. 7. Android <ul><li>Completely free </li></ul><ul><li>Development done by Google </li></ul><ul><li>Freedom to innovate </li></ul>
  8. 8. Android architecture
  9. 9. Porting Android <ul><li>Android Architecture </li></ul><ul><li>Android Kernel </li></ul><ul><li>Android Toolchain </li></ul><ul><li>Native libraries </li></ul><ul><li>HAL Hardware Abstraction Layer </li></ul><ul><li>Initialization </li></ul><ul><li>Building the Android runtime </li></ul>
  10. 10. Android kernel <ul><li>Android relies on Linux version 2.6 for core system services such as security, memory management, process management, network stack, and driver model </li></ul><ul><li>The kernel also acts as an abstraction layer between the hardware and the rest of the software stack. </li></ul><ul><li>It comes up with several patch for “kernel enhancement” to support Android. </li></ul>
  11. 11. Why Linux ? <ul><li>Android needed an open source kernel to build upon. </li></ul><ul><li>Linux is already open source. </li></ul><ul><li>Very good memory and process management </li></ul><ul><li>Good driver model </li></ul><ul><li>Support for shared libraries </li></ul><ul><li>Permission based security model </li></ul>
  12. 12. Android kernel patch <ul><li>IPC Binder </li></ul><ul><li>Low memory killer </li></ul><ul><li>Asynchronous shared memory (Ashmem) </li></ul><ul><li>Logger </li></ul><ul><li>Power management </li></ul><ul><li>Android debug bridge (ADB) </li></ul><ul><li>Hardware specific driver </li></ul>
  13. 13. Linux Kerenl patch by version
  14. 14. Android Toolchain <ul><li>Android-toolchain-20081019 </li></ul><ul><li>gcc 4.2.1/ binutils 2.17/ gdb 6.6 </li></ul><ul><li>ARMV5te+ </li></ul><ul><li>-- with-float =soft </li></ul><ul><li>--with= fpu-vfp </li></ul><ul><li>--enable-threads </li></ul>
  15. 15. Native libraries <ul><li>Bionic LibC </li></ul><ul><li>Functional libraries </li></ul><ul><li>Native servers </li></ul>
  16. 16. Bionic <ul><li>What is Bionic ? </li></ul><ul><li>Custom libc implementation optimized for embedded. </li></ul><ul><li>Why Bionic ? </li></ul><ul><li>To keep code in control and keep GPL out of user space </li></ul><ul><li>To keep small foot print </li></ul><ul><li>To keep it fast for embedded processors </li></ul>
  17. 17. Functional libraries <ul><li>Libraries which perform essential part of system functionality </li></ul><ul><li>Webkit </li></ul><ul><li>OpenGL/ES </li></ul><ul><li>SQLite </li></ul><ul><li>SGL </li></ul><ul><li>Freetype </li></ul>
  18. 18. Media framework <ul><li>Android media framework is based on Packet Video’s OpenCORE framework </li></ul><ul><li>It supports standard formats for Audio/Video and still images </li></ul><ul><li>It has got pluggable architecture for hardware/software codes using OpenMAX IL interface </li></ul><ul><li>Media playback, streaming, downloading </li></ul><ul><li>Also support speech codec </li></ul><ul><li>OpenMAX standard compliant </li></ul>
  19. 19. Media framework architecture
  20. 20. Hardware Abstraction Layer <ul><li>Why is HAL layer needed in Android ? </li></ul><ul><li>Seperates the Android platform logic from hardware interface </li></ul><ul><li>Defines the interface that Android driver requires hardware “drivers” to implement </li></ul>
  21. 21. Android Runtime <ul><li>Android’s custom clean room implementation virtual machine </li></ul><ul><li>Provides application portability and runtime consistency </li></ul><ul><li>Runs optimized file format (.dex) and Dalvik bytecode </li></ul><ul><li>Java .class/.jar file converted to .dex at build time </li></ul>
  22. 22. Application Framework <ul><li>Core platform services that are essential to Android </li></ul><ul><li>Most of them run behind scenes where application don’t access them directly </li></ul>
  23. 23. Platform Initialization
  24. 24. Building the Android runtime <ul><li>General Procedure </li></ul><ul><li>Get the code </li></ul><ul><li>Build it </li></ul><ul><li>Install it </li></ul><ul><li> </li></ul><ul><li>http://surce.android.com </li></ul>
  25. 25. Building the Android runtime <ul><li>The code </li></ul><ul><li>2.1 gb of git tree </li></ul><ul><li>#repo init –u git://android.git.kernel.org/platform/manifest.git </li></ul><ul><li># repo sync </li></ul><ul><li>… .. tweaks….modifications…. </li></ul><ul><li>Make <target> </li></ul>
  26. 26. Building the Android runtime <ul><li>Build products </li></ul><ul><li>Userdata.img </li></ul><ul><li>System.img </li></ul><ul><li>Ramdisk.img </li></ul><ul><li>Kernel.img </li></ul><ul><li>Run it and Android is running </li></ul>
  27. 27. Application Developers
  28. 28. Platform Developer
  29. 29. Hardware Developers
  30. 30. Architecture Porting
  31. 31. Thank You Prashant Zaveri [email_address] Mobile Developer Conference by MoMoB http://momob.in
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×