44
i.MX6 - Android 1-day training design Adeneo Embedded April 2012

i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

  • Upload
    ngohanh

  • View
    217

  • Download
    2

Embed Size (px)

Citation preview

Page 1: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

i.MX6 - Android 1-day training design

Adeneo EmbeddedApril 2012

Page 2: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

2 | Internal use only

Document objectives

• Define the overall objectives and prerequisites of the

training

• Define the outline of the training:● Lecture● Labs● Demos

• Estimate the duration of the different modules

Page 3: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

3 | Internal use only

Training objectives

• Awareness training

• Which tools do we want to use?

• How can we get our board up and running?

• How to build the different software components?

• How to write applications for our system?

• How to work efficiently with the i.MX6 processor?

• How do I design a custom platform based on the i.MX6?

• There will be a strong focus on hands-on labs, preceded by

explanatory slides.

Page 4: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

4 | Internal use only

Training agenda

• Morning● Introduction to the i.MX6 platform (20 mins)● Introduction to Android (60 mins)● Community and licensing (30 mins)● Development environment (60 mins)

Page 5: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

5 | Internal use only

Training agenda

• Afternoon● Android internals (30 mins)● Application development (90 mins)● Native Development using the NDK (20 mins)● Building Android for the i.MX6 (20 mins)● Adapting Android for a custom i.MX6 design (20 mins)● Going further (10 mins)

Page 6: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

6 | Internal use only

Hardware requirements

• Use cheap equipment (easily purchased by trainees)

• Development laptop● + Power supply● VMWare Workstation installed

• i.MX6 Evaluation board● + Power supply● + LCD screen

• Cables and peripherals● USB to serial port (FTDI chip recommended)● USB SD Card reader● Network cable (to connect the PC directly to the board)● Several SD Cards (Sandisk is preferred as they are faster)

Page 7: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

7 | Internal use only

Prerequisites

• Knowledge of embedded systems

• Basic knowledge of C (Java is not necessary but can be

useful)

• Basic understanding of operating systems in the context of

embedded systems (Linux knowledge is helpful)

Page 8: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

8 | Internal use only

Introducing the i.MX6

Page 9: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

9 | Internal use only

i.MX6 Intro - Module description

• Duration: 20 minutes

• Objectives:● Describe the i.MX family● Describe the i.MX6 line of processors● Introduce software support for different operating

systems

• Notes:● This section is common to all the trainings

Page 10: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

10 | Internal use only

i.MX6 Intro - Module outline

• The i.MX family

• The i.MX6● Hardware highlights: ARM micro-architecture, multi-core,

compatibility, multimedia and graphics acceleration,

capture and display, networking, power management, ...● Reference platforms: SABRE Lite, QSB, ... (to be

updated when finalized)● Software support: Linux, Android, Windows Embedded

Compact, QNX

Page 11: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

11 | Internal use only

Introduction to Android

Page 12: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

12 | Internal use only

Android Intro - Module description

• Duration: 30 minutes (lecture) + 30 minutes (lab)

• Objectives:● Give an idea of the big picture: what are the main

components that make an Android system? What

happens when we boot?● Give an idea of how the different pieces fit together

before describing them in detail● Start using the board

Page 13: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

13 | Internal use only

Android Intro - Module outline

• General Introduction● History● Facts and figures● Version history● The advantages of using Android

• Overview of an Android system:● Android architecture: introduction● Components: bootloader, kernel, root filesystem (and how

the files are organized)

• Description of the boot process (introduction)

Page 14: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

14 | Internal use only

Android Intro - Module outline

• Lab: Flashing prebuilt Android images on the

development board.● Getting familiar with the development environment,

basic shell usage● Plugging the equipment● Configuring the boards● Flashing a prebuilt image● Booting the board● Understanding the layout of the SD Card

Page 15: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

15 | Internal use only

Community and Licensing

Page 16: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

16 | Internal use only

Community - Module description

• Duration: 30 minutes (lecture)

• Objectives:● Describe the Android ecosystem, understand where

the different pieces come from● Know where to find support and what to expect● Understanding the Android release cycle● Understanding the concept of “mainline”● Understanding the rights and obligations of free

software. Dispel some misconceptions

Page 17: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

17 | Internal use only

Community - Module outline

• Android ecosystem: players and interactions● Google● Freescale● Linaro (and how they are not equivalent to Freescale)● Community projects (e.g. Cyanogenmod, Linux kernel)

• Freescale BSPs● Downloading the BSP● Where to find documentation● iMXCommunity, support

Page 18: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

18 | Internal use only

Community - Module outline

• Android release cycle

• Licensing:● Rights and obligations of open-source software● Licenses primer: GPL, LGPL, Apache, BSD,

proprietary● How to keep your intellectual property● Differences with Linux● More resources

Page 19: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

19 | Internal use only

Community - Module outline

• The Android Market● Getting access to the Android Market● Alternative marketplaces

Page 20: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

20 | Internal use only

Development Environment

Page 21: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

21 | Internal use only

Dev Env - Module description

• Duration: 60 minutes (lecture + lab)

• Objectives:● How to use a virtual machine● Introduce useful hardware and software tools for:

• Coding

• Debugging

• Managing the code

Page 22: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

22 | Internal use only

Dev Env - Module outline

• Choosing a Linux distribution

• Using a Virtual Machine: benefits, recommendations and

pitfalls

• Hardware and software tools:● Serial connection● TFTP and NFS (how they can dramatically increase

your productivity)● JTAG: major vendors (Lauterbach, BDI3000,

ARM, ...), OpenOCD

Page 23: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

23 | Internal use only

Dev Env - Module outline

Android tools:● Getting the development tools● SDK● NDK● Eclipse● ADT● ADB● Emulator● DDMS

Page 24: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

24 | Internal use only

Dev Env - Module outline

• Lab: Creating and deploying a Hello World application

on the emulator

• Lab: Deploying Hello World on the device

• Lab: Using the adb to connect to the device

Page 25: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

25 | Internal use only

Android internals

Page 26: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

26 | Internal use only

Internals - Module description

• Duration: 30 minutes (lecture)

• Objectives:● Understand the Android architecture and how it differs

from a standard embedded Linux system● Describe the boot process (quick introduction)● Introduce the security model and how it impacts

application and system development

Page 27: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

27 | Internal use only

Internals - Module outline

• Android architecture

• Booting Android● Bootloader● Kernel● Init● Zygote, Android server

• Security model

• Main differences and common points with Linux

• Toolchain

Page 28: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

28 | Internal use only

Application development

Page 29: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

29 | Internal use only

Application - Module description

• Duration: 30 minutes (lecture) + 60 minutes (lab)

• Objectives:● Get to know the building blocks of applications● Understand the philosophy of Android application

development● Learn how to use threads● See how Android can be used with Web applications

Page 30: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

30 | Internal use only

Application - Module outline

• Languages and tools:● Java vs native (C/C++)● SDK vs NDK

• Documentation

• Philosophy of Android application development● How it differs from Linux

• Application manifest

• Permissions

Page 31: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

31 | Internal use only

Application - Module outline

• Application components:● Activities● Services● Content providers● Broadcast receivers

• Lifecycle of applications

• Logging● Lab: Adding logging to an application

Page 32: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

32 | Internal use only

Application - Module outline

• Intents

• Threads● Lab: Using threads in applications

• Application resources● Creating layouts● Lab: Modifying the layout of your application.

Adding and managing controls.

• Web application development● HTML5

Page 33: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

33 | Internal use only

Native Development using the NDK

Page 34: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

34 | Internal use only

NDK - Module description

• Duration: 20 minutes (lecture)

• Objectives:● Quick introduction to native development● Understand when and why using native code

Page 35: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

35 | Internal use only

NDK - Module outline

• Using the JNI interface

• Compiling native code

• Debugging using GDB

• Guidelines

• Documentation

• Lab (optional): Adding a native method to your

application

Page 36: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

36 | Internal use only

Building Android for the i.MX6

Page 37: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

37 | Internal use only

Building - Module description

• Duration: 20 minutes (lecture)

• Objectives:● Learn how to get the sources for the i.MX6● See how to build Android and be efficient with the

build system

• Notes:● Adeneo's helper scripts will be provided to the

trainees

Page 38: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

38 | Internal use only

Building - Module outline

• Documentation

• Getting the sources for the i.MX6 platform● Git and repo● Main repo commands● BSP manifest● Navigating through the sources

• Building Android● Software requirements● Build procedure● Working efficiently with the Android build system: tips and tricks

Page 39: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

39 | Internal use only

Adapting Android for a custom i.MX6 design

Page 40: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

40 | Internal use only

Adapting - Module description

• Duration: 20 minutes (lecture)

• Objectives:● Identify the areas of interest when porting Android to a

custom i.MX6 design● Provide recipes to customize Android● Leverage Freescale/Adeneo's experience of porting

Android. Lessons learned

Page 41: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

41 | Internal use only

Adapting - Module outline

• Porting to the i.MX6 (quick introduction)

• Customization recipes● Boot sequence● Kernel● Network settings● Home application● Adding a Java application● Adding a native application● Adding a native library● Adding a product● Adding an overlay

Page 42: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

42 | Internal use only

Going further

Page 43: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

43 | Internal use only

Going further - Module description

• Duration: 10 minutes (lecture)

• Objectives:● Provide more resources (books, websites) for

additional information● Highlight Freescale's documentation and community

website

Page 44: i.MX6 - Android 1-day training design - NXP …cache.freescale.com/files/training/doc/dwf/DWF13_IMX_ANDROID1DAY.pdfi.MX6 - Android 1-day training design Adeneo Embedded April 2012

44 | Internal use only

Quizz (TBD)