On this page:
- Building Freescale/Embedian’s Android P9.0.0_2.0.0-ga BSP Distribution
- Introduction
- Generating SSH Keys
- Overview of this document
- Hardware Requirement
- Obtain Source Code
- Build Android Images
- Images created by the Android build for SMARC-iMX8M system
- UUU Scripts
- Setup SD card
- Setup eMMC
- Android Recovery Mode
- Manual Operations
Building Freescale/Embedian’s Android P9.0.0_2.0.0-ga BSP Distribution
Eric Lee
version 1.0a, 5/31/2019
Introduction
This document describes how to build and deploy Android Oreo on the SMARC-iMX8M. It is based on NXP's IMX8M_P9.0.0_2.0.0-GA ANDROID release.
Generating SSH Keys
In order to download u-boot and kernel from Embedian. We recommend you use SSH keys to establish a secure connection between your computer and Embedian Gitlab server. The steps below will walk you through generating an SSH key and then adding the public key to our Gitlab account.
Step 1. Check for SSH keys
First, we need to check for existing ssh keys on your computer. Open up Git Bash and run:
Check the directory listing to see if you have a file named either id_rsa.pub
or id_dsa.pub
. If you don't have either of those files go to step 2. Otherwise, you already have an existing keypair, and you can skip to step 3.
Step 2. Generate a new SSH key
To generate a new SSH key, enter the code below. We want the default settings so when asked to enter a file in which to save the key, just press enter.
Now you need to enter a passphrase.
Which should give you something like this:
Step 3. Add your SSH key to Embedian Gitlab Server
Copy the key to your clipboard.
Go to Embedian Git Server. At Profile Setting --> SSH Keys --> Add SSH Key
Paste your public key and press "Add Key" and your are done.
Overview of this document
The objective of this document is to guide SMARC-iMX8M Android developers to obtain Android P9.0.0_2.0.0-ga Pie sources, setting up host environment, compilation and deployment.
This document contains instructions for:
- Hardware and software requirements.
- Setup the hardware.
- Setup the toolchain.
- Download & build the sources.
- Install the binaries on the SMARC-iMX8M SOM.
Hardware Requirement
EVK-STD-CARRIER-S20 and SMARC-iMX8M.
Host (PC) setup requirements
The host development environment for Android is based on Ubuntu and Debian, please install Ubuntu version 16.04 64bit LTS http://www.ubuntu.com/download/desktop or Debian 9.6 64bit https://www.debian.org/releases
Install required packages on host PC
Install the OpenJDK
Update the default Java version by running:
Obtain Source Code
Get NXP's Android Release Package
Go to NXP's website, download IMX8MQ_P9.0.0_2.0.0_ANDROID_SOURCE_BSP (filename: imx-p9.0.0_2.0.0-ga.tar.gz and put into your ~/downloads directory.
Obtain Google Android Pie P9.0.0_2.0.0-ga source code and Apply NXP's patch
After done, it will create an android_build directory. Go to this directory.
Clone Embedian's U-Boot and Linux kernel sources
Apply Embedian's patches for i.MX8M platforms
Build Android Images
Change to Android top level directory.
Images created by the Android build for SMARC-iMX8M system
The images created are located at out/target/product/smarc_mx8m/ directory.
Image | Description |
---|---|
u-boot-smarcim8mq_2g.imx | Bootloader for eMMC/SD card boot for SMARC-iMX8M-D/Q-2G(-I) Other SMARC variants could be defined at device/embedian/smarc_mx8m/BoardConfig.mk |
u-boot-smarcim8mq_2g_uuu.imx | Bootloader used by uuu for eMMC/SD card boot for SMARC-iMX8M-D/Q-2G(-I) Other SMARC variants could be defined at device/embedian/smarc_mx8m/BoardConfig.mk |
boot-<name>.img | Boot image for SMARC-iMX8M |
partition-table.img | GPT table image for 16GB SD card and eMMC. |
partition-table-7GB.img | GPT table image for 8GB SD card and eMMC. |
partition-table-28GB.img | GPT table image for 28GB SD card and eMMC. |
system.img | System Boot image |
vbmeta-<name>.img | Android Verified Boot metadata Image for SMARC-iMX8M to support different display output |
vendor.img | Vendor image |
dtbo-<name>.img | Device Tree image for SMARC-iMX8M to support different display output |
<name>
|
|
The default configuration for SMARC-iMX8M variant is SMARC-iMX8M-D-2G. If users used other variant, make changes at device/embedian/smarc_mx8m/BoardConfig.mk. Find "TARGET_BOOTLOADER_CONFIG" and change the u-boot defconfig file.
UUU Scripts
The table below describes the UUU scripts in android_p9.0.0_2.0.0-ga. They are used with the UUU binary file to download the images above into SMARC-iMX8M SMARC modules.
UUU Script name | Function |
---|---|
uuu-android-smarc-mx8mq-emmc.lst | Used with the UUU binary file to download image files into |
uuu-android-smarc-mx8mq-sd.lst | Used with the UUU binary file to download image files into SD card. |
Setup SD card
Prepare for an SD card and insert into your Linux host PC
<name> |
|
---|
Insert the SD card into your device, set the BOOT_SEL to "ON OFF OFF" and shut cross the TEST# pin to Ground. You will be able to see Android booting up. For eMMC boot, leave the TEST# floating and the BOOT_SEL should be set as "OFF ON ON". The next section will instruct you to flash eMMC.
Setup eMMC
Setup eMMC for Android is a bit complex, but trivial. There are a couple of ways to achieve it.
Use UUU
UUU can be used to download all images into a target device. It is a quick and easy tool for downloading images. See the AndroidTM Quick Start Guide (AQSUG) for detailed description of UUU.
Make sure that the FORCE_RECOV# pin has to be shunt to Ground when using this tool.
Use a Ubuntu 18.04 Bootable SD card
The second way that we also recommend is to make a bootable Ubuntu 16.04 SD card for SMARC-iMX8M. User go to our Linux Development Site to learn how to make a bootable Ubuntu 16.04 SD card. An pre-built images can be downloaded from our ftp site. Users can download those images and follow the "Setup SD card" section from our Linux development site. Once it done, you can copy the smarc-mksdcard.sh script and all Android images (u-boot-smarcimx8mq-2g.imx, partition-table.img, boot.img, vbmeta-<name>.img, system_raw.img, vendor_raw.img, dtbo-<name>, smarc-mkemmccard.sh) into your home directory. Follow exactly what you did for SD card, but now, eMMC device will be emulated as /dev/mmcblk0.
<name> |
|
---|
Power off and set BOOT_SEL to "OFF ON ON", leave the TEST# pin floating and you will be able to boot up your Android from on-module eMMC.
Android Recovery Mode
Enter board in Android Recovery mode
Shunt LID# pin to ground will enter Android Recovery mode.
Update Android Firmware
Generate OTA Packages
For generating "OTA" packages, use the following commands:
Install OTA Packages to device
- Enter to Android Recovery mode
- Select menu item "apply update from ADB"
- To the host system, perform the following command:
smarc_mx8mq-ota-${date}.zip includes payload.bin and payload_properties.txt . The two files are used for full update.
Reboot the device.
Manual Operations
Build boot.img
When you perform changes to the kernel, you may build boot.img solely instead of building the whole Android.
Toolchain setup for manual build kernel and U-Boot
Setup the toolchain path to point to arm-eabi- tools in prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin
Manual build Bootloader
Change directory to U-Boot
Execute following commands:
It will generate u-boot.imx file.
Manual build Android Linux Kernel and modules
The kernel images are found in ${MY_ANDROID}/vendor/embedian/kernel_imx/arch/arm64/boot/Image
version 1.0a,5/31/2019
Last updated 2019-05-31