Message-ID: <1062618687.5235.1711672882313.JavaMail.root@dns3> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_5234_887703428.1711672882313" ------=_Part_5234_887703428.1711672882313 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
On this page:
Eric Lee= p>
version 1.0a, 1/15/2017
This document describes how to&nbs= p;build and deploy Android Marshmallow on the SMARC-FiMX6. It is based on N= XP's IMX6_M6.0.1_2.1.0-ga ANDROID release.
In order to download u-boot and kerne= l from Embedian. We recommend you use SSH keys to establish a s= ecure connection between your computer and Embedian Gitlab server. The step= s below will walk you through generating an SSH key and then adding the pub= lic key to our Gitlab account.
First, we need to check for existing ssh keys on your computer. Open up&= nbsp;Git Bash and run:
$ cd ~/.ssh $ ls # Lists the files in your .ssh directory=20
Check the directory list=
ing to see if you have a file named either id_rsa.pub
&nbs=
p;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.
To generate a new SSH ke= y, enter the code below. We want the default settings so when asked to ente= r a file in which to save the key, just press enter.
$ ssh-keygen -t rsa -C "your_email@example.com" # Creates a new ssh key, using the provided email as a label # Generating public/private rsa key pair. # Enter file in which to save the key (/c/Users/you/.ssh/id_rsa): [Press en= ter] $ ssh-add id_rsa=20
Now you need to enter a = passphrase.
Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]=20
Which should give you so= mething like this:
Your identification has been saved in /c/Users/you/.ssh/id_rsa. Your public key has been saved in /c/Users/you/.ssh/id_rsa.pub. The key fingerprint is: 01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com=20
Copy the key to your cli= pboard.
$ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAABDAQABAAABAQDQUEnh8uGpfxaZVU6+uE4bsDrs/tEE5/BPW7j= MAxak 6qgOh6nUrQGBWS+VxMM2un3KzwvLRJSj8G4TnTK2CSmlBvR+X8ZeXNTyAdaDxULs/StVhH+QRtF= EGy4o iMIzvIlTyORY89jzhIsgZzwr01nqoSeWWASd+59JWtFjVy0nwVNVtbek7NfuIGGAPaijO5Wnshr= 2uChB Pk8ScGjQ3z4VqNXP6CWhCXTqIk7EQl7yX2GKd6FgEFrzae+5Jf63Xm8g6abbE3ytCrMT/jYy5OO= j2XSg 6jlxSFnKcONAcfMTWkTXeG/OgeGeG5kZdtqryRtOlGmOeuQe1dd3I+Zz3JyT your_email@exa= mple.c om=20
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.
The objective of this document is to guide SMARC-FiMX6 Android developer= s to obtain Android Marshmallow sources, setting up host environment, compi= lation and deployment.
This document contains instructions for:
EVK-STD-CARRIER and SMARC-FiMX6.
The host development environment for Android is based on Ubuntu and Debi= an, please install Ubuntu version 14.04 64bit LTS http://www.ubuntu.com/download/desktop or Debian 8.4 64bit&n= bsp;https://www.debian.org/releases
=20 =20 =20$ sudo apt-get -y install git-core gnupg flex bison gperf build-= essential zip curl zlib1g-dev gcc-multilib g++-multilib=20 $ sudo apt-get -y install libc6-dev-i386 lib32ncurses5-dev x11proto-core-de= v libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils=20 $ sudo apt-get -y install xsltproc unzip mtd-utils u-boot-tools lzop liblzo= 2-2 liblzo2-dev zlib1g-dev liblz-dev uuid uuid-dev android-tools-fsutils=20
$ sudo apt-get update=20 $ sudo apt-get install openjdk-7-jdk=20
Update the default Java version by running:
$ sudo update-alternatives --config java=20 $ sudo update-alternatives --config javac=20
Go to NXP's website, download IMX6_M6.0.1_2.1.0_ANDROID_SOURCE_BSP (file= name: android_M6.0.1_2.1.0_source.tar.gz) and put into your ~/downloads dir= ectory.
$ cd ~/downloads $ tar xvfz android_M6.0.1_2.1.0_source.tar.gz=20
$ mkdir -p ~/android/smarcfimx6/m_601_210_build=20 $ cd ~/android/smarcfimx6/m_601_210_build=20 $ mkdir ~/bin=20 $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo >= ~/bin/repo=20 $ chmod a+x ~/bin/repo=20 $ export PATH=3D~/bin:$PATH=20 $ repo init -u https://android.googlesource.com/platform/manifest -b androi= d-6.0.1_r22=20 $ repo sync -j4=20
$ mkdir -p ~/android/smarcfimx6/m_601_210_build/bootable/bootloa= der=20 $ cd ~/android/smarcfimx6/m_601_210_build/bootable/bootloader $ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git uboot-imx $ cd uboot-imx $ git checkout smarc-m6.0.1_2.1.0-ga $ cd ~/android/smarcfimx6/m_601_210_build $ git clone git@git.embedian.com:developer/smarc-fsl-linux-kernel.git kerne= l_imx $ cd kernel_imx $ git checkout smarc-m6.0.1_2.1.0-ga=20
$ cd ~/android/smarcfimx6/m_601_210_build $ source ~/downloads/android_M6.0.1_2.1.0_source/code/M6.0.1_2.1.0/and_patc= h.sh **** Invoke ". and_patch.sh" from your shell to add following fun= ctions to your environment: ****-- c_gotop: Changes directory to the top of the tree=20 ****-- c_patch: Recover working tree to base version and then applying = FSL android patch $ c_patch ~/downloads/android_M6.0.1_2.1.0_source/code/M6.0.1_2.1.0 imx_M6= .0.1_2.1.0 If everything is OK, "c_patch" generates the following output to = indicate the successful patch: ************************************************************* Success: Now you can build android code for FSL i.MX platform *************************************************************=20
$ cd ~/android/smarcfimx6 $ git clone http://git.embedian.com/developer/smarc-fimx6-android.git embed= ian $ cd embedian $ git checkout smarc-m6.0.1_2.1.0-ga=20 $ cd ../ $ embedian/install=20
$ cd ~/android/smarcfimx6/m_601_210_build $ source build/envsetup.sh $ export JAVA_HOME=3D/usr/lib/jvm/java-1.7.0-openjdk-amd64 $ export PATH=3D$JAVA_HOME/bin/:$PATH $ lunch smarc_mx6-eng or $ lunch smarc_mx6-user=20
When you switch your target MMC device you need to remove the fstab file= . This will guarantee that the make system will copy the right one into tar= get.
$ rm out/target/product/smarc_mx6/recovery/root/fstab* out/targe= t/product/smarc_mx6/root/fstab*=20
$ make -j4 BUILD_TARGET_DEVICE=3Dsd 2>&1 | tee build1-1.l= og=20
$ make -j4 BUILD_TARGET_DEVICE=3Demmc 2>&1 | tee build1-1= .log=20
All images will be created under out/target/product/smarc_mx6 directory.
Image | Description |
---|---|
boot-<name1>-<name2&g= t;.img | Boot image that contains zImage, device tree blo= b and ramdisk |
recovery-<name1>-<name2>.img | Recovery image that contains zImage, device tree= blob and ramdisk |
system.img | Android system image file. |
u-boot-<defconfig>.img | Bootloader |
U-Boot boots from on-module SPI NOR flash, and the rest of the Android i= mages will be loaded from SD card or on-module eMMC.
To flash u-boot into on-module SPI NOR flash. First, you need to prepare= for a new SD card and insert into your Linux host PC. The u-= boot-<defconfig>.imx is pre-installed in SPI NOR flash at f= actory default. SMARC-FiMX6 is designed to always boot up from SPI NOR flas= h and to load other Android images based on the setting of BOOT_SE= L. If users need to fuse their own u-boot or perform u-boot upgrade. T= his section will instruct you how to do that.
For these instruction, we are assuming: DISK=3D/dev/mmcblk0, "lsblk= " is very useful for determining the device id.
=20 =20Erase SD card:
=20 =20Create Partition Layout:
With util-linux v2.26, sfdisk was rewritten and is now based on = libfdisk.
=20 =20Create Partitions:
=20 =20 =20Format Partitions:
=20 =20Mount Partitions:
On some systems, these partitions may be auto-mounted...
=20 =20Copy u-boot-<defconfig>.imx to the = boot partition.
=20 =20Fuse u-boot.imx to the SPI NOR flash.
Insert the SD card that you just made int= o EVK-STD-CARRIER SD card slot. Stop at U-Boot command prompt (Press any ke= y when booting up). Copy and Paste the following script under u-boot comman= d prompt.
=20 =20In some cases, when SPI NOR flash is eras= ed or the u-boot is under development, we need a way to boot from SD card f= irst. Users need to shunt cross the TEST# pin to ground. In this way,= SMARC-FiMX6 will always boot up from SD card.
Insert the same SD card into your host Li= nux PC.
Copy u-boot.imx to the SD card.
=20 =20Insert the SD card into EVK-STD-CARRIER. = Stop at U-Boot command prompt (Press any key when booting up). Copy and Pas= te the following script under u-boot command prompt.
=20 =20Prepare for the othe SD card that is differmt from the one for bootloader.= Insert into your Linux host PC
$ cd ~/android/smarcfimx6/m_601_210_build/out/target/product/sma= rc_mx6/ $ cp ~/android/smarcfimx6/m_601_210_build/emb-mksdcard.sh . $ sudo ./emb-mksdcard.sh -f <name1>-<name2> /dev/sdX;sync= =20
First, make sure the images that y= ou built is for eMMC (use BUILD_TARGET_DEVICE=3Demmc w= hen built Android).
Setup eMMC for Android is a bit complex, but trivial. There are a couple= of ways to achieve it.
NXP/Freescale provides with a way to boot up, partition, format=
, and program images into eMMC. User can go to NXP's website to download mf=
gtool and follow their guide to achieve it. We will leave it to users if yo=
u would like to use this method to set up your eMMC. Make sure that the
The second way that we also recomm= end is to make a bootable Ubuntu 14.04 SD card for SMARC-FiMX6. User go to = our Linux Development Site to learn how to= make a bootable Ubuntu 14.04 SD card. An pre-built images can be downloade= d from our ftp site. Users can download thos= e images and follow the "Setup SD card" section from our Linux de= velopment site. Once it done, you can copy the emb-mksdcard.sh scipt and all Android im= ages into your home directory. Follow exactly what you did for SD card, but= now, eMMC device will be emulated as /dev/mmcblk3.
$ sudo ./emb-mksdcard.sh -f <name1>-<name2> /dev/mmc= blk3;sync=20
Power off and set BOOT_SEL to OFF ON ON and you will be able to boot up = your Android from on-module eMMC.
$ sudo ./emb-mksdcard.sh -np /dev/mmcblk3=20
Once you have your on-module eMMC partitioned and formated.
On your Linux host PC, you need to install Android tools.
$ sudo apt-get install android-tools-adb android-tools-fastboot=20
Connect the device with ho= st PC at fastboot mode:
On the Host PC:= span>
$ sudo fastboot flash boot out/target/product/smarc_mx6/boot-<= ;name1>-<name2>.img $ sudo fastboot flash recovery out/target/product/smarc_mx6/recovery-<na= me1>-<name2>.img $ sudo fastboot flash system out/target/product/smarc_mx6/system.img $ sudo fastboot reboot=20
Shunt LID# pin to ground will enter Android Recovery mode.
= For generating "OTA" packages, use the following commands:=
$ cd ~/android/smarcfimx6/m_601_210_build/ # if Android for SD card $ make -j4 BUILD_TARGET_DEVICE=3Dsd otapackage 2>&1 | tee build1-1.l= og # if Android for eMMC $ make -j4 BUILD_TARGET_DEVICE=3Demmc otapackage 2>&1 | tee build1-1= .log=20
$ out/host/linux-x86/bin/adb sideload out/target/product/smarc_m= x6/smarc_mx6-ota-<data>-<image-id>.zip=20
Reboot the device.
=20 =20 =20When you perform chan= ges to the kernel, you may build boot.img solely instead of building the wh= ole Android.
$ cd ~/android/smarcfimx6/m_601_210_build/ $ source build/envsetup.sh $ lunch smarc_mx6-user (or smarc_mx6-eng) $ make bootimage=20
Setup the toolchain path to point to arm-eabi- tools in prebuilts/gcc/linu= x-x86/arm/arm-eabi-4.8/bin
$ export ARCH=3Darm $ export CROSS_COMPILE=3D~/android/smarcfimx6/m_601_210_build/prebuilts/gcc= /linux-x86/arm/arm-eabi-4.8/bin/arm-eabi-=20
Change directory to U-Boot
$ cd ~/android/smarcfimx6/m_601_210_build/bootable/bootloader/ub= oot-imx=20
Ex= ecute following commands:
$ make distclean $ make smarcfimx6_quad_1g_ser3_android_defconfig $ make -j4=20
It will generate u-boot.imx file.
$ cd ~/android/smarcfimx6/m_601_210_build/kernel_imx=20 $ make distclean $ make smarcfimx6_android_defconfig $ make -j4 uImage LOADADDR=3D0x10008000 $ make -j4 modules=20
This will generate the uImage (kernel= image) in the kernel/arch/arm/boot folder
version 1.0a,1/15/2017
Last updated 2017-01-25