+ +
- -
Systèmes d'Exploitation
Calendrier  Détails
Programmation
 
Calendrier  Détails
Processeurs ARM
 
Calendrier  Détails
Processeurs PowerPC
 
 
 
 
Calendrier  Détails
Communications
 
 
Calendrier  Détails
+ +
> >
- -

Dernières Nouvelles

Contrôle moteur par des gestes avec System Workbench for Linux sur un MCU STM32MP1 (présentation vidéo)

Workshop gratuit Linux Embarqué avec System Workbench for Linux le 24 Septembre 2019 à Lyon Saint-Priest, avec ARROW

 
ac6 >> ac6-training >> Systèmes d'Exploitation >> Linux >> Android Internals Télécharger le catalogue Télécharger la page Ecrivez nous Version imprimable

G3 Android Internals

Android Frameworks and HAL Implementation

Android Frameworks and HAL Implementation
formateur
Objectives
  • Explore the Android source code architecture
    • The Android init process
    • System services
    • The Android Binder
    • The Android Application Framework
    • The Android Hardware Abstraction Layer
    • The Android Multimedia Framework and OpenMAX
  • Understand the static and dynamic framework structure
    • Class structure
    • Split between Java and C++ code
    • Data flow through the frameworks
    • Control structure of the frameworks
Labs are conducted on target Dual Cortex/A9-based boards, with Lauterbach JTAG probes:
    "Sabre" boards, based on NXP i.MX6.
    "Pandaboard" boards based on TI OMAP4.
We use the last open source version of Android, as available on the board.
For on-site trainings, we supplement target boards with pre-configured bootable Linux USB hard drives; the only requisite is then a recent PC (intel core 2 or better), able to boot from an USB disk, with at least 2Gb or RAM.
Who should attend this course?
  • Engineers that must work on the Android port on a new platform
    • Writing the HAL for a new board
    • Debugging the HAL and Android frameworks
Prerequisite
Course environment
  • Printed course material (in English).
  • One Linux PC for two trainees.
  • One target platform (dual Cortex/A9) for two trainees.
Course modularity
  • This course can be dispensed from 3 to 5 days:
    • The first three days are mandatory to understand the architecture of the Android Frameworks
    • The fourth day covers in more depth the multimedia and video handling
    • The fifth day covers the audio framework in detail (this requires part of the knowledge dispensed in the fourth day, so is only available in a full 5 days course)

First Day
Android Architecture Overview
  • Linux and Android
  • Android Licensing
The Android Linux kernel enhancements
  • The Android-specific kernel drivers
    • Ashmem
    • Logger
    • Low_memory_killer
    • Timed_output
    • Timed_gpio
    • Buttons and Keypad management
  • Android Power Management
    • The Linux Power Management architecture
    • Android Wake Locks
    • Android Power Management in Linux drivers
  • The Android Kernel debugger
Exercise :  Configuration and build of the Android kernel for the target board
Exercise :  Checking the first phases of kernel boot
The Android Build system
  • The Android code base
  • Building Android
    • The Android build environment
    • The Android build system
    • The Android.mk files
  • Adding new components to the build system
    • Java components
    • Native components
    • Applications
Exercise :  Compiling the Android platform
Android System Initialization
  • Android properties
    • Automatic properties
    • Default properties
    • Persistent properties
  • The Android initialization
    • Structure of the init process
    • The Android initialization language
  • The Dalvik Java virtual machine
    • The Dalvik machine structure
    • The Dalvik bytecodes
    • The Dalvik “zygote” process
Second Day
Android Native Interface
  • The bionic C library
    • Why a new C library
    • The bionic Android-specific features
    • What is missing in bionic
  • Adding native components
    • Adding native executables
    • Defining Java methods in C or C++
    • JNI for Android
  • Platform interface for native components
    • Accessing system properties
    • Accessing the Android log system
    • Interacting with daemon services
Exercise :  Creating a new native component
Android as a Massively Distributed System
  • The Android Binder architecture
    • Why a new IPC mechanism
    • The Binder in action
    • The Binder kernel driver
  • Binder implementation
    • The AIDL language
    • The AIDL tool
    • Binder Java classes
    • C++ binder implementation classes
  • Writing Services
    • Standard Java services
    • Services and C++
    • Using the binder from C++
  • System services
    • What is a system service
    • Static and context-dependent services
    • Structure of a system service
    • Adding a new system service
    • The system ServiceManager process
Exercise :  Coding a system service
The Android Power Manager
  • The Driver API
  • The user-mode API
  • The Java API
Third Day
The Hardware Abstraction Layer
  • Why a HAL?
  • HAL component structure
    • Defining HAL components
    • Loading and using HAL component
  • The standard HAL components
    • Graphics
    • Audio
    • Camera
    • Bluetooth
    • GPS
    • Sensors
    • WiFi
    • The Radio Interface Layer (RIL)
Exercise :  Create a simple HAL component
The Android Sensors Framework
  • Sensors in Android
    • The sensor types
    • The Sensor Manager
    • Accessing Sensors
  • Framework Architecture
    • Sensor discovery
    • Sensor Calibration
  • The HAL components
The Android Multimedia Framework
  • Multimedia in an Android device
    • Data formats and File formats
    • Codec and Demux
  • Multimedia for Applications
    • Audio and video playback (MediaPlayer class)
    • Audio and video capture (MediaRecorder class)
Exercise :  Implementation of an mp3 playback service
  • Framework Architecture
    • General framework architecture
    • General data and control flows
    • The MediaPlayer service layer
    • Stagefright and OpenMAX
Fourth Day
OpenMAX for Android Multimedia
  • OpenMAX Overview
    • The Khronos Group
    • OpenMAX/DL: the Development Layer
    • OpenMAX/IL: the Integration Layer
    • OpenMAX/AL: the Application Layer
    • OpenMAX and OpenSL/ES
  • OpenMAX in the Android Media Framework
    • Interface between Android and OpenMAX
    • The OpenMAX/IL Architecture
  • Stagefright the Android playback engine
    • The Stagefright class structure
  • The OpenMAX/IL Bellagio implementation
    • OpenMAX/IL LGPL implementation of the core
    • Sample implementation of components
  • Anatomy of a component
    • Configuration interface
    • Data interface
    • Buffer allocation
    • Bellagio specific setup
  • Integration of OpenMAX/IL in Stagefright
    • Component registration
    • Component configuration
    • Component Quirks
Android Graphics low-level components
  • The Surface Flinger
    • The Binder interface
    • OpenGL/ES interface
    • Using hardware accelerators
    • Double buffering using framebuffer page-flip
  • The HAL graphics components
    • Framebuffer control
    • Graphic memory allocator
    • Bit blitting
    • The Hardware composer
Fifth Day
The Android Audio Manager
  • Audio routing
  • General architecture of Audio manager
    • Audio system
    • Audio policy manager
    • Audio policy service
    • Sound effects
  • Control flow
    • Playback and recording control
    • Time source generation
The Audio Flinger
  • Output/input audio flow
    • Buffer management
  • Audio track
    • Overview
    • Track live cycle
    • Data flow
  • Audio mixer:
    • Overview
    • Mixer life cycle
    • Fast mixer
    • Resampling
    • Volume
  • Audio recorder:
    • Overview
    • Data flow
The HAL Audio components
  • Audio policies
    • Audio Policies and policy devices
    • HAL Audio policy provided services
    • Use from the audio policy manager
    • Use of audio services by the HAL audio policy
    • Output duplication
    • Suspend/resume
  • Audio devices
    • Audio device classes
    • Data flow
    • Interaction with audio track and record
  • Audio effects