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
Yocto/Open Embedded on SMARC
Yocto/Open Embedded on SMARC
SMARC-FiMX7-BSP-Kirkstone
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 NXP/Embedian’s Yocto mickledore BSP Distribution</span></h1><p><span style="color: rgb(0,51,102);"><strong>Eric Lee</strong></span></p><p>version 1.0a, 10/28/2024</p><h1><span style="color: rgb(0,51,102);">Introduction</span></h1><hr /><p><span style="color: rgb(0,51,102);"> </span></p><div class="paragraph"><p>This document describes how Embedian builds a customized version of NXP’s i.MX7 official Yocto mickledore BSP release for Embedian's <em>SMARC-FiMX7</em> product platform. The approach is to pull from Embedian's public facing GIT repository and build that using bitbake. The reason why we use this approach is that it allows co-development. The build output is comprised of binary images, feed packages, and an SDK for <em>SMARC-FiMX7</em> specific development.</p></div><p><span style="color: rgb(0,51,102);"> </span></p><div class="paragraph"><p>NXP makes their i.MX series official bsp build scripts available via the following GIT repository:</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);"><a href="https://github.com/nxp-imx/meta-imx"><span style="color: rgb(0,51,102);">https://github.com/nxp-imx/meta-imx</span></a>/meta-bsp</span><a href="git://git.freescale.com/imx/meta-fsl-bsp-release"><br /></a></code></p></td></tr></table><p> </p><div class="paragraph"><span style="color: rgb(0,0,0);">Freescale community BSP release build script is available via the following repository:</span><span style="color: rgb(0,0,0);"> </span></div><div class="paragraph"><p> </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);"><a href="https://github.com/Freescale/meta-freescale-distro"><span style="color: rgb(0,51,102);">https://github.com/Freescale/meta-freescale-distro</span></a></span><a href="git://git.freescale.com/imx/fsl-arm-yocto-bsp.git"><br /></a></code></p></td></tr></table><p><span style="color: rgb(0,0,0);">It is this repository that actually pulls in the <span style="color: rgb(0,51,102);">meta-imx/meta-bsp</span></span><span style="color: rgb(0,0,0);"> project to perform the Linux BSP builds for NXP's i.MX7 ARM Cortext-A7 chips. </span><span style="color: rgb(0,0,0);"> </span></p><h1><span style="color: rgb(0,51,102);">Generating SSH Keys</span></h1><hr /><p><span style="color: rgb(0,0,0);"> </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:</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>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>.</p><h3><span style="color: rgb(0,51,102);">Step 2. Generate a new SSH key</span></h3><hr /><p>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 ed25519 -C "your_email@example.com" Generating public/private ed25519 key pair. Enter file in which to save the key (/home/eric/.ssh/id_ed25519): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/eric/.ssh/id_ed25519 Your public key has been saved in /home/eric/.ssh/id_ed25519.pub The key fingerprint is: SHA256:SS9opo/QHxT2cCwlX+ulhn3ZUVdhdG88vvliOVHJ/6c your_email@example.com The key's randomart image is: +--[ED25519 256]--+ | . . . .+B| | = . . .o+| | = = . . o.=| | . O * o o.=o| | = S * o .o.| | . = o . . +| | . o . =.| | . + . = +| | . o .E+o| +----[SHA256]-----+</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>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_ed25519 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><span>Go to </span><a href="http://git.embedian.com/">Embedian Git Server</a><span>. At </span><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 the</span> <em><span style="color: rgb(128,128,128);">meta-embedian</span></em> <span style="color: rgb(0,51,102);">Yocto Layer</span></h1><hr /><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">The supplied </span>meta-embedian<span style="color: rgb(0,0,0);"> Yocto compliant layer has the following organization:</span></span></p><p><strong><span style="color: rgb(0,51,102);"><span style="color: rgb(82,123,189);"> </span></span></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"><p><code><span style="color: rgb(0,51,102);">. <br /><span>|-- conf </span><br /><span>| |-- layer.conf </span><br /><span>| |-- machine</span><br /><span>| |-- include<br /></span><span>| | |-- imx8mp-emb.inc<br /></span><span>| |-- smarcimx932g.conf<br /><span>| |-- smarcimx931g.conf</span></span><br /><span>| |-- pitximx8mp2g.conf</span><br /><span>| |-- pitximx8mp4g.conf</span><br /><span>| |-- pitximx8mp6g.conf<br /></span><span>| |-- smarcimx8qm8g.conf</span><br /><span>| |-- smarcimx8qm4g.conf</span><br /><span>| |-- smarcimx8mp6g.conf</span><br /><span>| |-- smarcimx8mp4g.conf</span><br /><span>| |-- smarcimx8mp2g.conf</span><br /><span>| |-- smarcimx8mq4g.conf</span><br /><span>| |-- smarcimx8mq2g.conf</span><br /><span>| |-- smarcimx8mm4g.conf</span><br /><span>| |-- smarcimx8mm2g.conf<br /></span><span>| |-- smarcfimx7d2g.conf</span><br /><span>| |-- smarcfimx7d.conf</span><br /><span>| |-- smarcfimx7s.conf</span><br /><span>| |-- smarcfimx6qp2g.conf</span><br /><span>| |-- smarcfimx6qp1g.conf</span><br /><span>| |-- smarcfimx6q2g.conf</span><br /><span>| |-- smarcfimx6q1g.conf</span><br /><span>| |-- smarcfimx6dl1g.conf</span><br /><span>| | `-- smarcfimx6solo.conf</span><br />|-- README<br />|-- recipes-bsp <br />| |-- u-boot<br />| |-- u-boot-imx-common_2023.04.inc<br />| `-- u-boot-imx_2023.04.bb<br />| |-- imx-atf<br />| `-- imx-atf_2.8.bbappend<br />| | |-- imx-atf<br /><span>| | | |-- 0001-imx8mm-allocate-uart4-to-cortex-a53.patch</span><br />| | | `-- 0001-imx8mp-pitx-change-console-port-to-ttymxc3.patch<br />| |-- imx-sc-firmware<br />| `-- imx-sc-firmware_%.bbappend<br />| | |-- imx-sc-firmware<br />| | | |-- mx8qm-smarc-8g-scfw-tcm.bin<br />| | | `-- mx8qm-smarc-4g-scfw-tcm.bin<br />| |-- alsa-state<br />| | |-- alsa-state<br />| | | `-- asound.state<br />| `-- alsa-state.bbappend<br />| |-- pm-utils<br />| `-- pm-utils_%.bbappend<br />| |-- imx-mkimage<br />| `-- imx-boot_1.0.bbappend</span><span style="color: rgb(0,51,102);"><br />|-- recipes-core<br />| |-- busybox<br />| `-- busybox_%.bbappend<br />| | |-- busybox<br />| | | |-- ftpget.cfg<br />| | | `-- defconfig<br />| |-- base-files<br />| `-- base-files_%.bbappend<br />| | |-- base-files<br />| | | |-- issue<br />| | | `-- issue.net<br />| |-- systemd<br /><span>| |-- systemd_%.bbappend<br /></span><span>| | |-- systemd</span><br /><span>| | | |-- 0001-units-add-dependencies-to-avoid-conflict-between-con.patch</span><br /><span>| | | `-- 0002-units-disable-systemd-networkd-wait-online-if-Networ.patch</span><br />| `-- systemd-serialgetty.bbappend<br />| | |-- systemd-serialgetty<br />| | | |-- disable-serialgetty.service<br />| | | `-- disable-serialgetty.sh<br />| |-- packagegroups<br />| `-- packagegroup-core-tools-testapps.bbappend<br />| |-- psplash<br />| `-- psplash_git.bbappend<br />| | |-- files<br />| | | |-- 0001-psplash-Change-colors-for-the-Embedian-Yocto-logo.patch<br />| | | |-- psplash-poky.png<br />| | | `-- psplash-bar.png<br />| |-- udev<br />| | |-- files<br />| | | | `-- usb-power.rules <br />| `-- udev-rules-imx.bbappend</span><span style="color: rgb(0,51,102);"><br />|-- recipes-multimedia <br />| |-- gstreamer<br />| `-- gstreamer1.0-plugins-bad_1.22.5.imx.bbappend<br /><span>| | |-- gstreamer1.0-plugins-bad<br /></span><span>| | | `-- </span>0001-fix-display-fullscreen-vertical-positioning-issue.patch<br />`-- scripts <br />| `-- emb_mk_yocto_sdcard</span></code></p></td></tr></table><p><strong><span style="color: rgb(0,51,102);"><span style="color: rgb(82,123,189);"><br />Notes on </span><em>meta-embedian</em><span style="color: rgb(82,123,189);"> layer content</span></span></strong></p><p><span style="color: rgb(51,102,255);"><code>conf/machine/*</code></span></p><p style="margin-left: 30.0px;">This folder contains the machine definitions for all Embedian's platform and backup repository in Embedian. These select the associated kernel, kernel config, u-boot, u-boot config, and tar.bz2 image settings.</p><p><span style="color: rgb(51,102,255);"><code>recipes-bsp/u-boot/*</code></span></p><p style="margin-left: 30.0px;">This folder contains recipes used to build DAS U-boot for <em><span style="color: rgb(0,51,102);">all Embedian's</span></em> platform.</p><p><span style="color: rgb(51,102,255);"><code>recipes-bsp/imx-atf/*</code></span></p><p style="margin-left: 30.0px;">This folder contains recipes used to change console port for <em><span style="color: rgb(0,51,102);">Embedian's</span></em> <em>i.MX8MM</em> and <em>pITX-MX8M-Plus </em>platform.</p><p><span style="color: rgb(51,102,255);"><code>recipes-bsp/imx-sc-firmware/*</code></span></p><p style="margin-left: 30.0px;">This folder contains system control firmware binary for<span style="color: rgb(0,51,102);"> <em>Embedian's i.MX8QM</em></span> platform.</p><p><span style="color: rgb(51,102,255);">recipes-bsp/alsa-state/*</span></p><p style="margin-left: 30.0px;">This folder contains sgtl5000 sound chip default state for<span style="color: rgb(0,51,102);"> <em>all Embedian's</em></span> platform.</p><p><span style="color: rgb(51,102,255);"><code>recipes-bsp/imx-mkimage/*</code></span></p><p style="margin-left: 30.0px;">This folder contains imx-mkimage tool for<span style="color: rgb(0,51,102);"> <em>Embedian's i.MX93, i.MX8MQ, i.MX8MM, i.MX8QM, i.MX8MP</em></span> platform.</p><p><span style="color: rgb(51,102,255);"><code>recipes-core/busybox/*</code></span></p><p style="margin-left: 30.0px;">This folder remove telnetd from bysybox for<span style="color: rgb(0,51,102);"> <em>all Embedian's</em></span> platform. <span style="color: rgb(51,102,255);"> </span></p><p><span style="color: rgb(51,102,255);"><code>recipes-core/psplash/*</code></span><span style="color: rgb(51,102,255);"> </span></p><p style="margin-left: 30.0px;">This folder customized Yocto boot psplash for <span style="color: rgb(0,51,102);"><em>all Embedian's</em></span> platform.</p><p><code><span style="color: rgb(51,102,255);">recipes-kernel/linux/*</span></code></p><p style="margin-left: 30.0px;">Contains the recipes needed to build for all <em>Embedian's</em> platform Linux kernels.</p><h1><span style="color: rgb(0,51,102);">Setting Up the Tools and Build Environment</span></h1><hr /><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">To build the latest NXP<em> i.MX7</em> meta-bsp, you first need an <span style="color: rgb(255,0,0);">Ubuntu 20.04</span> or <span style="color: rgb(255,0,0);">22.04 </span>LTS installation. Since bitbake does not accept building images using root privileges, please <strong>do not</strong> login as a root user when performing the instructions in this section. </span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">Once you have Ubuntu 20.04 or 22.04 LTS running, install the additional required support packages using the following console command:</span></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);">sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils </span><span style="color: rgb(0,51,102);">iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev python3-subunit mesa-common-dev zstd liblz4-tool file libssl-dev pv </span><span style="color: rgb(0,51,102);">device-tree-compiler locales -y</span></code><span style="color: rgb(0,51,102);"> </span></p></td></tr></table><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);">sudo locale-gen en_US.UTF-8</span></code></p></td></tr></table><p> </p><p>To get the BSP you need to have 'repo' installed and use it as:</p><p>Install the 'repo' utility:</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);">$ mkdir ~/bin<br />$ curl <span class="nolink"><a href="https://storage.googleapis.com/git-repo-downloads/repo">https://storage.googleapis.com/git-repo-downloads/repo</a></span> > ~/bin/repo > ~/bin/repo<br />$ chmod a+x ~/bin/repo<br />$ <code>export PATH=~/bin:$PATH</code><span style="color: rgb(0,51,102);"> </span></span></code></p></td></tr></table><div class="paragraph"><span style="color: rgb(0,0,0);"><br /></span></div><div class="paragraph"><span style="color: rgb(0,0,0);">Download the BSP Yocto Project Environment.<br /></span></div><div class="paragraph"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);"> </span></span><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>$ mkdir ~/mickledore-release</code></span></p><p><span style="color: rgb(0,51,102);">$ <code>cd ~/mickledore-release</code></span></p><p><span style="color: rgb(0,51,102);"><code>$ repo init -u <span class="nolink"><span class="nolink"><a href="https://github.com/nxp-imx/imx-manifest">https://github.com/nxp-imx/imx-manifest</a></span></span> -b imx-linux-mickledore -m imx-6.1.55-2.2.0.xml</code></span></p><p><span style="color: rgb(0,51,102);"><code>$ repo sync</code></span></p></td></tr></table><p> </p></div><div class="paragraph"><span style="color: rgb(0,0,0);">Download the Embedian Yocto build script and meta layer.</span></div><div class="paragraph"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);"> </span></span><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 <a href="ftp://ftp.embedian.com/public/dev/minfs/mickledore/emb-imx-setup-release.sh">ftp://ftp.embedian.com/public/dev/minfs/mickledore/emb-imx-setup-release.sh</a><a href="ftp://ftp.embedian.com/public/dev/minfs/smarc-imx8m-bsp-release/fsl-smarcimx8m-sumo-setup-release.sh" /></span></code></p><p><code><span style="color: rgb(0,51,102);">$ chmod 444 emb-imx-setup-release.sh</span></code></p><p><code><a href="ftp://ftp.embedian.com/public/dev/minfs/emb-fsl-bsp-release/emb-fsl-setup-release.sh"><span style="color: rgb(0,51,102);">$ c</span></a><span style="color: rgb(0,51,102);">d sources</span></code></p><p><code><span style="color: rgb(0,51,102);">$ git clone <a href="mailto:git@git.embedian">git@git.embedian</a>.<a href="http://comdeveloper">com:developer/meta-embedian-bsp.git</a> meta-embedian -b mickledore-6.1.55_2.2.0</span></code></p><p><code><span style="color: rgb(0,51,102);">$ cd ~/mickledore-release</span></code></p><p><code><span style="color: rgb(0,51,102);">$ DISTRO=fsl-imx-fb MACHINE=smarcfimx7d source emb-imx-setup-release.sh -b build-fb </span></code></p></td></tr></table><p> </p></div><div class="paragraph"><p><span style="color: rgb(0,0,0);">Choose "y" to accept EULA.</span></p><pre class="paragraph"><span style="color: rgb(0,0,0);">This script will create and bring you to </span>~/mickledore-release/build-fb directory.<br /><br /></pre><table class="wysiwyg-macro" data-macro-name="note" data-macro-parameters="title=Note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGU6dGl0bGU9Tm90ZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><code>The last line of the above script</code></p><p><code>$ DISTRO=<distro name> MACHINE=<machine name> source <span style="color: rgb(0,51,102);">emb-imx-setup-release.sh</span> -b <build dir><br /></code></p><ol><li><code><distro name> </code><ul><li><p><code>fsl-imx-wayland - Pure Wayland graphics.</code></p></li><li><p><code>fsl-imx-xwayland - Wayland graphics and X11. X11 applications using EGL are not supported</code></p></li><li><p><code>fsl-imx-fb - Frame Buffer graphics - no X11 or Wayland. Frame Buffer is not supported on i.MX 8 and i.MX9</code></p></li></ul></li><li><p><code><machine name></code></p><ul><li><p><code><em>smarcfimx7d</em> - if your board is dual core i.MX7 and 1GB DDR3L.</code></p></li><li><p><code><em>smarcfimx7s</em> - if your board is solo core i.MX7 and 512MB DDR3L.</code></p></li><li><p><code><em>smarcfimx7d2g</em> - if your board is dual core i.MX7 and 2GB DDR3L.</code></p></li></ul></li></ol><p><code><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">The default console debug port is</span> <em>SER3.</em></span></code></p><p><code><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">In this document, we will use</span> <em>smarcimx7d</em> <span style="color: rgb(0,0,0);">as the example of machine name. Users need to change different machine name if you have different SMARC card variants.</span></span></code></p></td></tr></table><p><span style="color: rgb(0,0,0);"> </span></p><div class="paragraph"><span style="color: rgb(0,51,102);">Building the target platforms</span></div><div class="paragraph"><div class="paragraph"><hr /><span style="color: rgb(0,0,0);"> </span><span style="color: rgb(0,0,0);">To build Embedian/NXP Yocto BSP, </span><span style="color: rgb(0,0,0);">use the following commands:</span></div><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>$ MACHINE=smarcfimx7d bitbake -k fsl-image-qt6-validation-imx<em><br /></em>or<br />$ MACHINE=smarcfimx7d bitbake -k fsl-image-validation-imx</code></span></p></td></tr></table><div class="paragraph"><p><span style="color: rgb(0,51,102);"><br /></span></p><table class="wysiwyg-macro" data-macro-name="note" data-macro-parameters="title=Note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGU6dGl0bGU9Tm90ZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><code>fsl-image-validation-imx provides a gui image without QT6.</code> </p><p><code>fsl-image-qt6-validation-imx provides a Qt6 image for X11, wayland or FB backends depending on your distro name.<br /><br /></code></p><p><code>If your machine name is smarcfimx7s and your gui image is without QT6 , the following command gives you as an example.</code></p><p><span style="color: rgb(0,51,102);"><code>$ MACHINE=smarcfimx7s bitbake -k fsl-image-validation-imx</code></span></p><p><code>The first build takes time. </code></p></td></tr></table><p> </p></div><div class="paragraph"><div class="paragraph"><pre>Once it done, you can find all required images under <span style="color: rgb(0,51,102);">~/mickledore</span>-release/<build directory>/tmp/deploy/images/<machine name>/</pre><p>You may want to build programs that aren’t installed into a root file system so you can make them available via a feed site (described below.) To do this you can build the package directly and then build the package named <span style="color: rgb(0,51,102);">package-index</span> to add the new package to the feed site.</p></div><p><span style="color: rgb(0,0,0);"> </span></p><div class="paragraph"><p>The following example builds the <span style="color: rgb(0,51,102);">tcpdump</span> program and makes it available on the feed site:</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>$ MACHINE=smarcfimx7d bitbake tcpdump </code></span><br /><span style="color: rgb(0,51,102);"><code>$ MACHINE=smarcfimx7d bitbake package-index</code></span></p></td></tr></table><div class="paragraph"><span style="color: rgb(0,0,0);"><br /></span></div><div class="paragraph"><span style="color: rgb(0,0,0);">Once the build(s) are completed you’ll find the resulting images, rpm and licenses in folder<em> </em></span><em><code><span style="color: rgb(0,51,102);">~/mickledore-release/<build directory>/tmp/deploy</span></code></em><span style="color: rgb(0,0,0);">.</span></div><p><span style="color: rgb(0,51,102);"><code><span style="color: rgb(0,51,0);">deploy/images/<machine name>/*</span> </code></span></p><p style="margin-left: 60.0px;"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">This folder contains the binary images for the root file system and the Embedian <em>SMARC-FiMX7</em> specific version of the boot file, Image and device tree file. Specifically the images are:</span></span></p><p><span style="color: rgb(0,51,102);"><code>deploy/images/<span style="color: rgb(0,51,0);"><machine name>/u-boot.imx</span></code></span></p><p style="margin-left: 60.0px;"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">This is bootloader file binary for <em>SMARC-FiMX7</em></span></span></p><p><span style="color: rgb(0,51,102);"><code>deploy/images/<span style="color: rgb(0,51,0);"><machine name>/z</span>Image</code></span></p><p style="margin-left: 60.0px;"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><span style="color: rgb(34,34,34);">The kernel Image for <em>SMARC-FiMX7</em>.</span></span></span><span style="color: rgb(0,0,0);"> </span><span style="color: rgb(0,51,102);"> </span></p><p><span style="color: rgb(0,51,102);"><code>deploy/images/<span style="color: rgb(0,51,0);"><machine name>/<device tee file></span></code></span></p><p style="margin-left: 60.0px;"><span style="color: rgb(0,0,0);">Selecting display configuration is a matter of selecting an appropriate DTB file under <span style="color: rgb(0,51,102);">deploy/images/</span><span style="color: rgb(0,51,0);"><machine name>/<device tee file></span></span></p><p><span style="color: rgb(0,0,0);">All available DTB files are listed in the table below.</span></p><table class="confluenceTable"><tbody><tr><th style="text-align: center;" class="confluenceTh"><span style="color: rgb(0,51,102);">DTB Name</span></th><th style="text-align: center;" class="confluenceTh"><span style="color: rgb(0,51,102);">Description</span></th></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);"><em>imx7s-smarc.dtb</em></span></code></td><td class="confluenceTd"><span style="color: rgb(0,0,0);">Device tree blob for i.mx7 solo core configuration.</span></td></tr><tr><td class="confluenceTd"><em><code><span style="color: rgb(0,51,102);">imx7d-smarc-wvga.dtb</span></code></em></td><td class="confluenceTd"><span style="color: rgb(0,0,0);">Device tree blob for i.mx7 dual core configuration.</span></td></tr></tbody></table><p><span style="color: rgb(0,0,0);"><br /></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><code><span style="color: rgb(0,51,102);">deploy/images/<span style="color: rgb(0,51,0);"><machine name>/fsl-image-validation-imx</span>-<machine name>.*</span></code></span></span></p><p style="margin-left: 60.0px;"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">Embedian root file system images for software development on Embedian’s <em>SMARC-FiMX7</em> platforms without QT6.</span></span></p><p><code><span style="color: rgb(0,51,102);">deploy/images/</span><span style="color: rgb(0,51,0);"><machine name>/fsl-image-qt6-validation-imx-<machine name></span><span style="color: rgb(0,51,102);">.*</span></code></p><p style="margin-left: 60.0px;"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">Embedian root file system images for software development on Embedian’s <em>SMARC-FiMX7</em> with QT6.</span></span></p><p><span style="color: rgb(0,51,102);"><code>deploy/deb/*</code></span></p><p style="margin-left: 60.0px;"><span style="color: rgb(0,51,0);"> </span><span style="color: rgb(0,0,0);">This folder contains all the packages used to construct the root file system images. They are in </span><span style="color: rgb(0,0,0);"><span style="color: rgb(0,51,102);"><strong><em>deb</em></strong></span></span><span style="color: rgb(0,0,0);"> format (similar format to Debian packages) and can be dynamically installed on the target platform via a properly constructed </span><em>feed</em><span style="color: rgb(0,0,0);"> file. Here is an example of the feed file (named base- feeds</span><span style="color: rgb(0,51,102);">.conf</span><span style="color: rgb(0,0,0);">) that is used internally at Embedian to install upgrades onto a </span><span style="color: rgb(0,0,0);"><span style="color: rgb(0,51,102);"><strong><em>SMARC-FiMX7</em></strong></span></span><span style="color: rgb(0,0,0);"> platform without reflashing the file system:</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);">src/gz all http://<ip address>/al<a href="http://www.embedian.com/core-sdk/smarct437x/processor-sdk-02.00.00.00/deploy/ipk/all"><span style="color: rgb(0,51,102);">l</span></a></span></code></p><p><code><span style="color: rgb(0,51,102);">src/gz cortexa7t2hf-neon http://<ip address>/cortexa7t2hf-neon</span></code></p><p><code><span style="color: rgb(0,51,102);">src/gz cortexa7t2hf-neon-mx7d http://<ip addresss>/cortexa7t2hf-neon-mx7d</span></code></p><p><code><span style="color: rgb(0,51,102);">src/gz smarcfimx7d <span class="nolink"><span class="nolink">http://<ip addresss></span></span>/smarcfimx7d</span></code></p></td></tr></table><div class="paragraph"><span style="color: rgb(0,51,0);"><br /></span></div><div class="paragraph"><span style="color: rgb(0,51,0);"><code>deploy/licenses/* </code></span></div><div class="paragraph" style="margin-left: 60.0px;"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">A database of all licenses used in all packages built for the system.</span></span></div><h1><span style="color: rgb(0,51,102);">Setup SD Card Manually</span></h1><hr /><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"><pre>$ export DISK=/dev/mmcblk0</pre></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">160</code></span></p></td></tr></table><p>Create Partition Layout: Leave 1MB offset for boot file.</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 number2 index1 alt1"><code><span style="color: rgb(0,51,102);">sfdisk from util-linux 2.34</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"><pre>$ sudo sfdisk ${DISK} <<-__EOF__<br />1M,48M,0x83,*<br />,,,-<br />__EOF__</pre></td></tr></table><p><br />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 number3 index2 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkfs.ext4 ${DISK}p2 -L rootfs</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><div class="line number7 index6 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkfs.ext4 ${DISK}</code><code class="java value">2</code> <code class="java plain">-L rootfs</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 number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkdir -p /media/rootfs/</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 number6 index5 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mount ${DISK}p2 /media/rootfs/</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><div class="line number10 index9 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mount ${DISK}</code><code class="java value">2</code> <code class="java plain">/media/rootfs/</code></span></div></td></tr></table><h3><span style="color: rgb(0,51,102);">Install Bootloader</span></h3><p style="margin-left: 30.0px;"><strong>If SPI NOR Flash is not empty</strong></p><p style="margin-left: 30.0px;">The <em>u-boot.imx</em> is pre-installed in SPI NOR flash at factory default. SMARC-FiMX7 is designed to always boot up from SPI NOR flash and to load zImage, device tree blob and root file systems 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 style="margin-left: 30.0px;">Copy u-boot.imx to the first boot partition of your SD card.<span style="color: rgb(0,51,102);"> </span></p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/mickledore-release/<build dir>/tmp/deploy/images/<machine name>/" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L21pY2tsZWRvcmUtcmVsZWFzZS88YnVpbGQgZGlyPi90bXAvZGVwbG95L2ltYWdlcy88bWFjaGluZSBuYW1lPi99&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.imx /media/boot/u-boot.imx</code></span></div></td></tr></table><div class="paragraph" style="margin-left: 30.0px;">Fuse u-boot.imx to the SPI NOR flash.</div><p style="margin-left: 30.0px;">Stop at U-Boot command prompt (Press any key when booting up). Copy and Paste the following script under u-boot command prompt.<span style="color: rgb(0,51,102);"> </span></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"><hr /><pre class="line number1 index0 alt2">U-Boot# mmc rescan; mmc dev; load mmc 0:1 0x90800000 u-boot.imx; sf probe; sleep 2; sf erase 0 0xc0000;<span style="color: rgb(0,51,102);"> sf write 0x90800000 0x400 c0000</span></pre></td></tr></table><div class="paragraph"><strong><br /></strong></div><div class="paragraph" style="margin-left: 30.0px;"><strong>If SPI NOR Flash is empty</strong></div><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-FiMX7</em> will always boot up from SD card.</p><p style="margin-left: 30.0px;">Copy u-boot.imx to the SD card<span style="color: rgb(0,51,102);"> </span></p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/mickledore-release/<build dir>/tmp/deploy/images/<machine name>/" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L21pY2tsZWRvcmUtcmVsZWFzZS88YnVpbGQgZGlyPi90bXAvZGVwbG95L2ltYWdlcy88bWFjaGluZSBuYW1lPi99&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.imx of=${DISK} bs=512 seek=2</em></code> </span></div></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><span style="color: rgb(0,0,0);">If your u-boot hasn't been finalized and still under development, it is recommended to shunt cross the test pin and boot directly from SD card first. Once your u-boot is fully tested and finalized, you can <span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> fuse your u-boot to SPI NOR flash.</span></span></span></li><li><span style="color: rgb(0,0,0);">When <em>TEST#</em> pin of SMARC-FiMX7 is not shunt crossed, it will always boot up from SPI NOR flash. U-boot will read the <em>BOOT_SEL</em> configuration and determine where it should load zImage and device tree blob. When TEST# is shunt crossed (pull low), it will always boot up from SD card.</span></li></ol></td></tr></table><h3 class="paragraph"><span style="color: rgb(0,51,102);">uEnv.txt based bootscript</span></h3><p>Create "uEnv.txt" boot script: ($ vim uEnv.txt)</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/uEnv.txt" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L3VFbnYudHh0fQ&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><hr /><p><code>console=ttymxc2,115200</code><br /><code>mmcdev=0</code><br /><code>mmcpart=1</code><br /><code>image=zImage</code><br /><code>loadaddr=0x80800000</code><br /><code>fdt_addr=0x83000000</code><br /><code>mmcroot=/dev/mmcblk0p2 ro</code><br /><code>mmcrootfstype=ext4 rootwait fixrtc</code><br /><code>netdev=eth0</code><br /><code>ethact=FEC0</code><br /><code>ipaddr=192.168.1.150</code><br /><code>serverip=192.168.1.53</code><br /><code>gatewayip=192.168.1.254</code><br /><code>mmcargs=setenv bootargs console=${console} root=${mmcroot} rootfstype=${mmcrootfstype} ${optargs}</code><br /><code>uenvcmd=run loadzimage; run loadfdt; run mmcboot</code></p></td></tr></table><p>Copy uEnv.txt to the boot partition:</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L30&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><hr /><pre>$ sudo cp -v ~/uEnv.txt /media/boot/</pre></td></tr></table><h3><span style="color: rgb(0,51,102);">Install Kernel zImage</span></h3><p>Copy Image to the boot partition:</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/mickledore-release/<build dir>/tmp/deploy/images/<machine name>/" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L21pY2tsZWRvcmUtcmVsZWFzZS88YnVpbGQgZGlyPi90bXAvZGVwbG95L2ltYWdlcy88bWFjaGluZSBuYW1lPi99&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><hr /><pre>$ sudo cp -v zImage /media/boot</pre></td></tr></table><h3><span style="color: rgb(0,51,102);">Install Kernel Device Tree Binary</span></h3><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/mickledore-release/<build dir>/tmp/deploy/images/<machine name>/" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L21pY2tsZWRvcmUtcmVsZWFzZS88YnVpbGQgZGlyPi90bXAvZGVwbG95L2ltYWdlcy88bWFjaGluZSBuYW1lPi99&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><code>$ sudo mkdir -p /media/boot/dtbs</code></p><pre>$ sudo cp -v imx7d-smarc.dtb /media/boot/dtbs/imx7d-smarc.dtb</pre><pre>$ sudo cp -v imx7s-smarc.dtb /media/boot/dtbs/imx7s-smarc.dtb</pre></td></tr></table><p><span style="color: rgb(0,0,0);">All available DTB files are listed in the table below.</span></p><table class="confluenceTable"><tbody><tr><th style="text-align: center;" class="confluenceTh"><span style="color: rgb(0,51,102);">DTB Name</span></th><th style="text-align: center;" class="confluenceTh"><span style="color: rgb(0,51,102);">Description</span></th></tr><tr><td class="confluenceTd"><code><span style="color: rgb(0,51,102);"><em>imx7s-smarc.dtb</em></span></code></td><td class="confluenceTd"><span style="color: rgb(0,0,0);">Device tree blob for i.mx7 solo core configuration.</span></td></tr><tr><td class="confluenceTd"><em><code><span style="color: rgb(0,51,102);">imx7d-smarc-wvga.dtb</span></code></em></td><td class="confluenceTd"><span style="color: rgb(0,0,0);">Device tree blob for i.mx7 dual core configuration. </span></td></tr></tbody></table><h1><span style="color: rgb(0,51,102);">Install Root File System</span></h1><hr /><h3><span style="color: rgb(153,51,0);">Copy Root File System:</span></h3><p><span style="color: rgb(0,51,102);"><u><strong>Yocto Built Rootfs:</strong></u></span></p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/mickledore-release/<build dir>/tmp/deploy/images/<machine name>/" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L21pY2tsZWRvcmUtcmVsZWFzZS88YnVpbGQgZGlyPi90bXAvZGVwbG95L2ltYWdlcy88bWFjaGluZSBuYW1lPi99&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><hr /><pre>$ sudo tar jxvf <filename.tar.bz2> -C /media/rootfs</pre></td></tr></table><table class="wysiwyg-macro" data-macro-name="note" data-macro-parameters="title=Note" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGU6dGl0bGU9Tm90ZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><ol><li><em>SMARC-FiMX7</em> always boots up to SPI flash first. The firmware in SPI flash is factory pre-installed from Embedian. It will read the <em>BOOT_SEL</em> configuration that defined by SMARC specification on your carrier board and load u-boot.bin from the partition one of the device (could be SD card, eMMC, GBE,..etc) that you selected to memory.</li><li>MAC address is factory pre-installed at on board I2C EEPROM at offset 60 bytes. It starts with Embedian's vendor code <em>10:0D:32</em>. u-boot will read it and pass this parameter to kernel.</li><li>The kernel modules is included in the Yocto rootfs.</li></ol></td></tr></table><p>Remove 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"><div class="line number1 index0 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sync</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo umount /media/boot</code></span></div><div class="line number3 index2 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo umount /media/rootfs</code></span></div></td></tr></table><h1><span style="color: rgb(0,51,102);">Setup SD Card Automatically</span></h1><hr /><p>This section tells you how to set up an SD card automatically. It mainly uses a script to do all the steps in the above section.</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);">cd ~/mickledore-release</span></code></p><p><code><span style="color: rgb(0,51,102);">$ <code class="java plain">sudo MACHINE=smarcfimx7d sources/meta-embedian/scripts/emb_mk_yocto_sdcard/emb-create-yocto-sdcard.sh /dev/sdX</code></span></code></p></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 default output display is LVDS.</p></td></tr></table><p><span style="color: rgb(0,51,102);">Shunt cross <em>TEST#</em> pin to ground and set the <em>BOOT_SEL</em> to ON OFF OFF. The module will boot up from SD card. </span></p><h1><span style="color: rgb(0,51,102);">Feed Packages </span></h1><hr /><p><span style="color: rgb(0,0,0);">You need to setup Apache2 web server on your development host machine first.</span></p><p><span style="color: rgb(0,0,0);"><span style="color: rgb(37,37,37);">The Apache server default web page directory is </span><strong>/var/www/html</strong><span style="color: rgb(37,37,37);"> .We need to populate it with a link pointing to our deb</span><strong> package</strong><span style="color: rgb(37,37,37);"> repository.</span></span></p><p><span style="color: rgb(0,0,0);"> </span></p><table class="wysiwyg-macro" data-macro-name="info" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm99&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><pre>sudo ln -s /path/to/build-yocto/tmp/deploy/deb /var/www/html/deb</pre></td></tr></table><p><span style="color: rgb(0,0,0);"><br /></span></p><p><span style="color: rgb(0,0,0);">The following procedure can be used on a Embedian <em>SMARC-FiMX7</em> device to download and utilize the feed file show above to install the </span><span style="color: rgb(0,51,102);"><em>tcpdump</em></span><span style="color: rgb(0,0,0);"> terminal emulation program:</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><span style="color: rgb(0,51,102);"><code># vim /etc/apt/sources.list.d/yocto.list</code></span></p><p><span style="color: rgb(0,51,102);">Only keep the following four lines:</span></p><p><span style="color: rgb(0,51,102);"><code>deb https://<ip address>/all ./</code></span></p><p><span style="color: rgb(0,51,102);"><code>deb http://<ip address>/cortexa7t2hf-neon</code><code> ./</code></span></p><p><span style="color: rgb(0,51,102);"><code>deb http://<ip address>/cortexa7t2hf-neon-mx7d ./</code></span></p><p><code><span style="color: rgb(0,51,102);">deb http://<ip address>/smarcfimx7d ./</span></code></p></td></tr></table><div class="paragraph"><table class="wysiwyg-macro" data-macro-name="info" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm99&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># apt-get update</code></span></p><p><span style="color: rgb(0,51,102);"><code># apt-get upgrade</code></span></p><p><span style="color: rgb(0,51,102);"><code># apt-get install tcpdump</code></span></p></td></tr></table><p> </p></div><div class="paragraph"><h1><span style="color: rgb(0,51,102);">Writing Bitbake Recipes</span></h1><hr /><p>In order to package your application and include it in the root filesystem image, you must write a BitBake recipe for it.</p><p>When starting from scratch, it is easiest to learn by example from existing recipes. </p><h5>Example HelloWorld recipe using autotools</h5><p>For software that uses autotools (./configure; make; make install), writing recipes can be very simple:</p><div><div class="syntaxhighlighter nogutter cpp"><p> </p><table class="confluenceTable"><tbody><tr><td class="confluenceTd"><div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2"><code class="cpp plain">DESCRIPTION = </code><code class="cpp string">"Hello World Recipe using autotools"</code></div><div class="line number2 index1 alt1"><code class="cpp plain">HOMEPAGE = </code><code class="cpp string">"<a class="external-link" href="http://www.embedian.com/">http://www.embedian.com/"</a></code></div><div class="line number3 index2 alt2"><code class="cpp plain">SECTION = </code><code class="cpp string">"console/utils"</code></div><div class="line number4 index3 alt1"><code class="cpp plain">PRIORITY = </code><code class="cpp string">"optional"</code></div><div class="line number5 index4 alt2"><code class="cpp plain">LICENSE = </code><code class="cpp string">"GPL"</code></div><div class="line number6 index5 alt1"><code class="cpp plain">PR = </code><code class="cpp string">"r0"</code></div><div class="line number7 index6 alt2"><code class="cpp spaces"> </code> </div><div class="line number8 index7 alt1"><code class="cpp plain">SRC_URI = </code><code class="cpp string">"<a href="git://git@git.embedian.com/developer/helloworld-autotools.git;protocol=ssh;tag=v1.0">git://git@git.embedian.com/developer/helloworld-autotools.git;protocol=ssh;tag=v1.0</a>"</code></div><div class="line number9 index8 alt2"><code class="cpp plain">S = </code><code class="cpp string">"${WORKDIR}/git"</code></div><div class="line number10 index9 alt1"><code class="cpp spaces"> </code> </div><div class="line number11 index10 alt2"><code class="cpp plain">inherit autotools</code></div></div></td></tr></tbody></table><p> </p></div></div><p><span style="color: rgb(0,128,0);"><code>SRC_URI</code></span> specifies the location to download the source from. It can take the form of any standard URL using http://, ftp://, etc. It can also fetch from SCM systems, such as git in the example above.</p><p><span style="color: rgb(0,128,0);"><code>PR</code></span> is the package revision variable. Any time a recipe is updated that should require the package to be rebuilt, this variable should be incremented.</p><p><span style="color: rgb(0,128,0);"><code>inherit autotools</code></span> brings in support for the package to be built using autotools, and thus no other instructions on how to compile and install the software are needed unless something needs to be customized.</p><p><span style="color: rgb(0,128,0);"><code>S</code></span> is the source directory variable. This specifies where the source code will exist after it is fetched from SRC_URI and unpacked. The default value is <span style="color: rgb(0,128,0);"><code>${WORKDIR}/${PN}-${PV}</code></span>, where<span style="color: rgb(0,128,0);"> <code>PN</code></span> is the package name and <span style="color: rgb(0,128,0);"><code>PV</code></span> is the package version. Both <span style="color: rgb(0,128,0);"><code>PN</code></span> and <span style="color: rgb(0,128,0);"><code>PV</code></span> are set by default using the filename of the recipe, where the filename has the format <span style="color: rgb(0,128,0);"><code>PN_PV.bb</code></span>.</p><h5>Example HelloWorld recipe using a single source file</h5><p>This example shows a simple case of building a helloworld.c file directly using the default compiler (gcc). Since it isn’t using autotools or make, we have to tell BitBake how to build it explicitly.</p><div><div class="syntaxhighlighter nogutter cpp"><p> </p><table class="confluenceTable"><tbody><tr><td class="confluenceTd"><div class="container" title="Hint: double-click to select code"><div class="line number1 index0 alt2"><code class="cpp plain">DESCRIPTION = </code><code class="cpp string">"HelloWorld"</code></div><div class="line number2 index1 alt1"><code class="cpp plain">SECTION = </code><code class="cpp string">"examples"</code></div><div class="line number3 index2 alt2"><code class="cpp plain">LICENSE = </code><code class="cpp string">"GPL"</code></div><div class="line number4 index3 alt1"><code class="cpp spaces"> </code> </div><div class="line number5 index4 alt2"><code class="cpp plain">SRC_URI = </code><code class="cpp string">"<a href="file://helloworld.c/">file://helloworld.c</a>"</code></div><div class="line number6 index5 alt1"><code class="cpp spaces"> </code> </div><div class="line number7 index6 alt2"><code class="cpp plain">S = </code><code class="cpp string">"${WORKDIR}"</code></div><div class="line number8 index7 alt1"><code class="cpp spaces"> </code> </div><div class="line number9 index8 alt2"><code class="cpp plain">do_compile() {</code></div><div class="line number10 index9 alt1"><code class="cpp spaces"> </code><code class="cpp plain">${CC} ${CFLAGS} ${LDFLAGS} helloworld.c -o helloworld</code></div><div class="line number11 index10 alt2"><code class="cpp plain">}</code></div><div class="line number12 index11 alt1"><code class="cpp spaces"> </code> </div><div class="line number13 index12 alt2"><code class="cpp plain">do_install() {</code></div><div class="line number14 index13 alt1"><code class="cpp spaces"> </code><code class="cpp plain">install -d ${D}${bindir}</code></div><div class="line number15 index14 alt2"><code class="cpp spaces"> </code><code class="cpp plain">install -m 0755 helloworld ${D}${bindir}</code></div><div class="line number16 index15 alt1"><code class="cpp plain">}</code></div></div></td></tr></tbody></table><p> </p></div></div><p>In this case, <span style="color: rgb(0,128,0);"><code>SRC_URI</code></span> specifies a file that must exist locally with the recipe. Since there is no code to download and unpack, we set <span style="color: rgb(0,128,0);"><code>S</code></span> to<code> <span style="color: rgb(0,128,0);">WORKDIR</span></code> since that is where helloworld.c will be copied to before it is built.</p><p><span style="color: rgb(0,128,0);"><code>WORKDIR</code></span> is located at <span style="color: rgb(0,51,102);"><code>${OETREE}/<build directory>/tmp/work/cortexa7t2hf-neon-poky-linux-gnueabi/<package name and version></code></span> for most packages. If the package is machine-specific (rather than generic for the cortexa7t2hf architecture), it may be located in the smarcfimx7t2hf-poky-linux-gnueabi subdirectory depending on your hardware (this applies to kernel packages, images, etc).</p><p><span style="color: rgb(0,128,0);"><code>do_compile</code></span> defines how to compile the source. In this case, we just call gcc directly. If it isn’t defined, <span style="color: rgb(0,128,0);"><code>do_compile</code></span> runs <span style="color: rgb(0,128,0);"><code>make</code></span> in the source directory by default.</p><p><span style="color: rgb(0,128,0);"><code>do_install</code></span> defines how to install the application. This example runs <span style="color: rgb(0,128,0);"><code>install</code></span> to create a bin directory where the application will be copied to and then copies the application there with permissions set to 755.</p><p><span style="color: rgb(0,128,0);"><code>D</code></span> is the destination directory where the application is installed to before it is packaged.</p><p><span style="color: rgb(0,128,0);"><code>${bindir}</code></span> is the directory where most binary applications are installed, typically <span style="color: rgb(0,128,0);"><code>/usr/bin</code></span>.</p><p>For a more in-depth explanation of BitBake recipes, syntax, and variables, see the <a class="external-link" href="http://docs.openembedded.org/usermanual/usermanual.html#chapter_recipes" rel="nofollow">Recipe Chapter</a> of the OpenEmbedded User Manual.</p><h1><span style="color: rgb(0,51,102);">Setup eMMC Manually</span></h1><hr /><p>Setting up eMMC usually is the last step at development stage after the development work is done at your SD card or NFS environments. From software point of view, eMMC is nothing but a non-removable SD card on board. For <em>SMARC-FiMX7</em>, the SD card is always emulated as /dev/mmcblk0 and on-module eMMC is always emulated as /dev/mmcblk2. Setting up eMMC now is nothing but changing the device descriptor. </p><p>This section gives a step-by-step procedure to setup eMMC flash. Users can write a shell script your own at production to simplify the steps.</p><p>First, we need to backup the final firmware from your SD card or NFS.</p><h3><span style="color: rgb(0,51,102);">Prepare for eMMC binaries from SD card (or NFS):</span></h3><p>Insert SD card into your Linux PC. For these instructions, we are assuming: DISK=/dev/mmcblk0, "lsblk" is very useful for determining the device id.</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"><pre><span style="color: rgb(0,51,102);">$ export DISK=/dev/mmcblk0</span></pre></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 number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkdir -p /media/rootfs/</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 number6 index5 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mount ${DISK}p2 /media/rootfs/</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><div class="line number10 index9 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mount ${DISK}</code><code class="java value">2</code> <code class="java plain">/media/rootfs/</code></span></div></td></tr></table><p> </p><p><u><span style="color: rgb(0,51,102);"><strong>Copy Image to rootfs partition:</strong></span></u></p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/mickledore-release/<build dir>/tmp/deploy/images/<machine name>" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L21pY2tsZWRvcmUtcmVsZWFzZS88YnVpbGQgZGlyPi90bXAvZGVwbG95L2ltYWdlcy88bWFjaGluZSBuYW1lPn0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><pre><span style="color: rgb(0,51,102);">$ sudo cp -v zImage /media/rootfs/home/root</span></pre></td></tr></table><p><u><span style="color: rgb(0,51,102);"><strong>Copy uEnv.txt to rootfs partition:</strong></span></u></p><p>Copy and paste the following contents to /media/rootfs/home/root ($ sudo vim /media/rootfs/home/root/uEnv.txt)</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>console=ttymxc2,115200</code><br /><code>mmcdev=<span style="color: rgb(255,0,0);">2</span></code><br /><code>mmcpart=1</code><br /><code>image=zImage</code><br /><code>loadaddr=0x80800000</code><br /><code>fdt_addr=0x83000000</code><br /><code>mmcroot=/dev/mmcblk<span style="color: rgb(255,0,0);">2</span>p2 ro</code><br /><code>mmcrootfstype=ext4 rootwait fixrtc</code><br /><code>netdev=eth0</code><br /><code>ethact=FEC0</code><br /><code>ipaddr=192.168.1.150</code><br /><code>serverip=192.168.1.53</code><br /><code>gatewayip=192.168.1.254</code><br /><code>mmcargs=setenv bootargs console=${console} root=${mmcroot} rootfstype=${mmcrootfstype} ${optargs}</code><br /><code>uenvcmd=run loadzimage; run loadfdt; run mmcboot</code></p></td></tr></table><p><u><span style="color: rgb(0,51,102);"><strong><br /></strong></span></u></p><p><u><span style="color: rgb(0,51,102);"><strong>Copy device tree blob to rootfs partition:</strong></span></u></p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=~/mickledore-release/<build dir>/tmp/deploy/images/<machine name>" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1-L21pY2tsZWRvcmUtcmVsZWFzZS88YnVpbGQgZGlyPi90bXAvZGVwbG95L2ltYWdlcy88bWFjaGluZSBuYW1lPn0&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>$ sudo cp -v imx7s-smarc.dtb /media/rootfs/home/root/imx7s-smarc.dtb</code></span></p><p><span style="color: rgb(0,51,102);"><code>$ sudo cp -v imx7d-smarc.dtb /media/rootfs/home/root/imx7d-smarc.dtb </code></span></p></td></tr></table><p><u><span style="color: rgb(0,51,102);"><strong><br /></strong></span></u></p><p><u><span style="color: rgb(0,51,102);"><strong>Copy real rootfs to rootfs partition:</strong></span></u></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"><pre><code><span style="color: rgb(0,51,102);">$ pushd /media/rootfs</span></code></pre><pre><code><span style="color: rgb(0,51,102);">$ sudo tar cvfz ~/smarcfimx7-emmc-rootfs.tar.gz .</span></code></pre><pre><code><span style="color: rgb(0,51,102);">$ sudo mv ~/smarcfimx7-emmc-rootfs.tar.gz /media/rootfs/home/root</span></code></pre><pre><code><span style="color: rgb(0,51,102);">$ popd</span></code></pre></td></tr></table><p>Remove 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"><div class="line number1 index0 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sync</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo umount /media/boot</code></span></div><div class="line number3 index2 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo umount /media/rootfs</code></span></div></td></tr></table><h3><span style="color: rgb(0,51,102);">Copy Binaries to eMMC from SD card:</span></h3><p>Insert this SD card into your SMARC-FiMX7 device.</p><p>Now it will be almost the same as you did when setup your SD card, but the eMMC device descriptor is <span style="color: rgb(0,51,102);"><em>/dev/mmcblk2</em></span> now. Booting up the device.</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"><pre>$ export DISK=/dev/mmcblk2</pre></td></tr></table><p>Erase eMMC:</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">160</code></span></p></td></tr></table><p>Create Partition Layout:</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"><code><span style="color: rgb(0,51,102);">$ sudo sfdisk ${DISK} <<-__EOF__</span></code></div><div class="line number2 index1 alt1"><code><span style="color: rgb(0,51,102);"><code class="java plain">1M,</code><code class="java value">48M</code><code class="java plain">,</code><code class="java value">0x83</code><code class="java plain">,*</code></span></code></div><div class="line number3 index2 alt2"><code><span style="color: rgb(0,51,102);">,,,-</span></code></div><div class="line number4 index3 alt1"><code><span style="color: rgb(0,51,102);">__EOF__</span></code></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"><pre class="line number1 index0 alt2"><span style="color: rgb(0,51,102);">$ sudo mkfs.vfat -F 16 ${DISK}p1 -n boot</span></pre><pre class="line number3 index2 alt2"><span style="color: rgb(0,51,102);">$ sudo mkfs.ext4 ${DISK}p2 -L rootfs</span></pre></td></tr></table><p>Mount 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(0,51,102);"><code class="java plain">$ sudo mkdir -p /media/boot/</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkdir -p /media/rootfs/</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 number6 index5 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mount ${DISK}p2 /media/rootfs/</code></span></div></td></tr></table><h3><span style="color: rgb(0,51,102);">Install binaries for partition 1</span></h3><p>Copy u<code>Env.txt/zImage/*.dtb</code> to the boot partition</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"><hr /><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo cp -v zImage uEnv.txt /media/boot/</code></span></div></td></tr></table><h3><span style="color: rgb(0,51,102);">Install Kernel Device Tree Binary</span></h3><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"><pre><span style="color: rgb(0,51,102);">$ sudo mkdir -p /media/boot/dtbs</span></pre><pre><span style="color: rgb(0,51,102);">$ sudo cp -v imx7d-smarc.dtb /media/boot/dtbs/</span></pre></td></tr></table><h1><span style="color: rgb(0,51,102);">Install Root File System</span></h1><hr /><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"><pre><span style="color: rgb(0,51,102);">$ sudo tar -zxvf smarcfimx7-emmc-rootfs.tar.gz -C /media/rootfs</span></pre></td></tr></table><p><span style="color: rgb(0,51,102);"> </span></p><div><p>Unmount eMMC:</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">$ sync</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo umount /media/boot</code></span></div><div class="line number3 index2 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo umount /media/rootfs</code></span></div></td></tr></table><p> </p><div class="paragraph"><div class="paragraph"><div class="paragraph"><div><p>Switch your Boot Select to eMMC and you will be able to boot up from eMMC now.<br /><br /></p></div><div><h1><span style="color: rgb(0,51,102);">Setup eMMC Automatically</span> </h1><hr /><p>Boot up the module from SD card and run the following script. The Yocto images will be written into on-module eMMC.</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);">smarc-fimx7-create-yocto-emmc.sh</span><span style="color: rgb(0,51,102);"> /dev/mmcblk2 >/dev/null 2>&1</span></code></p></td></tr></table><p> Shutdown the device. <span style="color: rgb(0,51,102);">Set </span><em>TEST#</em><span style="color: rgb(0,51,102);"> pin floating and set the </span><em>BOOT_SEL</em><span style="color: rgb(0,51,102);"> to OFF ON ON. The module will boot up from on-module eMMC.</span><span style="color: rgb(0,51,102);"> </span></p></div><hr /><p>version 1.0a, 10/28/2024</p><p>Last updated 2024-10-28</p></div></div></div></div></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