Android System Development Android System Development ©Copyright2004-2019,Bootlin. CreativeCommonsBY-SA3.0license. Latestupdate:February15,2019. Documentupdatesandsources: https://bootlin.com/doc/training/android Corrections,suggestions,contributionsandtranslationsarewelcome! embedded Linux and kernel engineering [email protected] -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 1/444 Rights to copy ©Copyright2004-2019,Bootlin License: CreativeCommonsAttribution-ShareAlike3.0 https://creativecommons.org/licenses/by-sa/3.0/legalcode Youarefree: ▶ tocopy,distribute,display,andperformthework ▶ tomakederivativeworks ▶ tomakecommercialuseofthework Underthefollowingconditions: ▶ Attribution. Youmustgivetheoriginalauthorcredit. ▶ ShareAlike. Ifyoualter,transform,orbuilduponthiswork,youmaydistribute theresultingworkonlyunderalicenseidenticaltothisone. ▶ Foranyreuseordistribution,youmustmakecleartoothersthelicensetermsof thiswork. ▶ Anyoftheseconditionscanbewaivedifyougetpermissionfromthecopyright holder. Yourfairuseandotherrightsareinnowayaffectedbytheabove. Documentsources: https://github.com/bootlin/training-materials/ -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 2/444 Hyperlinks in the document There are many hyperlinks in the document ▶ Regular hyperlinks: https://kernel.org/ ▶ Kernel documentation links: dev-tools/kasan ▶ Links to kernel source files and directories: drivers/input/ include/linux/fb.h ▶ Links to the declarations, definitions and instances of kernel symbols (functions, types, data, structures): platform_get_irq() GFP_KERNEL struct file_operations -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 3/444 Company at a glance ▶ Engineering company created in 2004, named ”Free Electrons” until February 2018. ▶ Locations: Orange, Toulouse, Lyon (France) ▶ Serving customers all around the world ▶ Head count: 13 Only Free Software enthusiasts! ▶ Focus: Embedded Linux, Linux kernel, build systems and low level Free and Open Source Software for embedded and real-time systems. ▶ Activities: development, training, consulting, technical support. ▶ Added value: get the best of the user and development community and the resources it offers. -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 4/444 Bootlin on-line resources ▶ All our training materials and technical presentations: https://bootlin.com/docs/ ▶ Technical blog: https://bootlin.com/blog/ ▶ News and discussions (LinkedIn): https://www.linkedin.com/groups/4501089 ▶ Quick news (Twitter): https://twitter.com/bootlincom ▶ Elixir - browse Linux kernel sources on-line: https://elixir.bootlin.com -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 5/444 Generic course information Generic course information ©Copyright2004-2019,Bootlin. embedded Linux and kernel engineering CreativeCommonsBY-SA3.0license. Corrections,suggestions,contributionsandtranslationsarewelcome! -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 6/444 Hardware used in this training session BeagleBone Black, from CircuitCo ▶ Texas Instruments AM335x (ARM Cortex-A8 CPU) ▶ SoC with 3D acceleration, additional processors (PRUs) and lots of peripherals. ▶ 512 MB of RAM ▶ 4 GB of on-board eMMC storage ▶ Ethernet, USB host and USB device, microSD, micro HDMI ▶ 2 x 46 pins headers, with access to many expansion buses (I2C, SPI, UART and more) ▶ A huge number of expansion boards, called capes. See https://elinux.org/Beagleboard: BeagleBone_Capes. -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 7/444 Course outline - Day 1 Building Android ▶ Introduction to Android ▶ Getting Android sources ▶ Building and booting Android ▶ Introduction to the Linux kernel ▶ Compiling and booting the Linux kernel Labs: download Android sources, compile them and boot them with the Android emulator. Recompile the Linux kernel. -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 8/444 Course outline - Day 2 Android kernel, boot and filesystem details ▶ Android changes to the Linux kernel ▶ Android bootloaders ▶ Booting Android ▶ Using ADB ▶ Android filesystem Labs: customize, compile and boot Android for the BeagleBone Black board. -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 9/444 Course outline - Day 3 Supporting a new product and customizing it ▶ Android build system. Add a new module and product. ▶ Android native layer - Bionic, Toolbox, init, various daemons, Dalvik, hardware abstraction, JNI... Labs: Use ADB, create a new product, customize the product for the BeagleBone Black board. -Kernel,driversandembeddedLinux-Development,consulting,trainingandsupport-https://bootlin.com 10/444
Description: