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
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
<div class="contentLayout2"> <div class="columnLayout single" data-layout="single"> <div class="cell normal" data-type="normal"> <div class="innerCell"> <p><img class="editor-inline-macro" src="/plugins/servlet/confluence/placeholder/macro?definition=e3BhZ2V0cmVlOnJldmVyc2U9dHJ1ZXxyb290PW51bGx8ZXhjZXJwdD10cnVlfQ&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 TI/Embedian’s Arago SDK 6.0 Distribution</span></h1><p><span style="color: rgb(0,51,102);"><strong>Eric Lee</strong></span></p><p>version 1.0b, 8/8/2014</p><p> </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 TI’s am335x EZSDK 6.0 release for Embedian's SMARC T335X 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 SMARC T335X specific development.</p></div><p><span style="color: rgb(0,51,102);"> </span></p><div class="paragraph"><p>TI makes their EZSDK Arago 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><a href="http://arago-project.org/git/projects/oe-layersetup.git">http://arago-project.org/git/projects/oe-layersetup.git</a></code></p></td></tr></table><p> </p><div class="paragraph"><span style="color: rgb(0,0,0);">If you’re interested in TI’s overall EZSDK build and test process you should analyze 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><a href="http://arago-project.org/git/projects/tisdk-build-scripts.git">http://arago-project.org/git/projects/tisdk-build-scripts.git</a></code></p></td></tr></table><p> </p><p><span style="color: rgb(0,0,0);">It is this repository that actually pulls in the </span><span style="color: rgb(0,51,102);">oe-layersetup</span><span style="color: rgb(0,0,0);"> project to perform the Linux EZSDK builds for TI’s entire suite of ARM CortextA chips. In this document we are only concerned with the </span><span style="color: rgb(0,51,102);">oe-layersetup</span><span style="color: rgb(0,0,0);"> project.</span></p><h1><span style="color: rgb(0,51,102);">Overview of the</span> <span style="color: rgb(128,128,128);">meta-embedian</span> <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><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 />|-- conf <br />| |-- bblayers.conf.sample <br />|<span style="color: rgb(0,51,102);"> </span> |-- layer.conf <br />|<span style="color: rgb(0,51,102);"> </span> |-- local.conf.sample <br />|<span style="color: rgb(0,51,102);"> </span> |-- machine <br /><span style="color: rgb(0,51,102);">|</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> |</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> <span style="color: rgb(0,51,102);">`-</span>- smarct335x.conf <br />| |-- site.conf<br /><span style="color: rgb(0,51,102);">|</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> `-- site.conf.sample<br /><span style="color: rgb(0,51,102);">|-- README<br /><span style="color: rgb(0,51,102);">|-- recipes-bsp <br /><span style="color: rgb(0,51,102);">|</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> <span style="color: rgb(0,51,102);">|-</span>- u-boot <br />| | |-- u-boot_2014.04-smarct335x.bb<br />| `-- u-boot_2013.10-smarct335x.bb </span></span></span></span></span></span></code><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;"> <br /><code><span style="color: rgb(0,51,102);"><span><span><span><span>|-- recipes-connectivity <br /><span>|</span><span> </span><span> <span>|-</span>- lftp <br /></span></span></span></span></span></span></code><span style="color: rgb(0,51,102);">|</span><span style="color: rgb(0,51,102);"> <span> </span><span> </span><span> <span>`-</span><span>-</span></span></span><span style="color: rgb(0,51,102);"> lftp_4.0.5.bb</span><br /></span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;">|-- recipes-core <br /></span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;">|</span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;"> </span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;"> <span style="color: rgb(0,51,102);">|-</span>- busybox <br /></span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;">|</span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;"> </span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;"> <span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> </span></span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;"> </span><span style="color: rgb(0,51,102);font-family: monospace;line-height: 1.4285715;"> `-- busybox_1.20.2.bbappend<br /><code><span style="color: rgb(0,51,102);">| |-- images <br />| | |-- am335xevm-rootfs-image.bb <br />| | |-- arago-base-smarct335x-image.bb <br />| | |-- arago-base-tisdk-image.bb <br />| | |-- arago-image.inc <br />| | |-- smarct335x-amsdk-image.bb <br /><span style="color: rgb(0,51,102);">| | |-- meta-toolchain-smarc-tisdk.bb<br /></span><span style="color: rgb(0,51,102);">| | |-- smarct335x-initramfs-image.bb</span><br />| | <span style="color: rgb(0,51,102);">`-</span>- smarct335x-rootfs-image.bb <br />| |-- initscripts <br />| | `-- initscripts_1.0.bbappend <br />| |-- meta <br />| | `-- meta-toolchain-smarct335x-sdk.bb <br />| |-- netbase <br />| | |-- netbase-5.0<span> </span><span> </span><br />| | `-- netbase_5.0.bbappend<br /><span style="color: rgb(0,51,102);">| |-- sysvinit </span><br /><span style="color: rgb(0,51,102);">| | |-- sysvinit-inittab</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> </span><br /><span style="color: rgb(0,51,102);">| |<span style="color: rgb(0,51,102);"> |</span> `-- inittab</span> <br />| `-- packagegroups <br />| |-- packagegroup-arago-smarct335x-base.bb<br /><span>|</span><span> </span><span> |-- packagegroup-arago-smarct335x-connectivity.bb<br /><span>|</span><span> </span><span> |-- packagegroup-arago-smarct335x-console.bb</span></span><br />| |-- packagegroup-arago-smarct335x-sdk.bb <br />| |-- packagegroup-arago-smarct335x-sdk-target.bb<br /><span style="color: rgb(0,51,102);">| |-- </span>packagegroup-arago-smarct335x-test.bb<br /><span>|</span><span> </span><span> |-- packagegroup-arago-tisdk-matrix-no-bt-wifi-demos.bb<br /></span><span style="color: rgb(0,51,102);">|</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> |-- packagegroup-initramfs-boot.bb</span><br />| `-- packagegroup-arago-toolchain-tisdk-target.bbappend <br />|-- recipes-devtools<br />| |-- nodejs <br />| | |-- nodejs_0.10.11.bb <br />| | |-- nodejs_0.10.17.bb <br />| | |-- nodejs_0.10.4.bb <br />| | |-- nodejs_0.8.14.bb <br />| | `-- nodejs_0.8.21.bb <br /><span>|</span><span> </span><span> |-- ltp-ddt </span><br /><span>|</span><span> </span><span> |</span><span> </span><span> |--ltp-ddt<br />| | `-- ltp-ddt_0.0.4.bbappend </span><br /><span style="color: rgb(0,51,102);">|</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> |-- pinmux-utility </span><br /><span style="color: rgb(0,51,102);">|</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> |</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> `-- pinmux-utility_2.5.2.0.bbappend</span> <br />|-- recipes-kernel <br />| `-- linux <br />|<span> </span><span> </span><span> </span><span> </span><span> </span>|-- linux.inc <br />|<span> </span><span> </span><span> </span><span> </span><span> </span>|-- linux-smarct335x-3.2 <br />|<span> </span><span> </span><span> </span><span> </span><span> </span>|-- linux-smarct335x_3.2.bb <br />|<span> </span><span> </span><span> </span><span> </span><span> </span>`-- linux-tools.inc<br /><span style="color: rgb(0,51,102);">|-- recipes-multimedia</span><br /><span style="color: rgb(0,51,102);">| `-- amsdk-av-files <br /></span><span style="color: rgb(0,51,102);">|</span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,51,102);">|-- amsdk-av-files_1.1.bbappend</span><br /><span>`-- recipes-support<br /><span><span style="color: rgb(0,51,102);">|</span></span><span> </span><span> </span><span>|-- boost </span><br /><span><span style="color: rgb(0,51,102);">|</span></span><span> </span><span> </span><span>|</span><span> </span><span> |-- boost_1.53.0.bb </span><br /><span><span style="color: rgb(0,51,102);">|</span></span><span> </span><span> </span><span>|</span><span> </span><span> |-- boost.inc </span><br /><span><span style="color: rgb(0,51,102);">|</span></span><span> </span><span> </span><span>| </span><span> </span><span>`-- files </span><br /><span><span style="color: rgb(0,51,102);">|</span></span><span> </span><span> </span><span>|-- ntp </span><br /><span><span style="color: rgb(0,51,102);">|</span></span><span> </span><span> </span><span>|</span><span> </span><span> |-- files </span><br /><span><span style="color: rgb(0,51,102);">|</span></span><span> </span><span> </span><span>|</span><span> </span><span> |-- ntp_4.2.6p5.bb </span><br /><span><span style="color: rgb(0,51,102);">|</span></span><span> </span><span> </span><span>|</span><span> </span><span> `-- ntp.inc<br /></span></span></span></code></span></p><p> </p></td></tr></table><p> </p><p><strong><span style="color: rgb(0,51,102);"><span style="color: rgb(82,123,189);">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 the <em><strong>smarct335x</strong></em> platform. These select the associated kernel, kernel config, u-boot, u-boot config, and UBI 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><strong>smarct335x</strong></em> platform.</p><p><span style="color: rgb(51,102,255);"><code>recipes-connectivity/lftp/*</code></span></p><p style="margin-left: 30.0px;">This folder adds lftp ftp client utility for <em><strong>smarct335x</strong></em> platform.</p><p><span style="color: rgb(51,102,255);"><code>recipes-core/busybox/*</code></span></p><p style="margin-left: 30.0px;">This recipe modifies TI’s BusyBox configuration to remove telnet from the image.</p><p><span style="color: rgb(51,102,255);"><code>recipes-core/images/*</code></span></p><p style="margin-left: 30.0px;">These recipes are used to create the final target images for the devices. When you run Bitbake one of these recipes would be specified. For example, to build the root file system for the <strong><em><span style="color: rgb(0,51,102);">smarct335x</span></em> </strong>platform:</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 style="margin-left: 30.0px;"><code><span style="color: rgb(0,51,102);">MACHINE=smarct335x bitbake -k smarct335x-rootfs-image</span></code></p></td></tr></table><div class="paragraph"><span style="color: rgb(51,102,255);"><br /></span></div><div class="paragraph"><code><span style="color: rgb(51,102,255);">recipes-core/initscripts/*</span></code></div><p style="margin-left: 30.0px;">This recipe is used to amend TI’s initialization scripts for the platform.</p><code><span style="color: rgb(51,102,255);">recipes-core/netbase/*</span></code><p style="margin-left: 30.0px;">This recipe is used to amend TI’s network configuration data for the platform.</p><p><code><span style="color: rgb(51,102,255);">recipes-core/sysvinit/*</span></code></p><p style="margin-left: 30.0px;">This recipe is used to amend TI’s console debug port configuration from ttyO0 to ttyO3 for the platform.</p><p><code><span style="color: rgb(51,102,255);">recipes-devtools/nodejs/*</span></code></p><p style="margin-left: 30.0px;">These recipes build the Node.js Javascript server execution environment.</p><p><code><span style="color: rgb(51,102,255);">recipes-graphics/libgles<span>/*</span></span></code></p><p style="margin-left: 30.0px;">This recipe is to add smarct335xevm machine id when loads sgx module in SMARC T3354.</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 the <em><strong>smarct335x</strong></em> Linux kernels.</p><p><code><span style="color: rgb(51,102,255);">recipes-multimedia/amsdk-av-files/*</span></code></p><p style="margin-left: 30.0px;">This recipe is to add smarct335x compatible machine for the platform.</p><p><code><span style="color: rgb(51,102,255);">recipes-support/boost/*</span></code></p><p style="margin-left: 30.0px;">Adds Boost to the images. Boost provides various C++ libraries that encourage cross-platform development.</p><p><code><span style="color: rgb(51,102,255);">recipes-support/ntp/*</span></code></p><p style="margin-left: 30.0px;">Network time protocol support.</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 TI am335x 6.0 EZSDK you first need an Unbuntu Linux 12.04LTS installation (preferably 32bit). 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 style="color: rgb(255,0,0);">Only Yocto version 1.6 supports Ubuntu 14.04 LTS. TI SDK6 is based on Yocto 1.5 and if your host PC is Ubuntu 14.04 LTS, please use SDK7 instead.</span></span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">Once you have Ubuntu 12.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-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm python-m2crypto bc</span></code></p></td></tr></table><p><span style="color: rgb(0,0,0);">If you are using a 64-bit Linux, then you'd also need to install 32-bit support libraries, needed by the pre-built Linaro toolchain and other binary tools.</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-get install <span>ia32-libs-multiarch</span></span></code></p></td></tr></table><p><span style="color: rgb(0,0,0);">You’ll also need to change the default shell to </span><span style="color: rgb(0,51,102);">bash</span><span style="color: rgb(0,0,0);"> from Ubuntu’s default </span><span style="color: rgb(0,51,102);">dash</span><span style="color: rgb(0,0,0);"> shell (select the </span><span style="color: rgb(0,51,102);"><No></span><span style="color: rgb(0,0,0);"> option):</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 dpkg-reconfigure dash</span></code></p></td></tr></table><p><span style="color: rgb(0,0,0);"> </span><span style="color: rgb(0,0,0);">To build TI’s am335x SDK you will need to install the Linaro arm compiler that TI used for the release:</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>$ wget <a href="http://releases.linaro.org/13.04/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux.tar.xz"><span style="color: rgb(0,51,102);">http://releases.linaro.org/archive/13.04/components/toolchain/binaries/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux.tar.xz</span></a><br />$ sudo tar -C /opt -xJf gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux.tar.xz</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);">Add the following </span><code style="line-height: 1.4285715;">PATH</code><span style="color: rgb(0,0,0);"> definition to the </span><code style="line-height: 1.4285715;"><span style="color: rgb(0,51,102);">.bashrc</span></code><span style="color: rgb(0,0,0);"> file in your </span><span style="color: rgb(0,51,102);"><code>$HOME</code></span><span style="color: rgb(0,0,0);"> directory:</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);">export PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.7-2013.04-20130415_linux/bin:$PATH</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);">Next clone and intialize TI’s am335x SDK build process:</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);">$ git clone <a href="http://arago-project.org/git/projects/oe-layersetup.git">http://arago-project.org/git/projects/oe-layersetup.git</a><br />$ cd oe-layersetup <br />$ git checkout -b tisdk-06-00 4eae4e6c5eb39a54c6bd8b41eaf972931f4af279 <br />$ ./oe-layertool-setup.sh -f configs/amsdk/amsdk-06.00.00.00-config.txt<br /></span></code></p></td></tr></table><div class="paragraph"><table class="wysiwyg-macro" data-macro-name="note" data-macro-parameters="title=Update (12-07-2015)" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e25vdGU6dGl0bGU9VXBkYXRlICgxMi0wNy0yMDE1KX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p>Some repo locations have been moved by TI. You need to apply the following patch first.<a href="http://developer.embedian.com/download/attachments/8847362/fix-binutils-textinfo-ubuntu14.04.patch"><br />$ </a><span style="color: rgb(0,51,102);">cd ~/</span><span style="color: rgb(0,51,102);">oe-layersetup-smarct33-sdk7/source/meta-arago/<br />$ wget -c <a href="http://developer.embedian.com/download/attachments/1245249/0001-sdk6-fix-repo-location.patch">http://developer.embedian.com/download/attachments/1245249/0001-sdk6-fix-repo-location.patch</a><br />$ patch -p1 <fix-binutils-textinfo-ubuntu14.04.patch<br /></span>$ rm <a href="http://developer.embedian.com/download/attachments/1245249/0001-sdk6-fix-repo-location.patch">0001-sdk6-fix-repo-location.patch</a></p></td></tr></table><p> </p></div><div class="paragraph"><span style="color: rgb(0,0,0);">Add the Embedian’s </span><code style="line-height: 1.4285715;"><span style="color: rgb(0,51,102);">meta-embedian</span></code><span style="color: rgb(0,0,0);"> layer to the build process</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);">$ cd ~/oe-layersetup/sources <br />$ </span><span style="color: rgb(0,51,102);">git clone <a href="mailto:git@git.embedian"><span style="color: rgb(0,51,102);">git@git.embedian</span></a>.<a href="http://comdeveloper"><span style="color: rgb(0,51,102);">com:developer/meta-embedian.git</span></a> </span><span style="color: rgb(0,51,102);"><br />$ cd ~/oe-layersetup/build<br /></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);">Edit the </span><span style="color: rgb(0,51,102);">~/oe-layersetup/build/conf/bblayers.conf</span><span style="color: rgb(0,0,0);"> file to include the </span><span style="color: rgb(0,51,102);">meta-embedian</span><span style="color: rgb(0,0,0);"> layer in the layer list. It should look something like this (the example reflects the absolute paths on my machine):</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># This template file was created by taking the oe-core/meta/conf/bblayers.conf</p><p># file and removing the BBLAYERS section at the end.</p><p> </p><p># LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf</p><p># changes incompatibly</p><p>LCONF_VERSION = "5"</p><p> </p><p>BBPATH = "${TOPDIR}"</p><p>BBFILES ?= ""</p><p> </p><p># Layers configured by oe-core-setup script</p><p>BBLAYERS += " \</p><p><span style="color: rgb(0,128,0);"> /home/oeeric/oe-layersetup/sources/meta-embedian \</span><br /> /home/oeeric/oe-layersetup/sources/meta-arago/meta-arago-distro \<br /> /home/oeeric/oe-layersetup/sources/meta-arago/meta-arago-extras \<br /> /home/oeeric/oe-layersetup/sources/meta-openembedded/toolchain-layer \<br /> /home/oeeric/oe-layersetup/sources/meta-openembedded/meta-oe \<br /> /home/oeeric/oe-layersetup/sources/meta-linaro \<br /> /home/oeeric/oe-layersetup/sources/meta-ti \<br /> /home/oeeric/oe-layersetup/sources/oe-core/meta \<br />"</p></td></tr></table><p> </p></div><div class="paragraph"><p> </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=e25vdGU6dGl0bGU9Tm90ZTp9&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);">If your platform is SMARC T3354 (with sgx features), you can simply add "sgx" in the MACHINE_FEATURES to have the powervr driver loaded by editing the </span><span style="color: rgb(0,51,102);">~/oe-layersetup/source/meta-embedian/conf/machine/smarct335x.conf <span style="color: rgb(51,51,51);">file. Find MACHINE_FEATURES and add "sgx" in the very bottom:</span></span></p></td></tr></table><p> </p></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>MACHINE_FEATURES = "kernel26 alsa usbgadget usbhost apm vfat ext2 screen touchscreen ethernet <span style="color: rgb(0,128,0);">sgx</span>"</p></td></tr></table><span style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,51,102);"> </span></span></span><p>Please do not enable the sgx MACHINE FEATURES if your platform is SMARC T3352.</p></div><div class="paragraph"><p> </p><p> </p></div></div></div></div></div></div></div> </div> </div> <div class="columnLayout single" data-layout="single"> <div class="cell normal" data-type="normal"> <div class="innerCell"> <h1><span style="color: rgb(0,51,102);">Building the target platforms</span></h1><hr /><p><span style="color: rgb(0,0,0);">To build the Embedian SMARC T335X and <span style="color: rgb(0,0,0);">am335x-evm </span>developer board images, respectively, use the following commands:</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);">$ cd ~/oe-layersetup/build <br />$ source conf/setenv <br />$ MACHINE=smarct335x bitbake -k smarct335x-rootfs-image <br />$ MACHINE=am335x-evm bitbake -k tisdk-rootfs-image</span></code></p></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"><p><span style="color: rgb(0,0,0);">The first clean build might take more than 10 hours. If you met errors during the building process, let it finish and usually build again should be fine.</span></p></td></tr></table><p><span style="color: rgb(0,0,0);"> </span></p><div class="paragraph"><p>Once it done, you can find all required images under <span style="color: rgb(0,51,102);">~/oe-layersetup/build/arago-tmp-external-linaro-toolchain/deploy/images/</span></p><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);">minicom</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><code><span style="color: rgb(0,51,102);">$ MACHINE=smarct335x bitbake minicom <br />$ MACHINE=smarct335x bitbake package-index</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);">Once the build(s) are completed you’ll find the resulting images, feeds and licenses in folder </span><code><span style="color: rgb(0,51,102);">~/oe-layersetup/build/arago-tmp-external-linaro-toolchain/deploy</span></code><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/*</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 SMARCT335X specific version of the am335x SDK. Specifically the images are:</span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,51,102);"> </span></span></span></p><p><span style="color: rgb(0,51,102);"><code>deploy/images/u-boot.img</code></span><span style="color: rgb(0,51,102);"> </span></p><p style="margin-left: 60.0px;"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">This u-boot bootloader binary for SMARC T335X</span></span></p><p><span style="color: rgb(0,51,102);"><code>deploy/images/MLO</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 "Stage 1 Boot Loader" for SMARC T335X. Its purpose is load </span><span style="color: rgb(34,34,34);">the Stage 2 Boot Loader (u-boot.img).</span></span></span></p><p><span style="color: rgb(0,51,102);"><code>deploy/images/zImage</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 zImage for SMARC T335X.</span></span></span><span style="color: rgb(0,0,0);"> </span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,51,102);"><br /></span></span></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/smarct335x-rootfs-image-smarct335x*</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);"><span style="color: rgb(0,0,0);">Embedian root file system images for software development on Embedian’s SMARC T335X platforms.</span></span></span></p><p><code style="color: rgb(0,0,0);line-height: 1.4285715;"><span style="color: rgb(0,51,102);">deploy/images/smarct335x-amsdk-image*</span></code></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(0,0,128);"> </span><span style="color: rgb(0,0,0);">These files contain the entire TI EZSDK augmented with Boost and other options to simplify Embedian SMARC T335X software development.</span></span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);"> </span><code><span style="color: rgb(0,51,102);">deploy/images/arago-base-tisdk-image-smarct335x*</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);"><span style="color: rgb(0,51,102);"> </span><span style="color: rgb(0,0,0);">These images are used to create the SMARC T335X EZSDK (see </span><code><span style="color: rgb(0,51,102);">smarct335x-amsdk-image-smarct335x*</span></code><span style="color: rgb(0,0,0);">).</span></span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);"> </span><code><span style="color: rgb(0,51,102);">deploy/images/tisdk-rootfs-image-am335x-evm*</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);"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);">TI Arago root file system images for software development on TI’s am335x-evm and BeagleBone platforms.</span></span></span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);"> </span></span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><span style="color: rgb(0,0,0);"> </span><span style="color: rgb(0,51,0);"><code>deploy/ipk/*</code></span></span></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(0,51,102);"> </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,51,102);"><strong>opkg</strong></span><span style="color: rgb(0,0,0);"> format (similar format to Debian packages) and can be dynamically installed on the target plaform via a properly constructed </span><span style="color: rgb(0,51,102);"><em>feed</em></span><span style="color: rgb(0,0,0);"> file. Here is an example of the feed file (named </span><span style="color: rgb(0,51,102);">arago-smarct335x-feed.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,51,102);"><strong>smarct335x</strong></span><span style="color: rgb(0,0,0);"> platform without reflashing the file system:</span></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);">src/gz smarct335x <a href="http://www.embedian.com/arago/smarct335x">http://www.embedian.com/arago/smarct335x</a></span></code></p><p><code><span style="color: rgb(0,51,102);">src/gz armv7ahf_vfp-neon http://www.embedian.com/arago/armv7ahf-vfp-neon-3.2 </span></code></p><p><code><span style="color: rgb(0,51,102);">src/gz all http://www.embedian.com/arago/all</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><p> </p><div class="paragraph"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span><span style="color: rgb(0,51,0);"><code>deploy/sdk/arago-2013.05-armv7a-linux-gnueabi-tisdk.sh</code></span></span></div><div class="paragraph" style="margin-left: 60.0px;"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">The installer for ARM toolchain that was created for the target platform. In Embedian’s case that means that the headers for the Boost libraries are baked into the tools. <span style="color: rgb(0,0,0);">(Generate by </span><span style="color: rgb(0,0,0);">meta-toolchain-smarc-tisdk image)</span></span></span></div><div><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><br /></span></span></div><h1><span style="color: rgb(0,51,102);">Setup SD Card</span></h1><hr /><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> <br /></span></span>For these instruction, we are assuming: DISK=/dev/mmcblk0, "lsblk" is very useful for determining the device id.</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><span style="color: rgb(0,51,102);">$ export DISK=/dev/mmcblk0</span></p></td></tr></table><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span></p><p><span>Erase SD card:</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 class="java plain">sudo dd </code><code class="java keyword">if</code><code class="java plain">=/dev/zero of=${DISK} bs=1M count=</code><code class="java value">16</code></span></p></td></tr></table><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span></p><p><span>Create Partition Layout:</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"><div class="line number1 index0 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo sfdisk --in-order --Linux --unit M ${DISK} <<-__EOF__</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java value">1</code><code class="java plain">,</code><code class="java value">48</code><code class="java plain">,</code><code class="java value">0xE</code><code class="java plain">,*</code></span></div><div class="line number3 index2 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">,,,-</code></span></div><div class="line number4 index3 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">__EOF__</code></span></div></td></tr></table><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span></p><p><span>Format Partitions:</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"><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><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span></p><p><span>Mount Partitions:</span></p><p><span><strong>On some systems, these partitions may be auto-mounted...</strong></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"><div class="line number1 index0 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo mkdir -p /media/boot/dtbs</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><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span><span style="color: rgb(0,0,0);"> </span></p><h3><span style="color: rgb(0,51,102);">Install Bootloader</span></h3><p>Copy MLO/u-boot.img to the boot partition</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=deploy/images" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1kZXBsb3kvaW1hZ2VzfQ&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 MLO /media/boot/</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">$ sudo cp -v u-boot.img /media/boot/</code> </span></div></td></tr></table><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span></p><h3><span style="color: rgb(0,51,102);">uEnv.txt based bootscript</span></h3><p>Create "uEnv.txt" boot script: (vim uEnv.txt)</p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span><span style="color: rgb(0,0,0);"> </span></p><p><span style="color: rgb(0,51,102);"><u><strong>For v3.2:</strong></u></span></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>optargs="consoleblank=0 mem=512M"<br />bootfile=zImage<br />loadaddr=0x80200000<br />#fdtaddr=0x80F80000<br />#fdtfile=am335x-smarct335x.dtb<br />console=ttyO3,115200n8<br />mmcroot=/dev/mmcblk0p2 rw<br />mmcrootfstype=ext4 rootwait fixrtc</p><p>#To boot old v3.2.x based kernel enable: (SMARC T335X and BeagleBone)<br />uenvcmd=run loadimage; run mmc_classic_boot</p><p>#For u-boot 13.10<br />#uenvcmd=run loadzimage; run mmc_classic_boot</p><p>###Begin Rootfs from NFS<br />#serverip=192.168.1.51<br />#rootpath=/srv/nfs/smarct335x/arago6/<br />#nfsopts=nolock<br />#netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp<br />##netboot=echo Loading kernel from SDCARD and booting from NFS ...; run loaduimage; run netargs; bootz ${loadaddr}<br />##uenvcmd=run netboot<br />###End Rootfs from NFS</p><p>###Begin Load kernel from TFTP<br />#netmask=255.255.255.0<br />#ipaddr=192.168.1.65<br />#serverip=192.168.1.51<br />#netboot=echo Loading kernel from TFTP and booting from NFS ...; setenv autoload no; tftp ${loadaddr} ${bootfile}; run netargs; bootz ${loadaddr}<br />#uenvcmd=run netboot<br />###End Load kernel from TFTP</p><p> </p></td></tr></table><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> </span></span></p><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 /><p><span style="color: rgb(0,51,102);">$ sudo cp -v ./uEnv.txt /media/boot/</span></p></td></tr></table><p> </p><h3><span style="color: rgb(0,51,102);">Install Kernel zImage</span></h3><p>Copy zImage to the boot partition:</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=deploy/images" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1kZXBsb3kvaW1hZ2VzfQ&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><hr /><p><span style="color: rgb(0,51,102);">$ sudo cp -v zImage /media/boot</span></p></td></tr></table><p> </p><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>Arago:</strong></u></span></p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=deploy/images" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1kZXBsb3kvaW1hZ2VzfQ&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><hr /><p><span style="color: rgb(0,51,102);">$ sudo tar xvfz smarct335x-rootfs-image-smarct335x.tar.gz -C /media/rootfs</span></p></td></tr></table><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><u><strong>Note:</strong></u></span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">Kernel modules are included in root file systems. </span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"><br /></span></span></p><p><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">The following procedure can be used on a Embedian SMARC T335X device to download and utilize the feed file show above to install the </span>minicom<span style="color: rgb(0,0,0);"> terminal emulation program:</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><span style="color: rgb(0,51,102);"><code># cd /etc/opkg </code></span></p><p><span style="color: rgb(0,51,102);"><code># wget http://www.embedian.com/feedfiles/arago-smarct335x-feed.conf </code></span></p><p><span style="color: rgb(0,51,102);"><code># opkg update </code></span></p><p><span style="color: rgb(0,51,102);"><code># opkg upgrade </code></span></p><p><span style="color: rgb(0,51,102);"><code># opkg install minicom</code></span></p></td></tr></table><div class="paragraph"><span style="color: rgb(0,0,128);"><br /></span></div><div class="paragraph"><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);">Occasionally you may run into build problems with package </span></span><span style="color: rgb(0,51,102);">ti-compat-wireless-wl12xx</span><span style="color: rgb(0,51,102);"><span style="color: rgb(0,0,0);"> when rebuilding an image. If you do run into this, perform one of the following clean up commands by selecting the </span>MACHINE<span style="color: rgb(0,0,0);"> target that is causing you problems:</span></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);">$ MACHINE=am335x-evm bitbake -f -c cleanall ti-compat-wireless-wl12xx </span></code></p><p><code><span style="color: rgb(0,51,102);">$ MACHINE=smarct335x bitbake -f -c cleanall ti-compat-wireless-wl12xx </span></code></p></td></tr></table><span style="color: rgb(0,51,102);"><span style="color: rgb(0,51,102);"> </span></span><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><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>DESCRIPTION = "Hello World Recipe using autotools" HOMEPAGE = "http://www.embedian.com/" SECTION = "console/utils" PRIORITY = "optional" LICENSE = "GPL" PR = "r0" SRC_URI = "git://git@git.embedian.com/developer/helloworld-autotools.git;protocol=ssh;tag=v1.0" S = "${WORKDIR}/git" inherit autotools</pre></td></tr></table><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><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>DESCRIPTION = "HelloWorld" SECTION = "examples" LICENSE = "GPL" SRC_URI = "file://helloworld.c" S = "${WORKDIR}" do_compile() { ${CC} ${CFLAGS} ${LDFLAGS} helloworld.c -o helloworld } do_install() { install -d ${D}${bindir} install -m 0755 helloworld ${D}${bindir} }</pre></td></tr></table><p> </p><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 <code>$<span style="color: rgb(0,128,0);">{OETREE}/build</span><span style="color: rgb(0,128,0);">/arago-tmp-external-linaro-toolchain/work/armv7ahf-vfp-neon-3.2-oe-linux-gnueabi/<package name and version></span></code> for most packages. If the package is machine-specific (rather than generic for the armv7ahf architecture), it may be located in the smarct335x-oe-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 href="http://docs.openembedded.org/usermanual/usermanual.html#chapter_recipes">Recipe Chapter</a> of the OpenEmbedded User Manual.</p><h1><span style="color: rgb(0,51,102);">Setup eMMC</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. When booting from eMMC and SD card is present, SD card is emulated as /dev/mmcblk0 and eMMC is emulated as /dev/mmcblk1. On the other hand, when booting from eMMC and SD card is absent, eMMC will be emulated as /dev/mmcblk0 now. eMMC could be /dev/mmcblk0 or /dev/mmcblk1 depending on if SD card is inserted and the boot device become dynamic when booting from eMMC.</p><p>Initramfs is the successor of initrd and has many advantages over initrd. Linux kernel here will mount it as a temperately rootfs and starts the init process from here. The init script will check if the partition 2 of eMMC is exist and them mount the real rootfs.</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><h3><span style="color: rgb(0,51,102);">Get initramfs (assuming the home directory is /home/developer here)</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"><p><span style="color: rgb(0,51,102);">$ cd ~/</span></p><p><span style="color: rgb(0,51,102);">$ wget <a href="http://developer.embedian.com/download/attachments/2883656/initramfs.tar.gz?version=1&modificationDate=1414480792916&api=v2">http://developer.embedian.com/download/attachments/2883656/initramfs.tar.gz?version=1&modificationDate=1414480792916&api=v2</a></span></p><p><span style="color: rgb(0,51,102);">$ mkdir initramfs</span></p><p><span style="color: rgb(0,51,102);">$ sudo tar xvfz initramfs.tar.gz -C initramfs/</span></p></td></tr></table><p><strong><br /></strong></p><p><strong>Note:</strong> The above initramfs is obtained by the following steps:</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);">$ cd ~/oe-layersetup/build</span></p><p><span style="color: rgb(0,51,102);">$ source conf/setenv</span></p><p><span style="color: rgb(0,51,102);">$ MACHINE=smarct335x bitbake -k smarct335x-initramfs-image</span></p></td></tr></table><p><span style="color: rgb(0,51,102);">You will find smarct335x-initramfs-image-smarct335x.tar.gz file under ~/oe-layersetup/build/arago-tmp-external-linaro-toolchain/deploy/images/</span></p><p><span style="color: rgb(0,51,102);">Extract this tarball and add your own init script. Users can use Embedian's init script for references.</span></p><h3><span style="color: rgb(0,51,102);">Prepare for initramfs zImage</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"><p><span style="color: rgb(0,51,102);">$ <span>MACHINE=smarct335x bitbake virtual/kernel -c menuconfig</span></span></p></td></tr></table><p>Select</p><p><span style="color: rgb(0,51,0);">General setup --> </span></p><p><span style="color: rgb(0,51,0);"> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support</span></p><p><span style="color: rgb(0,51,0);"> () Initramfs source file(s)</span></p><p>Enter the directory where your initramfs is. In this example</p><p><span style="color: rgb(0,51,0);">/home/developer/initramfs</span></p><p>Save the kernel config and build again.</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"><p><span style="color: rgb(0,51,102);">$ export DISK=/dev/mmcblk0</span></p></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><span style="color: rgb(0,51,102);"><u><strong>Copy MLO to rootfs partition:</strong></u></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);">$ sudo cp -v /media/boot/MLO /media/rootfs/home/root</span></p></td></tr></table><p> </p><p><u><span style="color: rgb(0,51,102);"><strong>Copy u-boot.img to rootfs partition:<br /></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"><p><span style="color: rgb(0,51,102);">$ sudo cp -v /media/boot/u-boot.img /media/rootfs/home/root</span></p></td></tr></table><p> </p><p><u><span style="color: rgb(0,51,102);"><strong>Copy initramfs zImage to rootfs partition:<br /></strong></span></u></p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false|title=arago-tmp-external-linaro-toolchain/deploy/images" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZXx0aXRsZT1hcmFnby10bXAtZXh0ZXJuYWwtbGluYXJvLXRvb2xjaGFpbi9kZXBsb3kvaW1hZ2VzfQ&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><hr /><p> <span style="color: rgb(0,51,102);">$ sudo cp -v zImage /media/rootfs/home/root</span></p></td></tr></table><p> </p><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><p> <u><strong><span style="color: rgb(0,51,102);">For kernel v3.2:</span></strong></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"><p>optargs="consoleblank=0 mem=512M"<br />bootfile=zImage<br />loadaddr=0x80200000<br />#fdtaddr=0x80F80000<br />#fdtfile=am335x-smarct335x.dtb<br />console=ttyO3,115200n8<br />#mmcroot=/dev/mmcblk0p2 rw<br />#mmcrootfstype=ext4 rootwait fixrtc<br />mmcroot=/dev/ram0<br />#To boot old v3.2.x based kernel enable: (SMARC T335X and BeagleBone)<br />uenvcmd=run loadimage; run mmc_classic_boot<br />#For u-boot 13.10<br />#uenvcmd=run loadzimage; run mmc_classic_boot<br />###Begin Rootfs from NFS<br />#serverip=192.168.1.51<br />#rootpath=/srv/nfs/smarct335x/arago6/<br />#nfsopts=nolock<br />#netargs=setenv bootargs console=${console} ${optargs} root=/dev/nfs nfsroot=${serverip}:${rootpath},${nfsopts} rw ip=dhcp<br />##netboot=echo Loading kernel from SDCARD and booting from NFS ...; run loaduimage; run netargs; bootz ${loadaddr}<br />##uenvcmd=run netboot<br />###End Rootfs from NFS<br />###Begin Load kernel from TFTP<br />#netmask=255.255.255.0<br />#ipaddr=192.168.1.65<br />#serverip=192.168.1.51<br />#netboot=echo Loading kernel from TFTP and booting from NFS ...; setenv autoload no; tftp ${loadaddr} ${bootfile}; run netargs; bootz ${loadaddr}<br />#uenvcmd=run netboot<br />###End Load kernel from TFTP</p></td></tr></table><p> </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"><p><span style="color: rgb(0,51,102);">$ pushd /media/rootfs</span></p><p><span style="color: rgb(0,51,102);">$ sudo tar cvfz ~/smarct335x-emmc-rootfs.tar.gz .</span></p><p><span style="color: rgb(0,51,102);">$ sudo mv ~/smarct335x-emmc-rootfs.tar.gz /media/rootfs/home/root</span></p><p><span style="color: rgb(0,51,102);">$ popd</span></p></td></tr></table><p> </p><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><p> </p><p>Insert this SD card into your SMARC T335X device.</p><p>Now it will be almost the same as you did when setup your SD card, but the eMMC device descriptor is /dev/mmcblk1 now.</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><span style="color: rgb(0,51,102);">$ export DISK=/dev/mmcblk1</span></p></td></tr></table><p>Erase SD card:</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><p><span style="color: rgb(0,51,102);">$ <code class="java plain">sudo dd </code><code class="java keyword">if</code><code class="java plain">=/dev/zero of=${DISK} bs=1M count=</code><code class="java value">16</code></span></p></td></tr></table><p>Create Partition Layout:</p><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 sfdisk --in-order --Linux --unit M ${DISK} <<-__EOF__</code></span></div><div class="line number2 index1 alt1"><span style="color: rgb(0,51,102);"><code class="java value">1</code><code class="java plain">,</code><code class="java value">48</code><code class="java plain">,</code><code class="java value">0xE</code><code class="java plain">,*</code></span></div><div class="line number3 index2 alt2"><span style="color: rgb(0,51,102);"><code class="java plain">,,,-</code></span></div><div class="line number4 index3 alt1"><span style="color: rgb(0,51,102);"><code class="java plain">__EOF__</code></span></div></td></tr></table><p> </p><p>In SDK6, Arago rootfs will mount partition2 as /media/mmcblk1p2 automatically after executing the above command. Umount the partition first.</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 umount /media/mmcblk1p2</code></span></p></td></tr></table><p> </p><p>Format Partitions:</p><table class="wysiwyg-macro" data-macro-name="info" data-macro-parameters="icon=false" style="background-image: url(/plugins/servlet/confluence/placeholder/macro-heading?definition=e2luZm86aWNvbj1mYWxzZX0&locale=en_GB&version=2); background-repeat: no-repeat;" data-macro-body-type="RICH_TEXT"><tr><td class="wysiwyg-macro-body"><div class="line number1 index0 alt2"><code class="java plain" style="color: rgb(0,51,102);line-height: 1.4285715;">$ sudo mkfs.vfat -F </code><code class="java value" style="color: rgb(0,51,102);line-height: 1.4285715;">16</code><span style="color: rgb(0,51,102);"> </span><code class="java plain" style="color: rgb(0,51,102);line-height: 1.4285715;">${DISK}p1 -n boot</code></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></td></tr></table><p> </p><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><p><strong><br /></strong></p><h3><span style="color: rgb(0,51,102);">Install binaries for partition 1</span></h3><p>Copy MLO/<a href="http://u-boot.img/uEnv.txt/zImage">u-boot.img/uEnv.txt/zImage</a> 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 MLO u-boot.img zImage uEnv.txt /media/boot/</code></span></div></td></tr></table><p> </p><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"><p><span style="color: rgb(0,51,102);">$ sudo tar -zxvf smarct335x-emmc-rootfs.tar.gz -C /media/rootfs</span></p></td></tr></table><p><span style="color: rgb(0,51,102);"> </span></p><div><p>Unmount eMMC:</p><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"><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><p>Switch your Boot Select to eMMC and you will be able to boot up from eMMC now.</p></div><hr /><p>version 1.0b, 1/13/2014</p><p>Last updated 2015-12-07</p></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