Spaces
Browse
Pages
Blog
Labels
Space Operations
Quick Search
Help
Online Help
Keyboard Shortcuts
Feed Builder
What’s new
Available Gadgets
About Embedian
Log In
Sign Up
Android on SMARC
Android on SMARC
SMARC-FiMX6-ANDROID-M6.0.1-2.0.1
Copy Page
You are not logged in. Any changes you make will be marked as
anonymous
. You may want to
Log In
if you already have an account. You can also
Sign Up
for a new account.
This page is being edited by
.
image-effects
image-attributes
search
attachments
weblink
advanced
Paragraph
Paragraph
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Preformatted
Quote
Bold
Italic
Underline
Colour picker
More colours
Formatting
Strikethrough
Subscript
Superscript
Monospace
Clear Formatting
Bullet list
Numbered list
Task list
Outdent
Indent
Align left
Align center
Align right
Page Layout
Link
Table
Insert
Insert Content
Image
Link
Attachment
Symbol
Emoticon
Markup
Horizontal rule
Task List
Insert Macro
Evernote
User Mention
JIRA Issue/Filter
Info
Status
Gallery
Table of Contents
Other Macros
Page Layout
No Layout
Two column (simple)
Two column (simple, left sidebar)
Two column (simple, right sidebar)
Three column (simple)
Two column
Two column (left sidebar)
Two column (right sidebar)
Three column
Three column (left and right sidebars)
Undo
Redo
Find/Replace
Keyboard Shortcuts Help
<p><img class="editor-inline-macro" src="/plugins/servlet/confluence/placeholder/macro?definition=e3BhZ2V0cmVlOnJldmVyc2U9dHJ1ZXxleGNlcnB0PXRydWV9&locale=en_GB&version=2" data-macro-name="pagetree" data-macro-parameters="excerpt=true|reverse=true"></p><table class="wysiwyg-macro" data-macro-name="panel" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e3BhbmVsfQ&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><strong>On this page:</strong></p><p><img class="editor-inline-macro" src="/plugins/servlet/confluence/placeholder/macro?definition=e3RvYzpzdHlsZT1zcXVhcmV9&locale=en_GB&version=2" data-macro-name="toc" data-macro-parameters="style=square"></p></td></tr></table><h1><span style="color: rgb(0,51,102);">Building Freescale/Embedian’s Android N7.1.2_2.0.0 BSP Distribution</span></h1><p><span style="color: rgb(0,51,102);"><strong>Eric Lee</strong></span></p><p>version 1.0a, 6/15/2018</p><h1><span style="color: rgb(0,51,102);">Introduction</span></h1><hr /><div class="paragraph"><p><span>This document describes how to build and deploy Android Nougat on the SMARC-FiMX6. It is based on NXP's IMX6_N7.1.2_2.0.0-ga ANDROID release.</span></p></div><div class="paragraph"><br /><div class="paragraph"><h1><span style="color: rgb(0,51,102);">Generating SSH Keys</span></h1><hr /><p><span style="color: rgb(0,0,0);">In order to download u-boot and kernel from Embedian. </span>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.<span style="color: rgb(0,0,0);"> </span></p><h3><span style="color: rgb(0,51,102);">Step 1. Check for SSH keys</span></h3><hr /><p>First, we need to check for existing ssh keys on your computer. Open up <span class="platform-windows">Git Bash</span> and run:<span style="color: rgb(0,0,0);"> </span></p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/.ssh $ ls # Lists the files in your .ssh directory</pre></td></tr></table><p><span style="color: rgb(0,0,0);"> </span>Check the directory listing to see if you have a file named either <code>id_rsa.pub</code> or <code>id_dsa.pub</code>. If you don't have either of those files go to <strong>step 2</strong>. Otherwise, you already have an existing keypair, and you can skip to <strong>step 3</strong>.<span style="color: rgb(0,0,0);"> </span></p><h3><span style="color: rgb(0,51,102);">Step 2. Generate a new SSH key</span></h3><hr /><p><span style="color: rgb(0,0,0);"> </span>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.</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ 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 enter] $ ssh-add id_rsa</pre></td></tr></table><p><span style="color: rgb(0,0,0);"> </span>Now you need to enter a passphrase.</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>Enter passphrase (empty for no passphrase): [Type a passphrase] Enter same passphrase again: [Type passphrase again]</pre></td></tr></table><p><span style="color: rgb(0,0,0);"> </span>Which should give you something like this:</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>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</pre></td></tr></table><h3><span style="color: rgb(0,51,102);">Step 3. Add your SSH key to Embedian Gitlab Server</span></h3><hr /><p><span style="color: rgb(0,0,0);"> </span>Copy the key to your clipboard.</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAABDAQABAAABAQDQUEnh8uGpfxaZVU6+uE4bsDrs/tEE5/BPW7jMAxak 6qgOh6nUrQGBWS+VxMM2un3KzwvLRJSj8G4TnTK2CSmlBvR+X8ZeXNTyAdaDxULs/StVhH+QRtFEGy4o iMIzvIlTyORY89jzhIsgZzwr01nqoSeWWASd+59JWtFjVy0nwVNVtbek7NfuIGGAPaijO5Wnshr2uChB Pk8ScGjQ3z4VqNXP6CWhCXTqIk7EQl7yX2GKd6FgEFrzae+5Jf63Xm8g6abbE3ytCrMT/jYy5OOj2XSg 6jlxSFnKcONAcfMTWkTXeG/OgeGeG5kZdtqryRtOlGmOeuQe1dd3I+Zz3JyT your_email@example.c om</pre></td></tr></table><p>Go to <a href="http://git.embedian.com/">Embedian Git Server</a>. At <span style="color: rgb(0,51,102);">Profile Setting --> SSH Keys --> Add SSH Key </span></p><p>Paste your public key and press "<span style="color: rgb(0,51,102);">Add Key</span>" and your are done.</p><h1><span style="color: rgb(0,51,102);">Overview of this document</span></h1><hr /><p>The objective of this document is to guide SMARC-FiMX6 Android developers to obtain Android N7.1.2_2.0.0_ga Nougat sources, setting up host environment, compilation and deployment.</p><p>This document contains instructions for:</p><ul><li>Hardware and software requirements.</li><li>Setup the hardware.</li><li>Setup the toolchain.</li><li>Download & build the sources.</li><li>Install the binaries on the SMARC-FiMX6 SOM.</li></ul><h1><span style="color: rgb(0,51,102);">Hardware Requirement</span></h1><hr /><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">EVK-STD-CARRIER and SMARC-FiMX6.</span></span><span style="color: rgb(0,0,0);"> </span></p><h2><span class="mw-headline" style="color: rgb(0,51,102);">Host (PC) setup requirements</span></h2><p>The host development environment for Android is based on Ubuntu and Debian, please install Ubuntu version 14.04 64bit LTS <span class="nolink"><a href="http://www.ubuntu.com/download/desktop">http://www.ubuntu.com/download/desktop</a></span> or Debian 8.4 64bit <span class="nolink"><a href="https://www.debian.org/releases">https://www.debian.org/releases</a></span></p><table class="wysiwyg-macro" data-macro-name="note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p>Do not use other Ubuntu or Debian releases, than recommended above.</p></td></tr></table><h3><span class="mw-headline" style="color: rgb(0,51,102);">Install required packages on host PC</span></h3><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ sudo apt-get -y install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib $ sudo apt-get -y install libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils $ sudo apt-get -y install xsltproc unzip mtd-utils u-boot-tools lzop liblzo2-2 liblzo2-dev zlib1g-dev liblz-dev uuid uuid-dev android-tools-fsutils</pre></td></tr></table><h3><span class="mw-headline" style="color: rgb(0,51,102);">Install the OpenJDK</span></h3><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ sudo apt-get update $ sudo apt-get install openjdk-8-jdk</pre></td></tr></table><p><br />Update the default Java version by running:</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ sudo update-alternatives --config java $ sudo update-alternatives --config javac</pre></td></tr></table><table class="wysiwyg-macro" data-macro-name="note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p>The build machine should have at least 50GB of free space to complete the build process.</p></td></tr></table><h1><span style="color: rgb(0,51,102);">Obtain Source Code</span></h1><hr /><h2><span class="mw-headline" style="color: rgb(0,51,102);">Get NXP's Android Release Package</span></h2><div class="paragraph"><div class="paragraph"><div class="paragraph"><div class="paragraph"><div class="paragraph"><p>Go to NXP's website, download IMX6_N7.1.2_2.0.0_ANDROID_SOURCE_BSP (filename: android_N7.1.2_2.0.0_source.tar.gz) and put into your ~/downloads directory.</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/downloads $ tar xvfz android_N7.1.2_2.0.0_source.tar.gz</pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Download Google Android</span><span class="mw-headline"> </span><span class="mw-headline" style="color: rgb(0,51,102);">Nougat N7.1.2_r9</span></h2><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ mkdir -p ~/android/smarcfimx6/n_712_200_build $ cd ~/android/smarcfimx6/n_712_200_build $ mkdir ~/bin $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ export PATH=~/bin:$PATH $ repo init -u https://android.googlesource.com/platform/manifest -b android-7.1.2_r9 $ repo sync -j4 # clone bpt.git from google repo, and checkout to the b7c3059e5d8c408f60222edc898ef1c229d8fc2d commit. $ cd system/tools $ git clone https://android.googlesource.com/platform/system/tools/bpt $ cd bpt $ git checkout -b n7.1.2_2.0.0-ga b7c3059e5d8c408f60222edc898ef1c229d8fc2d</pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Clone Embedian's U-Boot and Linux kernel sources</span></h2><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ mkdir -p ~/android/smarcfimx6/n_712_200_build/bootable/bootloader $ cd ~/android/smarcfimx6/n_712_200_build/bootable/bootloader $ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git uboot-imx $ cd uboot-imx $ git checkout smarc-n7.1.2_2.0.0-ga $ cd ~/android/smarcfimx6/n_712_200_build $ git clone git@git.embedian.com:developer/smarc-fsl-linux-kernel.git kernel_imx $ cd kernel_imx $ git checkout smarc-n7.1.2_2.0.0-ga </pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Apply all the i.MX Android patches with Freescale i.MX6 support</span></h2><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/android/smarcfimx6/n_712_200_build Assume you have extraxted the i.MX Android release package to /opt/android_N7.1.2_2.0.0_source. $ source source /opt/android_N7.1.2_2.0.0_source/code/N7.1.2_2.0.0/and_patch.sh **** Invoke ". and_patch.sh" from your shell to add following functions to your environment: ****-- c_gotop: Changes directory to the top of the tree ****-- c_patch: Recover working tree to base version and then applying FSL android patch $ c_patch /opt/android_N7.1.2_2.0.0_source/code/N7.1.2_2.0.0/ imx_N7.1.2_2.0.0-ga If everything is OK, "c_patch" generates the following output to indicate the successful patch: ***************************************************************** Success: Now you can build the Android code for FSL i.MX platform *****************************************************************</pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Apply Embedian's i.MX6 platforms' patches</span></h2><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/android/smarcfimx6/n_712_200_build/device $ git clone http://git.embedian.com/developer/smarc-fimx6-android.git embedian $ cd embedian $ git checkout smarc-n7.1.2_2.0.0-ga $ embedian/scripts/install.sh</pre></td></tr></table><h1><span class="mw-headline" style="color: rgb(0,51,102);">Build Android Images</span></h1><hr />Change to Android top level directory.<br /><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/android/smarcfimx6/n_712_200_build $ source build/envsetup.sh $ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 $ export PATH=$JAVA_HOME/bin/:$PATH $ lunch smarc_mx6-eng or $ lunch smarc_mx6-user $ make -j4 2>&1 | tee build1-1.log</pre></td></tr></table><table class="wysiwyg-macro" data-macro-name="note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><span style="color: red;"><span style="color: rgb(51,51,51);">smarc</span></span>_mx6-user creates a production version of the Android Nougat. smarc_mx6-eng creates an engineering version of the Android Nougat. Development mode enable and development tools are available on target. The default is to build image for eMMC.</p></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Switching from eMMC build to SD card build</span></h2><p>The default configuration in the source code package takes internal eMMC as the boot storage. It can be changed to make the SD card as the boot storage as follows:</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>1. Remove /out/target/product/smarc_mx6/root directory and boot*.img. 2. Remove /out/target/product/smarc_mx6/recovery directory and recovery*.img. 3. Build the boot.img and recovery.img as follows: $ make bootimage BUILD_TARGET_DEVICE=sd $ make recoveryimage BUILD_TARGET_DEVICE=sd</pre></td></tr></table><h2><span style="color: rgb(0,51,102);">Images created by the Android build for Embedian SMARC-FiMX6 system</span></h2><p>All images will be created under <span style="color: rgb(0,51,102);"><em>out/target/product/smarc_mx6</em></span> directory.</p><table class="confluenceTable"><tbody><tr><th class="confluenceTh">Image</th><th class="confluenceTh">Description</th></tr><tr><td class="confluenceTd">boot-<<em>name1</em>>-<<em>name2</em>>.img</td><td class="confluenceTd">Boot image that contains zImage, device tree blob and ramdisk</td></tr><tr><td class="confluenceTd">recovery-<<em>name1</em>>-<<em>name2</em>>.img</td><td class="confluenceTd">Recovery image that contains zImage, device tree blob and ramdisk</td></tr><tr><td class="confluenceTd">system.img</td><td class="confluenceTd">Android system image file.</td></tr><tr><td class="confluenceTd">u-boot-<<em>defconfig</em>>.img</td><td class="confluenceTd">Bootloader</td></tr></tbody></table><table class="wysiwyg-macro" data-macro-name="note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><ol><li><<em>name1</em>>:<span style="color: rgb(0,51,102);"><em> smarcfimx6dl</em></span> is for solo and dual lite core, <em><span style="color: rgb(0,51,102);">smarcfimx6dq</span></em> is for dual and quad core and <span style="color: rgb(0,51,102);"><em>smarcfimx6qp</em></span> is for quadplus core<em> i.MX6</em> processor.</li><li><<em>name2</em>>: If display output is HDMI or parallel RGB, this field is not necessary. If display output is LVDS LCD, this field stands for the LVDS LCD resolutions (<em>wvga, wxga, xga, 1080p</em>, etc...). </li><li><<em>defconfig</em>>: This is the u-boot defconfig file. If you use quad core and 1GB DDR3L memory, SER3 as your console output port, the u-boot file that you should use is <em>u-boot-smarcfimx6_quad_1g_ser3_android_defconfig.imx</em>. If you use dual lite core and use SER3 as console output, the u-boot file that you should use is <em>u-boot-smarcfimx6_dl_1g_ser3_android_defconfig.imx</em>.</li></ol></td></tr></table><h1><span class="mw-headline"><span style="color: rgb(0,51,102);">Setup Bootloader</span></span></h1><hr /><p>U-Boot boots from on-module SPI NOR flash, and the rest of the Android images will be loaded from SD card or on-module eMMC.</p><p>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 <em>u-boot-<defconfig>.imx</em> is pre-installed in SPI NOR flash at factory default. SMARC-FiMX6 is designed to always boot up from SPI NOR flash and to load other Android images based on the setting of <em>BOOT_SEL</em>. If users need to fuse their own u-boot or perform u-boot upgrade. This section will instruct you how to do that.</p><p>For these instruction, we are assuming: DISK=/dev/mmcblk0, "lsblk" is very useful for determining the device id.</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><span style="color: rgb(0,51,102);">$ export DISK=/dev/mmcblk0</span></p></td></tr></table><p>Erase SD card:</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><span style="color: rgb(0,51,102);">$ <code class="java plain">sudo dd </code><code class="java keyword">if</code><code class="java plain">=/dev/zero of=${DISK} bs=1M count=</code><code class="java value">16</code></span></p></td></tr></table><p>Create Partition Layout:</p><p><strong>With util-linux v2.26, sfdisk was rewritten and is now based on libfdisk</strong>.</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=sfdisk" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1zZmRpc2t9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo sfdisk --version</code></span></div><div class="line number1 index0 alt2"><code><span style="color: rgb(0,51,102);">sfdisk from util-linux 2.17.1</span></code></div></td></tr></table><p>Create Partitions:</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="title=sfdisk >\=2.26.x" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86dGl0bGU9c2ZkaXNrID49Mi4yNi54fQ&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo sfdisk ${DISK} <<-__EOF__</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java value">1M</code><code class="java plain">,</code><code class="java value">48M</code><code class="java plain">,</code><code class="java value">0x83</code><code class="java plain">,*</code></span></div><div class="line number3 index2 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">,,,-</code></span></div><div class="line number4 index3 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">__EOF__</code></span></div></td></tr></table><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="title=sfdisk <\=2.25" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86dGl0bGU9c2ZkaXNrIDw9Mi4yNX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo sfdisk --in-order --Linux --unit M ${DISK} <<-__EOF__</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java value">1</code><code class="java plain">,</code><code class="java value">48</code><code class="java plain">,</code><code class="java value">0x83</code><code class="java plain">,*</code></span></div><div class="line number3 index2 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">,,,-</code></span></div><div class="line number4 index3 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">__EOF__</code></span></div></td></tr></table><p>Format Partitions:</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><span style="color: rgb(153,51,0);"><code class="java keyword">for</code><code class="java plain">: DISK=/dev/mmcblk0</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkfs.vfat -F </code><code class="java value">16</code> <code class="java plain">${DISK}p1 -n boot</code></span></div><div class="line number4 index3 alt1"> </div><div class="line number5 index4 alt2"><span style="color: rgb(128,0,0);"><code class="java keyword">for</code><code class="java plain">: DISK=/dev/sdX</code></span></div><div class="line number6 index5 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkfs.vfat -F </code><code class="java value">16</code> <code class="java plain">${DISK}</code><code class="java value">1</code> <code class="java plain">-n boot</code></span></div></td></tr></table><p>Mount Partitions:</p><p><strong>On some systems, these partitions may be auto-mounted...</strong></p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkdir -p /media/boot/</code></span></div><div class="line number3 index2 alt2"> </div><div class="line number4 index3 alt1"><span style="color: rgb(128,0,0);"><code class="java keyword">for</code><code class="java plain">: DISK=/dev/mmcblk0</code></span></div><div class="line number5 index4 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mount ${DISK}p1 /media/boot/</code></span></div><div class="line number7 index6 alt2"><code class="java plain"> </code></div><div class="line number8 index7 alt1"><span style="color: rgb(128,0,0);"><code class="java keyword">for</code><code class="java plain">: DISK=/dev/sdX</code></span></div><div class="line number9 index8 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mount ${DISK}</code><code class="java value">1</code> <code class="java plain">/media/boot/</code></span></div></td></tr></table><p style="margin-left: 30.0px;">Copy u-boot-<defconfig>.imx to the boot partition.</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/android/smarcfimx6/n_712_200_build/out/target/product/smarc_mx6" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L2FuZHJvaWQvc21hcmNmaW14Ni9uXzcxMl8yMDBfYnVpbGQvb3V0L3RhcmdldC9wcm9kdWN0L3NtYXJjX214Nn0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><hr /></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo cp -v u-boot-<defconfig>.imx /media/boot/u-boot.imx</code></span></div></td></tr></table><h3><span style="color: rgb(0,51,102);">Install Bootloader</span></h3><h4 style="margin-left: 30.0px;"><span style="color: rgb(0,51,102);">If SPI NOR Flash is not empty (Factory Default)</span></h4><p style="margin-left: 30.0px;">Fuse u-boot.imx to the SPI NOR flash.</p><p style="margin-left: 30.0px;">Insert the SD card that you just made into EVK-STD-CARRIER SD card slot. Stop at U-Boot command prompt (Press any key when booting up). Copy and Paste the following script under u-boot command prompt.</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=u-boot command prompt" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT11LWJvb3QgY29tbWFuZCBwcm9tcHR9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><hr /></div><pre class="line number1 index0 alt2">U-Boot# mmc rescan; mmc dev; load mmc 0:1 0x10800000 u-boot.imx; sf probe; sleep 2; sf erase 0 0xc0000;<span style="color: rgb(0,51,102);"> sf write 0x10800000 0x400 80000</span></pre></td></tr></table><h4 style="margin-left: 30.0px;"><span style="color: rgb(0,51,102);">If SPI NOR Flash is empty</span></h4><p style="margin-left: 30.0px;">In some cases, when SPI NOR flash is erased or the u-boot is under development, we need a way to boot from SD card first. Users need to shunt cross the <strong><em><span style="color: rgb(0,51,102);">TEST#</span></em></strong> pin to ground. In this way, <em>SMARC-FiMX6</em> will always boot up from SD card. </p><p style="margin-left: 30.0px;">Insert the same SD card into your host Linux PC. </p><p style="margin-left: 30.0px;">Copy u-boot.imx to the SD card.</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/android/smarcfimx6/n_712_200_build/out/target/product/smarc_mx6" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L2FuZHJvaWQvc21hcmNmaW14Ni9uXzcxMl8yMDBfYnVpbGQvb3V0L3RhcmdldC9wcm9kdWN0L3NtYXJjX214Nn0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><hr /></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ <em>sudo dd if=u-boot-<defconfig>.imx of=${DISK} bs=512 seek=2</em></code></span></div></td></tr></table><p style="margin-left: 30.0px;">Insert the SD card into EVK-STD-CARRIER. Stop at U-Boot command prompt (Press any key when booting up). Copy and Paste the following script under u-boot command prompt (assuming that you have <span style="color: rgb(0,51,102);"><em>u-boot-<defconfig>.imx</em> </span>copy to the first partition of your SD card.)</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=u-boot command prompt" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT11LWJvb3QgY29tbWFuZCBwcm9tcHR9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><hr /></div><pre class="line number1 index0 alt2">U-Boot# mmc rescan; mmc dev; load mmc 0:1 0x10800000 u-boot.imx; sf probe; sleep 2; sf erase 0 0xc0000;<span style="color: rgb(0,51,102);"> sf write 0x10800000 0x400 80000</span></pre></td></tr></table><h1><span class="mw-headline" style="color: rgb(0,51,102);">Setup SD card</span></h1><hr /><p><span class="mw-headline" style="color: rgb(0,51,102);"> </span>Prepare for the othe SD card that is differmt from the one for bootloader. Insert into your Linux host PC</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/android/smarcfimx6/n_712_200_build/ $ sudo ./emb-mksdcard.sh -f <name1>-<name2> /dev/sdX;sync</pre></td></tr></table><table class="wysiwyg-macro" data-macro-name="note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><ol><li><<em>name1</em>>:<span style="color: rgb(0,51,102);"><em> smarcfimx6dl</em></span> is for solo and dual lite core and <em><span style="color: rgb(0,51,102);">smarcfimx6dq</span></em> is for dual and quad core<em> i.MX6</em> processor.</li><li><<em>name2</em>>: If display output is HDMI or parallel RGB, this field is not necessary. If display output is LVDS LCD, this field stands for the LVDS LCD resolutions (<em>wvga, wxga, xga, 1080p</em>, etc...). </li><li>The u-boot built in this script is to boot up from SD card (with <span style="color: rgb(0,51,102);"><em><strong>TEST#</strong></em></span> shunt cross to ground).</li></ol></td></tr></table><h1><span class="mw-headline" style="color: rgb(0,51,102);">Setup eMMC</span></h1><hr /><p><span>First, make sure the images that you built is for eMMC</span>.</p><p>Setup eMMC for Android is a bit complex, but trivial. There are a couple of ways to achieve it. </p><h2><span style="color: rgb(0,51,102);">Use MFG Tools v2</span></h2><hr /><p><em>NXP/Freescale</em> provides with a way to boot up, partition, format, and program images into eMMC. User can go to NXP's website to download mfgtool and follow their guide to achieve it. We will leave it to users if you would like to use this method to set up your eMMC. Make sure that the <span style="color: rgb(0,51,102);"><em>FORCE_RECOV#</em></span><span> pin has to be shunt to Ground when using this tool.</span></p><h2><span style="color: rgb(0,51,102);">Use a Ubuntu 14.04 Bootable SD card</span></h2><hr /><p><span>The second way that we also recommend is to make a bootable Ubuntu 14.04 SD card for SMARC-FiMX6. User go to our <span style="color: rgb(0,0,128);"> </span><a href="http://developer.embedian.com/display/LOS/SMARC-FiMX6"><span style="color: rgb(0,0,128);"> </span></a><a href="http://developer.embedian.com/display/LOS/SMARC-FiMX6"><span style="color: rgb(0,0,128);">Linux Development Site</span></a></span> to learn how to make a bootable Ubuntu 14.04 SD card. An prr-built images can be downloaded from our<a href="ftp://ftp.embedian.com/public/smarcfimx6_ubuntu/"> ftp site</a>. Users can download those images and follow the "Setup SD card" section from our Linux development site. Once it done, you can copy the <em><span style="color: rgb(0,0,128);">emb-mksdcard.sh </span></em><span style="color: rgb(0,0,128);"><span style="color: rgb(51,51,51);">scipt and all Android images into your home directory. Follow exactly what you did for SD card, but now, eMMC device will be emulated as /dev/mmcblk3. </span></span></p><p><span style="color: rgb(0,0,128);"> </span></p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ sudo ./emb-mksdcard.sh -f <name1>-<name2> /dev/mmcblk3;sync</pre></td></tr></table><table class="wysiwyg-macro" data-macro-name="note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><ol><li><<em>name1</em>>:<span style="color: rgb(0,51,102);"><em> smarcfimx6dl</em></span> is for solo and dual lite core and <em><span style="color: rgb(0,51,102);">smarcfimx6dq</span></em> is for dual and quad core<em> i.MX6</em> processor.</li><li><<em>name2</em>>: If display output is HDMI or parallel RGB, this field is not necessary. If display output is LVDS LCD, this field stands for the LVDS LCD resolutions (<em>wvga, wxga, xga, 1080p</em>, etc...).</li></ol></td></tr></table><p>Power off and set BOOT_SEL to OFF ON ON and you will be able to boot up your Android from on-module eMMC.</p><h2><span style="color: rgb(0,51,102);">Use USB Fastboot</span></h2><hr /><div class="paragraph">The third way is to use Android USB fast boot. This way will work only when the on-module eMMC is partitioned and formatted. To partition and format the on-module eMMC. You can use the SD card mentioned above.</div><div class="paragraph"><p> </p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ sudo ./emb-mksdcard.sh -np /dev/mmcblk3</pre></td></tr></table><p>Once you have your on-module eMMC partitioned and formated.</p><p>On your Linux host PC, you need to install Android tools.</p></div><div class="paragraph"><p> </p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Eclipse" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9RWNsaXBzZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ sudo apt-get install android-tools-adb android-tools-fastboot</pre></td></tr></table><p><span style="color: rgb(0,51,102);"><strong>Connect the device with host PC at fastboot mode:</strong></span></p><ol><li>Connect a USB OTG cable from the target board OTG port to a your host machine USB HOST port.</li><li>Power up the board and hit return/space to stop the boot at U-Boot.</li><li>type <strong>fastboot</strong> in the U-Boot command line.</li></ol><p><span style="color: rgb(0,51,102);"><strong>On the Host PC:</strong></span></p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ sudo fastboot flash boot out/target/product/smarc_mx6/boot-<name1>-<name2>.img $ sudo fastboot flash recovery out/target/product/smarc_mx6/recovery-<name1>-<name2>.img $ sudo fastboot flash system out/target/product/smarc_mx6/system.img $ sudo fastboot reboot</pre></td></tr></table><h1><span style="color: rgb(0,51,102);">Android Recovery Mode</span></h1><hr /><h2><span style="color: rgb(0,51,102);">Enter board in Android Recovery mode</span></h2></div><p>Shunt LID# pin to ground will enter Android Recovery mode.</p><h2><span style="color: rgb(0,51,102);">Update Android Firmware</span></h2><h4><span style="color: rgb(0,51,102);">Generate OTA Packages</span></h4><p><span style="color: rgb(0,0,128);"><span style="color: rgb(0,0,0);">For generating "OTA" packages, use the following commands:</span></span></p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/android/smarcfimx6/m_601_210_build/ # if Android for SD card $ make -j4 BUILD_TARGET_DEVICE=sd otapackage 2>&1 | tee build1-1.log # if Android for eMMC $ make -j4 otapackage 2>&1 | tee build1-1.log</pre></td></tr></table><h4><span style="color: rgb(0,0,128);"><span style="color: rgb(0,51,102);">Install OTA Packages to device </span></span></h4><ol><li>Enter to Android Recovery mode</li><li>Select menu item "apply update from ADB" </li><li>To the host system, perform the following command:</li></ol><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ out/host/linux-x86/bin/adb sideload out/target/product/smarc_mx6/smarc_mx6-ota-<data>-<image-id>.zip</pre></td></tr></table><p>Reboot the device.</p><table class="wysiwyg-macro" data-macro-name="note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><span style="color: rgb(0,0,0);">Real example name for OTA package: </span><em>out/target/product/smarc_mx6/smarc_mx6-ota-20170114-smarcfimx6dq-wvga.zip</em></p></td></tr></table><h1><span style="color: rgb(0,51,102);">Manual Operations</span></h1><hr /><h2><span style="color: rgb(0,51,102);">Build boot.img</span></h2><hr /><p><span style="color: rgb(0,51,102);"> </span>When you perform changes to the kernel, you may build boot.img solely instead of building the whole Android.</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/android/smarcfimx6/n_712_200_build/ $ source build/envsetup.sh $ lunch smarc_mx6-user (or smarc_mx6-eng) $ make bootimage</pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Toolchain setup for manual build kernel and U-Boot</span></h2><hr /><p><span class="mw-headline" style="color: rgb(0,51,102);"> </span>Setup the toolchain path to point to arm-eabi- tools in prebuilts/gcc/linux-x86/arm/arm-eabi-4.8/bin</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ export ARCH=arm $ export CROSS_COMPILE=~/android/smarcfimx6/n_712_200_build/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-</pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Manual build Bootloader</span></h2><hr /><p><span class="mw-headline" style="color: rgb(0,51,102);"> </span>Change directory to U-Boot</p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/android/smarcfimx6/n_712_200_build/bootable/bootloader/uboot-imx</pre></td></tr></table><p><span style="color: rgb(0,0,0);">Execute following commands:</span></p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ make distclean $ make smarcfimx6_quad_1g_ser3_android_defconfig $ make -j4</pre></td></tr></table><table class="wysiwyg-macro" data-macro-name="note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGV9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><em><strong><span style="color: rgb(0,51,102);">Note1:</span></strong></em></p><p>If the board is SMARC-FiMX6-Q-2G or SMARC-FiMX6-D-2G, use<br /><span style="color: rgb(0,51,102);">$ make ARCH=arm CROSS_COMPILE=${CC} smarcfimx6_quad_2g_ser3_android_defconfig</span></p><p><span style="color: rgb(0,51,102);"> </span>If the board is SMARC-FiMX6-Q-1G or SMARC-FiMX6-D-1G, use<br /><span style="color: rgb(0,51,102);">$ make ARCH=arm CROSS_COMPILE=${CC} smarcfimx6_quad_1g_ser3_android_defconfig</span></p><p><span style="color: rgb(0,51,102);"> </span>If the board is SMARC-FiMX6-U-1G, use<br /><span style="color: rgb(0,51,102);">$ make ARCH=arm CROSS_COMPILE=${CC} smarcfimx6_dl_1g_ser3_android_defconfig</span></p><p><span style="color: rgb(0,51,102);"> </span>If the board is SMARC-FiMX6-S, use<br /><span style="color: rgb(0,51,102);">$ make ARCH=arm CROSS_COMPILE=${CC} smarcfimx6_solo_ser3_android_defconfig</span></p><p><span style="color: rgb(0,51,0);"><em><strong>Note 2:</strong></em></span></p><p>"<em>ser3</em>" stands for console debug port. In this example, we uses SER3 as debug port. If user uses SER0 as your debug port, make change to "<em>ser0</em>" instead. Same as SER1 and SER2.</p><p><span style="color: rgb(0,51,0);"><em><strong>Note 3:</strong></em></span></p><p>The <em>SMARC-FiMX6</em> module always boot up from the onboard <em>SPI NOR</em> flash. The factory default will be <em>u-boot.imx</em> pre-installed. In some cases when the <em>SPI NOR</em> flash is empty or needs to be upgraded. Users can shunt crossed the <em>TEST#</em> to ground. In this way, the <em>SMARC-FiMX6</em> module will boot up to carrier SD card, if <em>TEST#</em> pin is shunt crossed. The <em>u-boot.imx</em> image are the same, the difference is how you flash <em>u-boot.imx</em>. This will be explained in the "Setup Bootloader" and "Setup SD card" section.</p></td></tr></table><p>It will generate u-boot.imx file.</p><h2><span style="color: rgb(0,51,102);">Manual build Android Linux Kernel and modules</span></h2><hr /><p> </p><table class="wysiwyg-macro" data-macro-name="code" data-macro-parameters="language=cpp|theme=Confluence" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2NvZGU6dGhlbWU9Q29uZmx1ZW5jZXxsYW5ndWFnZT1jcHB9&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="PLAIN_TEXT"><tr><td class="wysiwyg-macro-body"><pre>$ cd ~/android/smarcfimx6/n_712_200_build/kernel_imx $ make distclean $ make smarcfimx6_android_defconfig $ make -j4 uImage LOADADDR=0x10008000 KCFLAGS=-mno-android $ make -j4 modules</pre></td></tr></table><p><span style="color: rgb(0,0,0);">This will generate the uImage (kernel image) in the kernel/arch/arm/boot folder</span></p><div><div class="paragraph"><div class="paragraph"><div class="paragraph"><hr /><p>version 1.0a,6/15/2018</p><p>Last updated 2018-06-15</p></div></div></div></div></div><p><span style="color: rgb(0,51,102);"><br /></span></p><div class="paragraph"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span></div></div></div></div></div></div></div>
If you are unable to use this CAPTCHA please
contact your administrator
for assistance.
Attachments
Labels
Location
Edit
Preview
Save
Cancel
Next hint