Android
Porting, tailoring and programming Google's Android OS
Android on an industrial device is a different exercise from Android on a phone. The framework assumes a touchscreen, a battery and an app store, and an embedded product usually has none of the three. What it does bring is a mature graphics stack, a driver model and a security architecture.
Working below the application layer means dealing with the HAL, Binder, the init sequence and the AOSP build system. Porting Android to a board is mostly about understanding what the framework expects from the hardware, and what it will do when the hardware answers differently.
Our courses cover Android programming, the internals of the platform from the kernel up to the framework, and the specific case of industrial system control where Android runs without a user in front of it.
Available Courses
Android was designed to allow quickly creating powerful and ergonomic interfaces for embedded, resource constrained, systems; however, due to th elimitations of the underlying hardware, Android applications are totally different from standard applications. This course will explain how they are structured and how Android allows to combine portability and performance in applications.
Installing Android on a new platform is a complex process requiring a deep understanding of the internals of the Android frameworks and the Hardware Abstraction Layer. This course explains how the frameworks are structured and can be adapted to a platform on which a basic Android port already exist.
New industrial systems need sophisticated and ergonomic user interfaces. Building these with traditional GUI toolkits may be cumbersome and difficult. Android may simplify these tasks, allowing industrial application developers to benefit from the tools developped for consumer electronics devices.
This course covers the various techniques needed to write Linux (2.6 and 3.x) drivers, bus management (PCI. ..), hot-plug and auto-configuration of devices as well as the specific problems due to multi-core and advanced processors.
This course delves into the concepts of Linux drivers interaction with power management features of the Linux kernel.
This course details the Linux driver model, the USB hotplug and power management architecture to write USB host (client) drivers as well as gadget drivers.