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
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 Q10.0.0_1.0.0 BSP Distribution</span></h1><p><span style="color: rgb(0,51,102);"><strong>Eric Lee</strong></span></p><p>version 1.0a, 7/23/2020</p><h1><span style="color: rgb(0,51,102);">Introduction</span></h1><hr /><div class="paragraph"><p>This document describes how to build and deploy Android Oreo on the SMARC-iMX8MM. It is based on NXP's IMX8M_Q10.0.0_1.0.0-GA ANDROID release.</p><p> </p></div><div class="paragraph"><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-iMX8MM Android developers to obtain Android Q10.0.0_1.0.0-ga Pie 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-iMX8MM 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-S20 and SMARC-iMX8MM.</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 16.04 64bit LTS <span class="nolink"><a href="http://www.ubuntu.com/download/desktop">http://www.ubuntu.com/download/desktop</a></span> or Debian 9.6 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 <a class="dtmcustomrulelink" href="https://www.nxp.com/webapp/Download?colCode=Q10.0.0_1.0.0_ANDROID_SOURCE&appType=license">Q10.0.0_1.0.0_ANDROID_SOURCE</a> (filename: <code><span style="color: rgb(0,51,102);">imx-android-10.0.0_1.0.0.tar.gz</span></code> 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 imx-android-10.0.0_1.0.0.tar.gz</pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Obtain Google Android</span><span class="mw-headline"> <span style="color: rgb(0,51,102);">Pie</span></span><span class="mw-headline" style="color: rgb(0,51,102);"> Q10.0.0_1.0.0-ga source code and Apply NXP's patch</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/smarcimx8mm/q_1000_100 $ cd ~/android/smarcimx8mm/q_1000_100 $ mkdir ~/bin $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo $ export PATH=~/bin:$PATH $ mv ~/download/imx-android-10.0.0_1.0.0 . $ source imx-android-10.0.0_1.0.0/imx_android_setup.sh</pre></td></tr></table><p><span style="color: rgb(0,0,0);">After done, it will create an android_build directory. Go to this directory.</span></p><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>$ cd ~/android/smarcimx8mm/q_1000_100/android_build $ mkdir -p vendor/embedian $ cd vendor/embedian $ git clone git@git.embedian.com:developer/smarc-t335x-uboot.git uboot-imx -b smarc-8mm-q10.0.0_1.0.0_ga $ git clone git@git.embedian.com:developer/smarc-fsl-linux-kernel.git kernel_imx -b smarc-8mm-q10.0.0_1.0.0_ga</pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Apply Embedian's patches for i.MX8M Mini platforms</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/smarcimx8mm/q_1000_100/android_build/device $ git clone git@git.embedian.com:developer/smarc-imx8m-android.git embedian -b smarc-8mm-q10.0.0_1.0.0_ga $ embedian/scripts/install.sh</pre></td></tr></table><h1><span style="color: rgb(0,51,102);">ARM Cross Compiler: GCC</span> </h1><hr /><p><span style="color: rgb(0,0,0);">To build Embedian’s </span><em>SMARC-iMX8MM</em><span style="color: rgb(0,0,0);"> Android 10.0, you will need to install the following ARM GNU aarch64 compiler first: </span><span style="color: rgb(0,51,102);"> </span></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><code><span style="color: rgb(0,51,102);">$ wget -c <span class="nolink"><span class="nolink"><span class="nolink">https://developer.arm.com/-/media/Files/downloads/gnu-a/8.3-2019.03/binrel/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz</span></span></span><span class="nolink"> </span></span></code></p><p><code><span style="color: rgb(0,51,102);">$ sudo tar -C /opt -xJf gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu.tar.xz</span></code></p><p><code><span style="color: rgb(0,51,102);">$ export AARCH64_GCC_CROSS_COMPILE=/opt/gcc-arm-8.3-2019.03-x86_64-aarch64-linux-gnu/bin/aarch64-linux-gnu-</span></code></p></td></tr></table><h1><span 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>$ export MY_ANDROID=~/android/smarcimx8mm/q_1000_100/android_build $ cd ${MY_ANDROID} $ source build/envsetup.sh $ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 $ export PATH=$JAVA_HOME/bin/:$PATH $ lunch smarc_mx8mm-eng or $ lunch smarc_mx8mm-userdebug $ ./imx-make.sh -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);"><span style="color: rgb(0,0,0);">userdebug build creates a debuggable version of Android. eng build creates an engineering version of Android. Development mode enable and development tools are available on target.</span></span></span></p></td></tr></table><br /><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 commands below can achieve the same result as "<code>./imx-make.sh -j4 2>&1 | tee build1-1.log</code>":</p><p><code>$ ./imx-make.sh bootloader kernel -j4 2>&1 | tee build-log.txt</code><br /># Build U-Boot/kernel with imx-make.sh first, but not to build Android images.<br /><code>$ make -j4 2>&1 | tee -a build-log.txt</code><br /># Start the process of build Android images with "make" function.</p></td></tr></table><h1><span style="color: rgb(0,51,102);">Images created by the Android build for SMARC-iMX8MM system</span></h1><p><span style="color: rgb(0,0,0);">The images created are located at out/target/product/smarc_mx8mm/ directory.</span></p><table class="confluenceTable"><tbody><tr><th class="confluenceTh">Image</th><th class="confluenceTh">Description</th></tr><tr><td class="confluenceTd"><span style="color: rgb(0,51,102);"><code>u-boot-imx8mm-smarcim8mm_2g.imx</code></span></td><td class="confluenceTd"><p><span style="color: rgb(0,0,0);">Bootloader for eMMC/SD card boot for SMARC-iMX8MM-1/3/5/6-2G(-I)</span></p><p><span style="color: rgb(0,0,0);">Other SMARC variants could be defined at device/embedian/imx8m/smarc_mx8mm/BoardConfig.mk </span></p></td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">u-boot-imx8mm-smarcim8mm_2g_uuu.imx</span></code></td><td class="confluenceTd"><p><span style="color: rgb(0,0,0);">Bootloader used by uuu for eMMC/SD card boot for SMARC-iMX8MM-1/3/5/6-2G(-I)</span></p><p><span style="color: rgb(0,0,0);">Other SMARC variants could be defined at device/embedian/smarc_mx8m/BoardConfig.mk </span></p></td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">u-boot-imx8mm-smarcim8mm_4g.imx</span></code></td><td class="confluenceTd"><p><span style="color: rgb(0,0,0);">Bootloader for eMMC/SD card boot for SMARC-iMX8MM-5/6-4G(-I)</span></p><p><span style="color: rgb(0,0,0);">Other SMARC variants could be defined at device/embedian/imx8m/smarc_mx8mm/BoardConfig.mk </span></p></td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">u-boot-imx8mm-smarcim8mm_4g_uuu.imx</span></code></td><td class="confluenceTd"><p><span style="color: rgb(0,0,0);">Bootloader used by uuu for eMMC/SD card boot for SMARC-iMX8MM-5/6-4G(-I)</span></p><p><span style="color: rgb(0,0,0);">Other SMARC variants could be defined at device/embedian/imx8m/smarc_mx8mm/BoardConfig.mk </span></p></td></tr><tr><td class="confluenceTd"><span style="color: rgb(0,51,102);"><code>boot-smarcimx8mm.img</code></span></td><td class="confluenceTd">Boot image for SMARC-iMX8MM</td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">partition-table.img</span></code></td><td class="confluenceTd">GPT table image for 16GB SD card and eMMC.</td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">partition-table-7GB.img</span></code></td><td class="confluenceTd">GPT table image for 8GB SD card and eMMC.</td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">partition-table-28GB.img</span></code></td><td class="confluenceTd">GPT table image for 28GB SD card and eMMC.</td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">system.img</span></code></td><td class="confluenceTd">System Boot image</td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">vbmeta-smarcimx8mm.img</span></code></td><td class="confluenceTd">Android Verified Boot metadata Image for SMARC-iMX8MM to support different display output</td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">vendor.img</span></code></td><td class="confluenceTd">Vendor image</td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">dtbo-smarcimx8mm.img</span></code></td><td class="confluenceTd">Device Tree image for SMARC-iMX8MM to support different display output</td></tr></tbody></table><h1><span style="color: rgb(0,51,102);">UUU Scripts</span></h1><p><span style="color: rgb(0,0,0);"> </span>The table below describes the UUU scripts in android_q10.0.0_1.0.0-ga. They are used with the UUU binary file to download the images above into SMARC-iMX8MM SMARC modules.</p><table class="confluenceTable"><tbody><tr><th class="confluenceTh">UUU Script name</th><th class="confluenceTh">Function</th></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">uuu-android-smarc-mx8mm-emmc.lst</span></code></td><td class="confluenceTd"><p>Used with the UUU binary file to download image files into<br />eMMC.</p></td></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);">uuu-android-smarc-mx8mm-sd.</span><span style="color: rgb(0,51,102);">lst</span></code></td><td class="confluenceTd">Used with the UUU binary file to download image files into<br />SD card.</td></tr></tbody></table><h1><span 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 an SD card and 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>$ cp smarc-mksdcard.sh out/target/product/smarc_mx8mm/ $ cd out/target/product/smarc_mx8mm/ $ chmod a+x smarc-mksdcard.sh $ sudo ./smarc-mksdcard.sh -f smarcimx8mm -e <lpddr4_feature> /dev/sdX; sync</pre></td></tr></table><table class="confluenceTable"><tbody><tr><th class="confluenceTh"><p><span style="color: rgb(0,51,102);"><br /></span></p><p><code><span style="color: rgb(0,51,102);"><lpddr4_feature></span></code></p></th><th class="confluenceTh"><p><code><span style="color: rgb(0,51,102);"><em>2g </em></span></code>If the LPDDR4 memory capacity on your module is 2GB.</p><p> </p><p><code><em><span style="color: rgb(0,51,102);">4g </span></em></code>If the LPDDR4 memory capacity on your module is 4GB.</p></th></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>The minimum size of the SD card is 8 GB.</li><li><p>/dev/sdX, the X is the disk index from 'a' to 'z'. That may be different on each computer running Linux OS.</p></li><li><p>If the SD card is 16 GB, use "sudo ./smarc-mksdcard.sh -f <name> /dev/sdX" to flash images.</p></li><li>If the SD card is 8 GB, use "sudo ./smarc-mksdcard.sh -f <name> <span style="color: rgb(255,0,0);">-c 7</span> /dev/sdX" to flash images.</li><li>If the SD card is 32 GB, use "sudo ./smarc-mksdcard.sh -f <name> <span style="color: rgb(255,0,0);">-c 28</span> /dev/sdX" to flash images.</li></ol></td></tr></table><p>Insert the SD card into your device, set the <em>BOOT_SEL</em> to "ON OFF OFF" and shut cross the <em>TEST#</em> pin to Ground. You will be able to see Android booting up. For eMMC boot, leave the TEST# floating and the <em>BOOT_SEL</em> should be set as "OFF ON ON". The next section will instruct you to flash eMMC.</p><h1><span class="mw-headline" style="color: rgb(0,51,102);">Setup eMMC</span></h1><hr /><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 UUU</span></h2><hr /><p>UUU can be used to download all images into a target device. It is a quick and easy tool for downloading images. See the <span style="color: rgb(0,51,102);"><em>AndroidTM Quick Start Guide (AQSUG)</em></span> for detailed description of UUU.</p><p>Make sure that the <span style="color: rgb(0,51,102);"><em>FORCE_RECOV#</em></span> pin has to be shunt to Ground to enter into CPU serial download mode when using this tool. Connect USB0 min-B port of the device to your host computer.</p><p>Copy <em><code><span style="color: rgb(0,51,102);">uuu.exe, u-boot-imx8mm-smarcimx8mm-2g.imx, u-boot-imx8mm-smarcimx8mm-4g.imx, u-boot-imx8mm-smarcimx8mm-2g_uuu.imx, u-boot-imx8mm-smarcimx8mm-4g_uuu.imx, partition-table.img, boot.img, vbmeta-smarcimx8mm.img, system.img, vendor.img, dtbo-smarcimx8mm</span></code></em> and <code><span style="color: rgb(0,51,102);"><em>uuu-android-smarc-mx8mm-emmc.lst</em></span></code> into the same folder.</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>$ uuu uuu-android-smarc-mx8mm-emmc.lst</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>Make sure the module LPDDR4 memory capacity in the file of <em><span style="color: rgb(0,51,102);"><code>uuu-android-smarc-mx8mm-emmc.lst</code></span></em></p></td></tr></table><p>After done, make sure that <em><span style="color: rgb(0,51,102);"><code>FORCE_RECOV#</code></span></em> and <code><span style="color: rgb(0,51,102);"><em>TEST#</em></span></code> pins are floating. Change the <code><span style="color: rgb(0,51,102);"><em>BOOT_SEL</em></span></code> to OFF ON ON and the module will boot up from eMMC. </p><h2><span style="color: rgb(0,51,102);">Use a Ubuntu 18.04 Bootable SD card</span></h2><hr /><p>The second way that we also recommend is to make a bootable Ubuntu 16.04 SD card for SMARC-iMX8M. 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-iMX8M"><span style="color: rgb(0,0,128);">Linux Development Site</span></a> to learn how to make a bootable Ubuntu 16.04 SD card. An pre-built images can be downloaded from our<a href="ftp://ftp.embedian.com/public/smarcimx8m_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 smarc<em><span style="color: rgb(0,0,128);">-mksdcard.sh </span></em><span style="color: rgb(0,0,128);"><span style="color: rgb(51,51,51);">script and all Android images (u-boot-imx8mm-smarcimx8mm-2g.imx, u-boot-imx8mm-smarcimx8mm-4g.imx, </span></span>partition-table.img, boot.img, vbmeta-smarcimx8mm.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. <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 ./smarc-mkemmccard.sh -f smarcimx8mm -e <lpddr4_feature> /dev/mmcblk0; sync</pre></td></tr></table><table class="confluenceTable"><tbody><tr><th class="confluenceTh"><p><span style="color: rgb(0,51,102);"><br /></span></p><p><code><span style="color: rgb(0,51,102);"><lpddr4_feature></span></code></p></th><th class="confluenceTh"><p><code><span style="color: rgb(0,51,102);"><em>2g </em></span></code>If the LPDDR4 memory capacity on your module is 2GB.</p><p> </p><p><code><em><span style="color: rgb(0,51,102);">4g </span></em></code>If the LPDDR4 memory capacity on your module is 4GB.</p></th></tr></tbody></table><p>Power off and set <em>BOOT_SEL</em> to "OFF ON ON", leave the TEST# pin floating and you will be able to boot up your Android from on-module eMMC.</p><div class="paragraph"><p> </p></div><div class="paragraph"><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 ${MY_ANDROID} $ make PRODUCT=smarc_mx8mm-userdebug -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_mx8mm/smarc_mx8mm-ota-<data>-<name>.zip</pre></td></tr></table><p>smarc_mx8mm-ota-${date}.zip includes payload.bin and payload_properties.txt . The two files are used for full update.</p><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_mx8mm/smarc_mx8mm-ota-20180416-smarcimx8mm.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 ${MY_ANDROID} $ source build/envsetup.sh $ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 $ export PATH=$JAVA_HOME/bin/:$PATH $ lunch smarc_mx8mm-eng or $ lunch smarc_mx8mm-userdebug $ make bootimage</pre></td></tr></table><h2><span class="mw-headline" style="color: rgb(0,51,102);">Manual build Bootloader</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 ${MY_ANDROID} $ source build/envsetup.sh $ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 $ export PATH=$JAVA_HOME/bin/:$PATH $ lunch smarc_mx8mm-eng or $ lunch smarc_mx8mm-userdebug $ ./imx-make.sh bootloader -j4</pre></td></tr></table><p>It will generate <code>u-boot.imx, u-boot-imx8mm-smarcimx8mm_2g-dp.imx, u-boot-imx8mm-smarcimx8mm_2g.imx, u-boot-imx8mm-smarcimx8mm_2g_uuu-dp.imx, u-boot-imx8mm-smarcimx8mm_2g_uuu.imx, u-boot-imx8mm-smarcimx8mm_4g-dp.imx, u-boot-imx8mm-smarcimx8mm_4g.imx, u-boot-imx8mm-smarcimx8mm_4g_uuu-dp.imx and u-boot-imx8mm-smarcimx8mm_4g_uuu.imx</code> 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 ${MY_ANDROID} $ source build/envsetup.sh $ export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64 $ export PATH=$JAVA_HOME/bin/:$PATH $ lunch smarc_mx8mm-eng or $ lunch smarc_mx8mm-userdebug $ ./imx-make.sh kernel -j4</pre></td></tr></table><p><span style="color: rgb(0,0,0);">The kernel images are found in ${MY_ANDROID}/out/target/product/smarc_mx8mm/obj/KERNEL_OBJ/arch/arm64/boot/Image</span></p><div><div class="paragraph"><div class="paragraph"><div class="paragraph"><hr /><p>version 1.0a,7/23/2020</p><p>Last updated 2020-07-23</p></div></div></div></div></div><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