View the site in Français View the site in English (USA) Site displayed in English (GB)
You are here: ac6 > ac6-formation > Linux > Porting Android
Download Catalog
Download Catalog
Download as PDF
Download as PDF
Write us
Write us
Printable version
Printable version
 

G1 Porting Android

Android installation and port on a hardware platform

Android installation and port on a hardware platform

formateur
Objectives
bullet_jaune_1 Understanding the specifics of the Android system.
bullet_jaune_1 Knowing the use of GIT manager version to download sources.
bullet_jaune_1 Learn how to install Linux on your hardware and create a BSP
bullet_jaune_1 Learn to configure and compile the Linux kernel for Android.
bullet_jaune_1 How to configure and compile the Android sources to get a working system.
bullet_jaune_1 Control the operation of the Android emulator.
bullet_jaune_1 Understand how to test an Android image before flashing the system.
bullet_jaune_1 Detail the different flash file system image generation procedures.
Labs are conducted on target boards:
    Dual Cortex/A9-based "SnowBall" boards from ST-Ericsson, with Lauterbach JTAG probes.
We use the last linux open source version of Android, as delivered by Google.
Course environment
bullet_jaune_2 Printed course material (in English).
bullet_jaune_2 One Linux PC for two trainees.
bullet_jaune_2 One target platform for two trainees.
bullet_jaune_2 Lauterbach JTAG probe for debug.
bullet_jaune_2 Documentation and exercice solutions on CDROM.
Prerequisite
bullet_jaune_2 User-mode Linux usage

Outline
First Day
Android overview
bullet_jaune_2 Linux
bullet_jaune_3 History
bullet_jaune_3 Version management
bullet_jaune_2 Android
bullet_jaune_3 History
bullet_jaune_3 The Open Handset Alliance
bullet_jaune_3 Existing ports (HTC Dream, Magic...)
bullet_jaune_2 The various licenses used by Android (GPL, LGPL, etc.)
Cross-development
bullet_jaune_2 The EABI specification
bullet_jaune_3 Differences between the EABI and OABI
bullet_jaune_3 Standard toolchains or specific toolchains
bullet_jaune_3 Building a standard toolchain (crosstool-ng or buildroot)
bullet_jaune_2 The Android toolchain
Exercice : Building an EABI toolchain
The GIT distributed source management system
bullet_jaune_2 Installation aud general usage.
bullet_jaune_3 Creating and using a local repository
bullet_jaune_3 Connecting to a remote repository
Exercice : Managing several versions of a program with GIT
bullet_jaune_2 Working with branches
bullet_jaune_3 Creation of a new branch
bullet_jaune_3 Merging branches
Exercice : Working with vendor branches
bullet_jaune_2 Team functions
bullet_jaune_3 Creating configuring and managing a public repository
bullet_jaune_3 Working with patches
Exercice : Creating a shared project repository
Second Day
The Android Linux kernel
bullet_jaune_2 Downloading source code
bullet_jaune_2 The Android-specific drivers for kernels 2.6.29 and beyond
bullet_jaune_3 Binder
bullet_jaune_3 Logger
bullet_jaune_3 Low_memory_killer
bullet_jaune_3 Timer_gpio
bullet_jaune_3 Timed_output
bullet_jaune_2 Configuring an Android Linux kernel
bullet_jaune_2 Building the kernel
Exercice : Configuration and build of the Android kernel for the target board
Exercice : Checking the first phases of kernel boot
The Linux BSP
bullet_jaune_2 Linux BSP architecture
bullet_jaune_3 Overall structure
bullet_jaune_3 The ARM BSP
bullet_jaune_3 The Linux build system
bullet_jaune_2 Defining and initializing the board
bullet_jaune_2 Android specifics
bullet_jaune_3 Standard Android button management
bullet_jaune_2 The Linux driver model
bullet_jaune_3 Kernel objects
bullet_jaune_3 Devices
bullet_jaune_3 Hotplug events
Embedded file systems
bullet_jaune_2 Flash memories and Linux MTDs
bullet_jaune_2 The various filesystem formats
bullet_jaune_3 JFFS2, UBIFS, YAFFS2
bullet_jaune_3 Differences between JFFS2 and YAFFS2
bullet_jaune_3 Patching the Linux kernel
bullet_jaune_3 The unyaffs tool
Exercice : Building JFFS2 and YAFFS2 filesystems
bullet_jaune_2 Ramdisks and initrd
Exercice : Building an Android initrd
Third Day
Booting Android
bullet_jaune_2 The various kinds of boot
bullet_jaune_2 U-Boot
bullet_jaune_3 Configuration and build
bullet_jaune_3 Porting U-Boot
bullet_jaune_2 RedBoot
bullet_jaune_2 Le Linux boot process
bullet_jaune_2 The Android boot sequence
The Android System
bullet_jaune_2 Downloading sources
bullet_jaune_2 Exploring the Android system
bullet_jaune_2 The Android source tree
bullet_jaune_3 The Bionic library
bullet_jaune_3 The Dalvik Jave virtual machine
bullet_jaune_3 The basic packages
bullet_jaune_2 Building the Android system
Exercice : Compiling the full Android system
bullet_jaune_2 The Android initialisation language
Exercice : Modifying the Android init sequence
Fourth Day
The Android BSP
bullet_jaune_2 The Android build system
bullet_jaune_3 The Android.mk files
bullet_jaune_2 Creating a new Android platform
bullet_jaune_3 Declaring a new vendor
bullet_jaune_3 Creation of platform-specific parameter files
bullet_jaune_3 Choosing platform-dependent compilation options
Exercice : Compiling a new Android platform
bullet_jaune_2 Adding native components
bullet_jaune_3 Defining Java methods in C++
bullet_jaune_3 The Android NDK
bullet_jaune_3 JNI for Android
bullet_jaune_3 Using SWIG
bullet_jaune_2 The Android binder
bullet_jaune_3 Writing services in C++
bullet_jaune_3 The binder's C++ interface
Exercice : Recompiling a single component
The Android SDK
bullet_jaune_2 Overview and installation of the Software Development Kit (SDK)
bullet_jaune_2 The Android Virtual Devices
bullet_jaune_3 Creation
bullet_jaune_3 Configuration
bullet_jaune_3 Basic Use
bullet_jaune_2 The Eclipse Android Development Toolset (ADT)
bullet_jaune_3 Developping and testing and Android application
bullet_jaune_3 Deploying Android Applications
bullet_jaune_2 The Android Debug Bridge (adb) tool
bullet_jaune_3 Basic use
bullet_jaune_3 Connecting to a remote Android target (real or virtual)
Exercice : Building and testing a simple Android application
Finalization of the Android platform
bullet_jaune_2 Testing the kernel and the system :
bullet_jaune_3 Using an NFS-mounted root file system
bullet_jaune_3 Updating the initailisation script for NFS use
bullet_jaune_2 Flash memory partitionning
bullet_jaune_2 Flashing the system
bullet_jaune_3 Flashing through u-boot
bullet_jaune_3 Flashing from Linux
bullet_jaune_2 _ Updating the initailisation script when booting in flash
bullet_jaune_2 Starting and using the platform in standalone mode
Exercice : Deploying a finalized Android system