Difference between revisions of "IoTGateway/BSP/Linux/iMX6/Yocto LBV5 User Guide"
Alex.cheng (talk | contribs) (update information) |
|||
(14 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | {{DISPLAYTITLE:Yocto Linux BSP Ver.5 User Guide for iMX6 series}} | + | {{DISPLAYTITLE:Yocto Linux BSP Ver.5 User Guide for iMX6 series}} <!-- |
− | <!-- | ||
{| align="right" | {| align="right" | ||
− | | | + | | <span class="fck_mw_magic" _fck_mw_customtag="true" _fck_mw_tagname="TOC" _fck_mw_tagtype="c">_</span> |
|} | |} | ||
--> | --> | ||
− | =Getting Started= | + | = Getting Started = |
− | ==<span style="color:#0070c0;">Prerequisites</span>== | + | |
− | All operations in this guide are based on Ubuntu 12.04 LTS 64bit only.<br> | + | == <span style="color:#0070c0;">Prerequisites</span> == |
− | First please install Ubuntu 12.04 LTS 64bit<sup><span style="color:red">*</span></sup> with minimum 2GB memory.<br | + | |
− | + | All operations in this guide are based on Ubuntu 12.04 LTS 64bit only.<br/>First please install Ubuntu 12.04 LTS 64bit<sup><span style="color:red">*</span></sup> with minimum 2GB memory. | |
− | ===<span style="color:#0070c0;">To install required packages</span>=== | + | <br/><nowiki>* ubuntu-12.04.1-desktop-amd64.iso</nowiki> |
+ | |||
+ | === <span style="color:#0070c0;">To install required packages</span> === | ||
+ | |||
Please login and perform the following commands: | Please login and perform the following commands: | ||
Line 41: | Line 43: | ||
$ sudo tar zxvf ~/usr_lib_i386-linux-gnu_for_Building_Android_KK.tar.gz -C / | $ sudo tar zxvf ~/usr_lib_i386-linux-gnu_for_Building_Android_KK.tar.gz -C / | ||
− | ===<span style="color:#0070c0;">To install JDK</span>=== | + | === <span style="color:#0070c0;">To install JDK</span> === |
− | Please download "jdk-6u45-linux-x64.bin" manually | + | |
+ | Please download "jdk-6u45-linux-x64.bin" manually from [http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-javase6-419409.html#jdk-6u45-oth-JPR Oracle Official Website] | ||
+ | |||
+ | And put it to directory ~/FILES/ and perform the following commands: | ||
+ | |||
$ cd /usr/lib | $ cd /usr/lib | ||
$ sudo ~/FILES/jdk-6u45-linux-x64.bin | $ sudo ~/FILES/jdk-6u45-linux-x64.bin | ||
Line 62: | Line 68: | ||
$ sudo sh -c "echo "JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45" >> /etc/environment" | $ sudo sh -c "echo "JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45" >> /etc/environment" | ||
− | + | If you have some troubles on setting up build environment, we recommend that you use Docker, and it is more safely & quickly. Please refer to [[IoTGateway/Docker|Docker]] | |
− | |||
− | <span style="color: | + | == <span style="color:#0070c0;">Conventions</span> == |
− | <span style="color:purple">'''${ | + | <span style="color:purple">'''${PREBUILT_IMAGE}'''</span> : compressed prebuilt image (*.img.gz) |
− | <span style="color:purple">'''${BDIR}'''</span> : build directory (e.g. build-x11) | + | <span style="color:purple">'''${BSP_TARBALL}'''</span> : BSP tarball (*.tgz) |
+ | |||
+ | <span style="color:purple">'''${BSP_HOME}'''</span> : home directory of the BSP | ||
+ | |||
+ | <span style="color:purple">'''${BDIR}'''</span> : build directory (e.g. build-x11) | ||
+ | |||
+ | <span style="color:purple">'''${MX6PROC}'''</span> : i.MX6 Processor | ||
− | |||
:mx6q for iMX6 Quad Core / Dual Core | :mx6q for iMX6 Quad Core / Dual Core | ||
:mx6dl for iMX6 Dual Lite / Solo | :mx6dl for iMX6 Dual Lite / Solo | ||
− | <span style="color:purple">'''${IMX6PROC}'''</span> : i.MX6 Processor | + | <span style="color:purple">'''${IMX6PROC}'''</span> : i.MX6 Processor |
+ | |||
:imx6q / imx6dl | :imx6q / imx6dl | ||
− | <span style="color:purple">'''${BOARD}'''</span> : available target boards list below | + | <span style="color:purple">'''${BOARD}'''</span> : available target boards list below |
− | :ubc220 / rom3420 / rom5420 / rom7420 / rsb4410 / ubcds31 | + | |
+ | :ubc220 / rom3420 / rom5420 / rom7420 / rsb4410 / rsb6410 / ubcds31 / wise3310 | ||
+ | |||
+ | <span style="color:purple">'''${BOARD_REV}'''</span> : board revision | ||
+ | |||
+ | :a1 / a2 / b1 | ||
− | <span style="color:purple">'''${ | + | <span style="color:purple">'''${MC}'''</span> : machine code combined with <span style="color:purple">'''${IMX6PROC}${BOARD}${BOARD_REV}'''</span> |
− | : | ||
− | |||
:for example, | :for example, | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <span style="color:purple">'''${MEM_SIZE}'''</span> : memory size | + | ::<tt>imx6dlubc220a1 for UBC-220-Dual-Light A1</tt> |
+ | ::<tt>imx6qrom3420a1 for ROM-3420-Dual/Quad A1</tt> | ||
+ | ::<tt>imx6qrom5420a1 for ROM-5420-Dual/Quad A1</tt> | ||
+ | ::<tt>imx6qrom5420b1 for ROM-5420-Dual/Quad B1</tt> | ||
+ | ::<tt>imx6qrom7420a1 for ROM-7420-Dual/Quad A1</tt> | ||
+ | ::<tt>imx6qrsb4410a1 for RSB-4410-Dual A1</tt> | ||
+ | ::<tt>imx6qrsb4410a2 for RSB-4410-Dual A2</tt> | ||
+ | ::<tt>imx6qrsb6410a1 for RSB-6410-Dual A1</tt> | ||
+ | ::<tt>imx6qubcds31a1 for UBC-DS31-Dual A1</tt> | ||
+ | ::<tt>imx6qwise3310a1 for WISE-3310-Dual A1</tt> | ||
+ | |||
+ | <span style="color:purple">'''${MEM_SIZE}'''</span> : memory size | ||
+ | |||
:1G / 2G / 512M | :1G / 2G / 512M | ||
− | <span style="color:purple">'''${SD_DEVICE}'''</span> : device name of SD card in Ubuntu (e.g. /dev/sdf) | + | <span style="color:purple">'''${SD_DEVICE}'''</span> : device name of SD card in Ubuntu (e.g. /dev/sdf) |
− | <span style="color:purple">'''${SDCARD_IMAGE}'''</span> : sdcard image built by bitbake (*.sdcard) | + | <span style="color:purple">'''${SDCARD_IMAGE}'''</span> : sdcard image built by bitbake (*.sdcard) |
− | <span style="color:purple">'''${UBOOT}'''</span> :u-boot version(e.g. 2013.04-r0) | + | <span style="color:purple">'''${UBOOT}'''</span> :u-boot version(e.g. 2013.04-r0) |
− | <span style="color:purple">'''${KERNEL}'''</span> : linux kernel version(e.g. 3.14.28-r0) | + | <span style="color:purple">'''${KERNEL}'''</span> : linux kernel version(e.g. 3.14.28-r0) |
− | <span style="color:purple">'''${POKY}'''</span> : Yocto poky version(e.g. 1.7) | + | <span style="color:purple">'''${POKY}'''</span> : Yocto poky version(e.g. 1.7) |
debug console / serial console | debug console / serial console | ||
+ | |||
:serial terminal program (e.g. minicom, putty, teraterm ...) that serial port is configured to 115200 8N1 | :serial terminal program (e.g. minicom, putty, teraterm ...) that serial port is configured to 115200 8N1 | ||
terminal console | terminal console | ||
+ | |||
:terminal program (e.g. gnome-terminal, xfce4-terminal ...) | :terminal program (e.g. gnome-terminal, xfce4-terminal ...) | ||
− | ==<span style="color:#0070c0;">Introducing BSP</span>== | + | == <span style="color:#0070c0;">Introducing BSP</span> == |
+ | |||
:The BSP is based on Yocto Project with Freescale enhanced features for i.MX6, plus specific target board features from Advantech Inc.. | :The BSP is based on Yocto Project with Freescale enhanced features for i.MX6, plus specific target board features from Advantech Inc.. | ||
− | ===<span style="color:#0070c0;">Naming Rule</span>=== | + | === <span style="color:#0070c0;">Naming Rule</span> === |
+ | |||
:The tarball/prebuilt image name is consist of the model name followed by "LB" or "LI" plus version number and released date. | :The tarball/prebuilt image name is consist of the model name followed by "LB" or "LI" plus version number and released date. | ||
− | :For example, 7420A1LBV5080_2016-03-09.tgz which "7420A1" stands for ROM-<span style="color:#ff0000;">'''7420 A1'''</span>, "LB" is acronym of <span style="color:#ff0000;">'''L'''</span>inux <span style="color:#ff0000;">'''B'''</span>SP, "V5080" stands for <span style="color:#ff0000;">'''V'''</span>ersion <span style="color:#ff0000;">'''5'''</span>.<span style="color:#ff0000;">'''0</span><span style="color:#ff0000;">80 | + | :For example, 7420A1LBV5080_2016-03-09.tgz which "7420A1" stands for ROM-<span style="color:#ff0000;">'''7420 A1'''</span>, "LB" is acronym of <span style="color:#ff0000;">'''L'''</span>inux <span style="color:#ff0000;">'''B'''</span>SP, "V5080" stands for <span style="color:#ff0000;">'''V'''</span>ersion <span style="color:#ff0000;">'''5'''</span>.<span style="color:#ff0000;">'''0'''</span>'''<span style="color:#ff0000;">80</span>'''<nowiki>.</nowiki> |
+ | |||
+ | |||
+ | |||
+ | |||
:For example, 7420A1LIV5080_DualQuad_2016-03-09.img.gz which "LI" is acronym for prebuilt <span style="color:#ff0000;">'''L'''</span>inux <span style="color:#ff0000;">'''I'''</span>mage, DualQuad means this image is fit for Dual Core/Quad Core. | :For example, 7420A1LIV5080_DualQuad_2016-03-09.img.gz which "LI" is acronym for prebuilt <span style="color:#ff0000;">'''L'''</span>inux <span style="color:#ff0000;">'''I'''</span>mage, DualQuad means this image is fit for Dual Core/Quad Core. | ||
− | ===<span style="color:#0070c0;">BSP tarball</span>=== | + | === <span style="color:#0070c0;">BSP tarball</span> === |
+ | |||
:Unpack BSP tarball to home directory by performing the following command: | :Unpack BSP tarball to home directory by performing the following command: | ||
− | ::<code>$ tar xvf <span style="color:#7030a0;">'''${BSP</span><span style="color:#7030a0;">_TARBALL</span><span style="color:#7030a0;">} | + | ::<code>$ tar xvf <span style="color:#7030a0;">'''${BSP'''</span>'''<span style="color:#7030a0;">_TARBALL</span><span style="color:#7030a0;">}</span>''' -C ~/</code> |
− | <div style="margin-left:1.498cm;margin-right:0cm;">(Every BSP with different version contains an unique folder, e.g. after unpacking 7420A1LBV5080_2016-03-09.tgz to home directory, the directory , ~/imx6LBV5080_2016-03-09 is the BSP's home folder.)</div> | + | <div style="margin-left:1.498cm;margin-right:0cm;">(Every BSP with different version contains an unique folder, e.g. after unpacking 7420A1LBV5080_2016-03-09.tgz to home directory, the directory , ~/imx6LBV5080_2016-03-09 is the BSP's home folder.)</div><div style="margin-left:0.499cm;margin-right:0cm;">The description of some important folders list below:</div><div style="margin-left:1.499cm;margin-right:0cm;">'''sources/'''</div><div style="margin-left:1.998cm;margin-right:0cm;">'''meta-advantech/''' : meta layer by Advantech</div><div style="margin-left:1.998cm;margin-right:0cm;">'''meta-fsl-*/''' : meta layer by Freescale</div><div style="margin-left:1.499cm;margin-right:0cm;">'''fsl-setup-release.sh''' : to create one new build environment</div><div style="margin-left:1.499cm;margin-right:0cm;">'''setup-environment''' : to continue an exist build environment</div> |
− | <div style="margin-left:0.499cm;margin-right:0cm;">The description of some important folders list below:</div> | + | === <span style="color:#0070c0;">Prebuilt image</span> === |
− | <div style="margin-left:1.499cm;margin-right:0cm;">'''sources/'''</div> | ||
− | <div style="margin-left:1.998cm;margin-right:0cm;">'''meta-advantech/''' : meta layer by Advantech</div> | ||
− | <div style="margin-left:1.998cm;margin-right:0cm;">'''meta-fsl-*/''' : meta layer by Freescale</div> | ||
− | <div style="margin-left:1.499cm;margin-right:0cm;">'''fsl-setup-release.sh''' : to create one new build environment</div> | ||
− | <div style="margin-left:1.499cm;margin-right:0cm;">'''setup-environment''' : to continue an exist build environment</div> | ||
− | |||
:Perform the following command to build one boot-up SD card | :Perform the following command to build one boot-up SD card | ||
− | ::<code>$ gunzip -c <span style="color:#7030a0;">'''${</span><span style="color:#7030a0;">PREBUILT_IMAGE</span><span style="color:#7030a0;">} | + | ::<code>$ gunzip -c <span style="color:#7030a0;">'''${'''</span>'''<span style="color:#7030a0;">PREBUILT_IMAGE</span><span style="color:#7030a0;">}</span>''' | dd of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=1M</code> |
+ | |||
+ | == <span style="color:#0070c0;">Build Instructions</span> == | ||
+ | |||
+ | === <span style="color:#0070c0;">To create one new build environment</span> === | ||
− | |||
− | |||
:Perform the following commands in terminal console | :Perform the following commands in terminal console | ||
::<code>$ cd <span style="color:#7030a0;">'''${BSP_HOME}'''</span></code> | ::<code>$ cd <span style="color:#7030a0;">'''${BSP_HOME}'''</span></code> | ||
::<code>$ MACHINE=<span style="color:#7030a0;">'''${MC}'''</span> source fsl-setup-release.sh -b <span style="color:#7030a0;">'''${BDIR}'''</span> -e x11</code> | ::<code>$ MACHINE=<span style="color:#7030a0;">'''${MC}'''</span> source fsl-setup-release.sh -b <span style="color:#7030a0;">'''${BDIR}'''</span> -e x11</code> | ||
:You need to read and accept the EULA. | :You need to read and accept the EULA. | ||
− | :[[ | + | :[[File:Accept EULA.png|RTENOTITLE]] |
+ | |||
+ | === <span style="color:#0070c0;">To continue an exist build environment</span> === | ||
− | |||
:Perform the following commands in terminal console | :Perform the following commands in terminal console | ||
::<code>$ cd <span style="color:#7030a0;">'''${BSP_HOME}'''</span></code> | ::<code>$ cd <span style="color:#7030a0;">'''${BSP_HOME}'''</span></code> | ||
::<code>$ source setup-environment <span style="color:#7030a0;">'''${BDIR}'''</span></code> | ::<code>$ source setup-environment <span style="color:#7030a0;">'''${BDIR}'''</span></code> | ||
− | ===<span style="color:#0070c0;">To build sdcard image</span>=== | + | === <span style="color:#0070c0;">To build sdcard image</span> === |
+ | |||
:To create/continue a build environment | :To create/continue a build environment | ||
:Perform the following command in terminal console | :Perform the following command in terminal console | ||
Line 155: | Line 182: | ||
:The file, fsl-image-qt5-<span style="color:#7030a0;">'''${MC}'''</span>.sdcard, will be located in directory, ./tmp/deploy/images/<span style="color:#7030a0;">'''${MC}'''</span>, while building process finished successfully. | :The file, fsl-image-qt5-<span style="color:#7030a0;">'''${MC}'''</span>.sdcard, will be located in directory, ./tmp/deploy/images/<span style="color:#7030a0;">'''${MC}'''</span>, while building process finished successfully. | ||
− | ===<span style="color:#0070c0 | + | === <span style="color:#0070c0">To build toolchain installer</span> === |
+ | |||
:To create/continue a build environment | :To create/continue a build environment | ||
:Perform the following command in terminal console | :Perform the following command in terminal console | ||
− | ::<code>$ bitbake | + | ::<code>$ bitbake meta-toolchain-qt5</code><br/> |
− | :The installer, <tt>poky-eglibc-x86_64- | + | :The installer, <tt>poky-eglibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-<span style="color:#7030a0">'''${POKY}'''</span>.sh</tt>, will be located in the directory "./tmp/deploy/sdk".<br/> |
+ | |||
+ | === <span style="color:#0070c0;">To build u-boot</span> === | ||
− | |||
:To create/continue a build environment | :To create/continue a build environment | ||
:Perform the following command in terminal console | :Perform the following command in terminal console | ||
Line 167: | Line 196: | ||
:The two files, u-boot_crc.bin & u-boot_crc.bin.crc, will be located in directory, ./tmp/deploy/images/<span style="color:#7030a0;">'''${MC}'''</span>. | :The two files, u-boot_crc.bin & u-boot_crc.bin.crc, will be located in directory, ./tmp/deploy/images/<span style="color:#7030a0;">'''${MC}'''</span>. | ||
− | ===<span style="color:#0070c0;">To build linux kernel</span>=== | + | === <span style="color:#0070c0;">To build linux kernel</span> === |
+ | |||
:To create/continue a build environment | :To create/continue a build environment | ||
:Perform the following command in terminal console | :Perform the following command in terminal console | ||
::to show up menuconfig | ::to show up menuconfig | ||
:::<code>$ bitbake linux-imx -c menuconfig</code> | :::<code>$ bitbake linux-imx -c menuconfig</code> | ||
+ | ::::* If you operate on docker images, please install tmux application before running this command. | ||
+ | :::::<code>$ sudo apt-get install tmux</code> | ||
::to do build | ::to do build | ||
:::<code>$ bitbake linux-imx</code> | :::<code>$ bitbake linux-imx</code> | ||
− | :The two files, zImage & <span style="color:#7030a0;">'''${IMX6PROC}'''</span>-<span style="color:#7030a0;">'''${BOARD}'''</span>-<span style="color:#7030a0;">'''${BOARD</span><span style="color:#7030a0;">_REV</span><span style="color:#7030a0;">} | + | :The two files, zImage & <span style="color:#7030a0;">'''${IMX6PROC}'''</span>-<span style="color:#7030a0;">'''${BOARD}'''</span>-<span style="color:#7030a0;">'''${BOARD'''</span>'''<span style="color:#7030a0;">_REV</span><span style="color:#7030a0;">}</span>'''.dtb, will be located in directory, ./tmp/deploy/images/<span style="color:#7030a0;">'''${MC}'''</span>. |
− | ==<span style="color:#0070c0;">Creating boot-up on-board flash from prebuilt image</span>== | + | == <span style="color:#0070c0;">Creating boot-up on-board flash from prebuilt image</span> == |
+ | |||
+ | === <span style="color:#0070c0;">To create one boot-up SD card</span> === | ||
− | |||
:Perform the following command in terminal console | :Perform the following command in terminal console | ||
::<code>$ gunzip -c '''<span style="color:#7030a0;">${PREBUILT_IMAGE</span>''' | dd of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=1M</code> | ::<code>$ gunzip -c '''<span style="color:#7030a0;">${PREBUILT_IMAGE</span>''' | dd of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=1M</code> | ||
+ | ::<code>$ sync</code> | ||
+ | |||
+ | === <span style="color:#0070c0;">To transfer whole system to on-board flash</span> === | ||
− | |||
:Boot up from SD card | :Boot up from SD card | ||
:Perform the following commands in debug console | :Perform the following commands in debug console | ||
Line 188: | Line 223: | ||
::<code># ./mksd-linux.sh /dev/mmcblk0</code> | ::<code># ./mksd-linux.sh /dev/mmcblk0</code> | ||
:press y followed by Enter, if following message shows up: | :press y followed by Enter, if following message shows up: | ||
− | ::[[File: | + | ::[[File:All data will be destroyed.png|RTENOTITLE]] |
:While "[Done]" shows up means the transferring is finished. | :While "[Done]" shows up means the transferring is finished. | ||
− | ==<span style="color:#0070c0;">Creating boot-up on-board flash from built sdcard image</span>== | + | == <span style="color:#0070c0;">Creating boot-up on-board flash from built sdcard image</span> == |
− | ===<span style="color:#0070c0;">To create one boot-up SD card</span>=== | + | |
+ | === <span style="color:#0070c0;">To create one boot-up SD card</span> === | ||
+ | |||
:Perform the following commands in terminal console | :Perform the following commands in terminal console | ||
::<code>$ pushd <span style="color:#7030a0;">'''${BSP_HOME}'''</span>/<span style="color:#7030a0;">'''${BDIR}'''</span>/tmp/deploy/images/<span style="color:#7030a0;">'''${MC}'''</span></code> | ::<code>$ pushd <span style="color:#7030a0;">'''${BSP_HOME}'''</span>/<span style="color:#7030a0;">'''${BDIR}'''</span>/tmp/deploy/images/<span style="color:#7030a0;">'''${MC}'''</span></code> | ||
::<code>$ dd if=<span style="color:#7030a0;">'''${SDCARD_IMAGE}'''</span> of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=1M</code> | ::<code>$ dd if=<span style="color:#7030a0;">'''${SDCARD_IMAGE}'''</span> of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=1M</code> | ||
+ | ::<code>$ sync</code> | ||
::<code>$ popd</code> | ::<code>$ popd</code> | ||
− | ===<span style="color:#0070c0;">To transfer whole system to on-board flash</span>=== | + | === <span style="color:#0070c0;">To transfer whole system to on-board flash</span> === |
+ | |||
:Boot up from SD card | :Boot up from SD card | ||
:Insert USB stick that contains <span style="color:#7030a0;">'''${SDCARD_IMAGE}'''</span>, USB stick will be auto mounted to /media/sda1. | :Insert USB stick that contains <span style="color:#7030a0;">'''${SDCARD_IMAGE}'''</span>, USB stick will be auto mounted to /media/sda1. | ||
Line 212: | Line 251: | ||
::<code># poweroff</code> | ::<code># poweroff</code> | ||
− | =Customization= | + | = Customization = |
− | ==<span style="color:#0070c0;">Package addition</span>== | + | |
− | ===<span style="color:#0070c0;">To add tcf-agent & openssh-sftp-server</span>=== | + | == <span style="color:#0070c0;">Package addition</span> == |
+ | |||
+ | === <span style="color:#0070c0;">To add tcf-agent & openssh-sftp-server</span> === | ||
+ | |||
:Navigate to the directory where fsl-image-adv.inc located | :Navigate to the directory where fsl-image-adv.inc located | ||
::<code>$ cd <span style="color:#7030a0;">'''${BSP_HOME}'''</span>/sources/meta-advantech/recipes-fsl/images</code> | ::<code>$ cd <span style="color:#7030a0;">'''${BSP_HOME}'''</span>/sources/meta-advantech/recipes-fsl/images</code> | ||
Line 221: | Line 263: | ||
:[[IoTGateway/BSP/Linux/iMX6/Yocto_LBV5_User_Guide#To_continue_an_exist_build_environment|Continue an exist build environment]] and [[IoTGateway/BSP/Linux/iMX6/Yocto_LBV5_User_Guide#To_build_sdcard_image|build sdcard image]] | :[[IoTGateway/BSP/Linux/iMX6/Yocto_LBV5_User_Guide#To_continue_an_exist_build_environment|Continue an exist build environment]] and [[IoTGateway/BSP/Linux/iMX6/Yocto_LBV5_User_Guide#To_build_sdcard_image|build sdcard image]] | ||
− | ===<span style="color:#0070c0 | + | === <span style="color:#0070c0">To add chromium browser</span> === |
+ | |||
:Navigate to the directory where local.conf located | :Navigate to the directory where local.conf located | ||
− | ::<code>$ cd <span style="color:#7030a0 | + | ::<code>$ cd <span style="color:#7030a0">'''${BSP_HOME}'''</span>/<span style="color:#7030a0">'''${BDIR'''</span>'''<span style="color:#7030a0">}</span>'''/conf</code> |
:Add following two lines to local.conf | :Add following two lines to local.conf | ||
::<code>CORE_IMAGE_EXTRA_INSTALL += "chromium"</code> | ::<code>CORE_IMAGE_EXTRA_INSTALL += "chromium"</code> | ||
::<code>LICENSE_FLAGS_WHITELIST="commercial"</code> | ::<code>LICENSE_FLAGS_WHITELIST="commercial"</code> | ||
− | :[[ | + | :[[#To_continue_an_exist_build_environment|Continue an exist build environment]] and [[#To_build_sdcard_image|build sdcard image]] |
+ | |||
+ | == <span style="color:#0070c0">Setting up SDK</span> == | ||
− | |||
:Please follow the section,[[IoTGateway/BSP/Linux/iMX6/Yocto_LBV5_User_Guide#To_build_toolchain_installer|To build toolchain installer]], to build one toolchain installer | :Please follow the section,[[IoTGateway/BSP/Linux/iMX6/Yocto_LBV5_User_Guide#To_build_toolchain_installer|To build toolchain installer]], to build one toolchain installer | ||
:Perform the following command in terminal console | :Perform the following command in terminal console | ||
− | ::<code>$ cd <span style="color:#7030a0 | + | ::<code>$ cd <span style="color:#7030a0">'''${BSP_HOME}'''</span>/<span style="color:#7030a0">'''BDIR'''</span>'''<span style="color:#7030a0">}</span>'''/tmp/deploy/sdk</code> |
− | ::<code>$ sudo ./poky-eglibc-x86_64- | + | ::<code>$ sudo ./poky-eglibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-<span style="color:#7030a0">'''${POKY}'''</span>.sh</code><br/> |
:Enter directory or press Enter while following question shows up: | :Enter directory or press Enter while following question shows up: | ||
− | ::[[File: | + | ::[[File:Setting up sdk 1.png|RTENOTITLE]] |
:Just press Enter while following question shows up: | :Just press Enter while following question shows up: | ||
− | ::[[File: | + | ::[[File:Setting up sdk 2.png|RTENOTITLE]] |
:While following message shows up means the SDK is ready. | :While following message shows up means the SDK is ready. | ||
− | ::[[File: | + | ::[[File:Setting up sdk 3.png|RTENOTITLE]] |
+ | |||
+ | == <span style="color:#0070c0;">Setting up cross compiling environment</span> == | ||
− | |||
:SDK has been set up (ref. [[#Setting_up_SDK|Setting up SDK]]) | :SDK has been set up (ref. [[#Setting_up_SDK|Setting up SDK]]) | ||
:Perform the following command in terminal console | :Perform the following command in terminal console | ||
::<code>$ source /opt/poky/<span style="color:#7030a0;">'''${POKY}'''</span>/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi</code> | ::<code>$ source /opt/poky/<span style="color:#7030a0;">'''${POKY}'''</span>/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi</code> | ||
− | ==<span style="color:#0070c0;">Building & updating u-boot manually</span>== | + | == <span style="color:#0070c0;">Building & updating u-boot manually</span> == |
− | ===<span style="color:#0070c0;">To build u-boot</span>=== | + | |
+ | === <span style="color:#0070c0;">To build u-boot</span> === | ||
+ | |||
:The cross compiling environment has been set up. (ref. [[#Setting_up_cross_compiling_environment|Setting up cross compiling environment]]) | :The cross compiling environment has been set up. (ref. [[#Setting_up_cross_compiling_environment|Setting up cross compiling environment]]) | ||
:Make one copy from Yocto working directory | :Make one copy from Yocto working directory | ||
Line 263: | Line 310: | ||
:The two files, u-boot-crc.bin & u-boot-crc.bin.crc, are located in directory "~/code/u-boot-imx". | :The two files, u-boot-crc.bin & u-boot-crc.bin.crc, are located in directory "~/code/u-boot-imx". | ||
− | ===<span style="color:#0070c0;">To update u-boot to target device</span>=== | + | === <span style="color:#0070c0;">To update u-boot to target device</span> === |
+ | |||
:Perform the following command to transfer to exist boot-up SD card | :Perform the following command to transfer to exist boot-up SD card | ||
::<code>$ dd if=u-boot_crc.bin.crc of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=512 seek=2 conv=fsync</code> | ::<code>$ dd if=u-boot_crc.bin.crc of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=512 seek=2 conv=fsync</code> | ||
Line 271: | Line 319: | ||
::<code># dd if=u-boot-crc.bin of=/dev/mmcblk0 bs=512 seek=3 conv=fsync</code> | ::<code># dd if=u-boot-crc.bin of=/dev/mmcblk0 bs=512 seek=3 conv=fsync</code> | ||
− | ==<span style="color:#0070c0;">Building & updating kernel/modules/dtb manually</span>== | + | == <span style="color:#0070c0;">Building & updating kernel/modules/dtb manually</span> == |
− | ===<span style="color:#0070c0;">To build kernel/modules/dtb</span>=== | + | |
+ | === <span style="color:#0070c0;">To build kernel/modules/dtb</span> === | ||
+ | |||
:The cross compiling environment has been set up. (ref. [[#Setting_up_cross_compiling_environment|Setting up cross compiling environment]]) | :The cross compiling environment has been set up. (ref. [[#Setting_up_cross_compiling_environment|Setting up cross compiling environment]]) | ||
Line 304: | Line 354: | ||
:The device tree blob, <span style="color:#7030a0;">'''${IMX6PROC}'''</span>-<span style="color:#7030a0;">'''${BOARD}'''</span>-<span style="color:#7030a0;">'''${BOARD_REV}'''</span>.dtb, is located in the directory "./arch/arm/boot/dts/". | :The device tree blob, <span style="color:#7030a0;">'''${IMX6PROC}'''</span>-<span style="color:#7030a0;">'''${BOARD}'''</span>-<span style="color:#7030a0;">'''${BOARD_REV}'''</span>.dtb, is located in the directory "./arch/arm/boot/dts/". | ||
− | ===<span style="color:#0070c0;">To update kernel/modules/dtb to target device</span>=== | + | === <span style="color:#0070c0;">To update kernel/modules/dtb to target device</span> === |
+ | |||
:Copy zImage & <span style="color:#7030a0;">'''${IMX6PROC}'''</span>-<span style="color:#7030a0;">'''${BOARD}'''</span>-<span style="color:#7030a0;">'''${BOARD_REV}'''</span>.dtb to the 1<sup>st</sup> partition of SD card | :Copy zImage & <span style="color:#7030a0;">'''${IMX6PROC}'''</span>-<span style="color:#7030a0;">'''${BOARD}'''</span>-<span style="color:#7030a0;">'''${BOARD_REV}'''</span>.dtb to the 1<sup>st</sup> partition of SD card | ||
:Copy modues to the 2<sup>nd</sup> partition of SD card. | :Copy modues to the 2<sup>nd</sup> partition of SD card. | ||
:Make sure all new linux kernel, device tree and kernel modules work well, then copy all of them to the on-board flash | :Make sure all new linux kernel, device tree and kernel modules work well, then copy all of them to the on-board flash | ||
− | =System Recovery= | + | = System Recovery = |
+ | |||
Please refer to [[#Creating_boot-up_on-board_flash_from_prebuilt_image|Creating boot-up on-board flash from prebuilt image]] / [[#Creating_boot-up_on-board_flash_from_built_sdcard_image|sdcard image]] to create a boot-up SD card and transfer whole system to on-board flash. | Please refer to [[#Creating_boot-up_on-board_flash_from_prebuilt_image|Creating boot-up on-board flash from prebuilt image]] / [[#Creating_boot-up_on-board_flash_from_built_sdcard_image|sdcard image]] to create a boot-up SD card and transfer whole system to on-board flash. |
Latest revision as of 08:53, 14 March 2017
Contents
- 1 Getting Started
- 2 Customization
- 3 System Recovery
Getting Started
Prerequisites
All operations in this guide are based on Ubuntu 12.04 LTS 64bit only.
First please install Ubuntu 12.04 LTS 64bit* with minimum 2GB memory.
* ubuntu-12.04.1-desktop-amd64.iso
To install required packages
Please login and perform the following commands:
$ sudo apt-get install ssh $ sudo apt-get install ia32-libs libx11-dev:i386 libreadline6-dev:i386 \ libgl1-mesa-glx:i386 zlib1g-dev:i386 uuid-dev:i386 liblzo2-dev:i386 \ libncurses5-dev:i386 $ sudo apt-get install \ bison build-essential ccache dpkg flex gcc g++ gettext intltool \ libarchive-zip-perl libfreetype6-dev libdbus-glib-1-dev liborbit2-dev \ libxml2-dev libx11-dev libgtk2.0-dev liblzo2-2 libtool m4 \ patch rpm tcl uboot-mkimage uuid zlib1g zlib1g-dev \ git gnupg flex bison gperf build-essential zip \ curl libc6-dev libncurses5-dev x11proto-core-dev libx11-dev:i386 \ libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib \ mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 \ gcc-4.6 g++-4.6 cpp-4.6 gcc-4.6-multilib uuid-dev liblzo2-dev \ uboot-mkimage libarchive-zip-perl \ wget git-core unzip texinfo gawk diffstat build-essential chrpath \ sed cvs subversion coreutils texi2html \ docbook-utils python-pysqlite2 help2man make gcc g++ \ desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial \ autoconf automake groff curl lzop asciidoc xterm $ sudo apt-get install libncurses5-dev:i386 liblzo2-dev:i386 uuid-dev:i386 $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so $ tar zcvf ~/usr_lib_i386-linux-gnu_for_Building_Android_KK.tar.gz \ /usr/lib/i386-linux-gnu/{libuuid.a,libuuid.so,liblzo2.so,liblzo2.a} $ sudo apt-get install uuid-dev liblzo2-dev $ sudo tar zxvf ~/usr_lib_i386-linux-gnu_for_Building_Android_KK.tar.gz -C /
To install JDK
Please download "jdk-6u45-linux-x64.bin" manually from Oracle Official Website
And put it to directory ~/FILES/ and perform the following commands:
$ cd /usr/lib $ sudo ~/FILES/jdk-6u45-linux-x64.bin $ sudo mkdir jvm $ cd jvm $ sudo mv ../jdk1.6.0_45 . $ cd jdk1.6.0_45/ $ sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.6.0_45/jre/bin/java 2 $ sudo update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/jdk1.6.0_45/bin/javac 2 $ sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.6.0_45/bin/jar 2 $ sudo update-alternatives --install /usr/bin/javap javap /usr/lib/jvm/jdk1.6.0_45/bin/javap 2 $ sudo update-alternatives --install /usr/bin/javadoc javadoc /usr/lib/jvm/jdk1.6.0_45/bin/javadoc 2 $ sudo update-alternatives --config javap $ sudo update-alternatives --config javadoc $ sudo update-alternatives --config java $ sudo update-alternatives --config javac $ sudo update-alternatives --config jar $ cd ~/ $ sudo sh -c "echo "JAVA_HOME=/usr/lib/jvm/jdk1.6.0_45" >> /etc/environment"
If you have some troubles on setting up build environment, we recommend that you use Docker, and it is more safely & quickly. Please refer to Docker
Conventions
${PREBUILT_IMAGE} : compressed prebuilt image (*.img.gz)
${BSP_TARBALL} : BSP tarball (*.tgz)
${BSP_HOME} : home directory of the BSP
${BDIR} : build directory (e.g. build-x11)
${MX6PROC} : i.MX6 Processor
- mx6q for iMX6 Quad Core / Dual Core
- mx6dl for iMX6 Dual Lite / Solo
${IMX6PROC} : i.MX6 Processor
- imx6q / imx6dl
${BOARD} : available target boards list below
- ubc220 / rom3420 / rom5420 / rom7420 / rsb4410 / rsb6410 / ubcds31 / wise3310
${BOARD_REV} : board revision
- a1 / a2 / b1
${MC} : machine code combined with ${IMX6PROC}${BOARD}${BOARD_REV}
- for example,
- imx6dlubc220a1 for UBC-220-Dual-Light A1
- imx6qrom3420a1 for ROM-3420-Dual/Quad A1
- imx6qrom5420a1 for ROM-5420-Dual/Quad A1
- imx6qrom5420b1 for ROM-5420-Dual/Quad B1
- imx6qrom7420a1 for ROM-7420-Dual/Quad A1
- imx6qrsb4410a1 for RSB-4410-Dual A1
- imx6qrsb4410a2 for RSB-4410-Dual A2
- imx6qrsb6410a1 for RSB-6410-Dual A1
- imx6qubcds31a1 for UBC-DS31-Dual A1
- imx6qwise3310a1 for WISE-3310-Dual A1
${MEM_SIZE} : memory size
- 1G / 2G / 512M
${SD_DEVICE} : device name of SD card in Ubuntu (e.g. /dev/sdf)
${SDCARD_IMAGE} : sdcard image built by bitbake (*.sdcard)
${UBOOT} :u-boot version(e.g. 2013.04-r0)
${KERNEL} : linux kernel version(e.g. 3.14.28-r0)
${POKY} : Yocto poky version(e.g. 1.7)
debug console / serial console
- serial terminal program (e.g. minicom, putty, teraterm ...) that serial port is configured to 115200 8N1
terminal console
- terminal program (e.g. gnome-terminal, xfce4-terminal ...)
Introducing BSP
- The BSP is based on Yocto Project with Freescale enhanced features for i.MX6, plus specific target board features from Advantech Inc..
Naming Rule
- The tarball/prebuilt image name is consist of the model name followed by "LB" or "LI" plus version number and released date.
- For example, 7420A1LBV5080_2016-03-09.tgz which "7420A1" stands for ROM-7420 A1, "LB" is acronym of Linux BSP, "V5080" stands for Version 5.080.
- For example, 7420A1LIV5080_DualQuad_2016-03-09.img.gz which "LI" is acronym for prebuilt Linux Image, DualQuad means this image is fit for Dual Core/Quad Core.
BSP tarball
- Unpack BSP tarball to home directory by performing the following command:
$ tar xvf ${BSP_TARBALL} -C ~/
Prebuilt image
- Perform the following command to build one boot-up SD card
$ gunzip -c ${PREBUILT_IMAGE} | dd of=${SD_DEVICE} bs=1M
Build Instructions
To create one new build environment
- Perform the following commands in terminal console
$ cd ${BSP_HOME}
$ MACHINE=${MC} source fsl-setup-release.sh -b ${BDIR} -e x11
- You need to read and accept the EULA.
To continue an exist build environment
- Perform the following commands in terminal console
$ cd ${BSP_HOME}
$ source setup-environment ${BDIR}
To build sdcard image
- To create/continue a build environment
- Perform the following command in terminal console
$ bitbake fsl-image-qt5
- The file, fsl-image-qt5-${MC}.sdcard, will be located in directory, ./tmp/deploy/images/${MC}, while building process finished successfully.
To build toolchain installer
- To create/continue a build environment
- Perform the following command in terminal console
$ bitbake meta-toolchain-qt5
- The installer, poky-eglibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-${POKY}.sh, will be located in the directory "./tmp/deploy/sdk".
To build u-boot
- To create/continue a build environment
- Perform the following command in terminal console
$ bitbake u-boot-imx
- The two files, u-boot_crc.bin & u-boot_crc.bin.crc, will be located in directory, ./tmp/deploy/images/${MC}.
To build linux kernel
- To create/continue a build environment
- Perform the following command in terminal console
- to show up menuconfig
$ bitbake linux-imx -c menuconfig
- * If you operate on docker images, please install tmux application before running this command.
$ sudo apt-get install tmux
- * If you operate on docker images, please install tmux application before running this command.
- to do build
$ bitbake linux-imx
- to show up menuconfig
- The two files, zImage & ${IMX6PROC}-${BOARD}-${BOARD_REV}.dtb, will be located in directory, ./tmp/deploy/images/${MC}.
Creating boot-up on-board flash from prebuilt image
To create one boot-up SD card
- Perform the following command in terminal console
$ gunzip -c ${PREBUILT_IMAGE | dd of=${SD_DEVICE} bs=1M
$ sync
To transfer whole system to on-board flash
- Boot up from SD card
- Perform the following commands in debug console
# cd /mk_inand
# ./mksd-linux.sh /dev/mmcblk0
- press y followed by Enter, if following message shows up:
- While "[Done]" shows up means the transferring is finished.
Creating boot-up on-board flash from built sdcard image
To create one boot-up SD card
- Perform the following commands in terminal console
$ pushd ${BSP_HOME}/${BDIR}/tmp/deploy/images/${MC}
$ dd if=${SDCARD_IMAGE} of=${SD_DEVICE} bs=1M
$ sync
$ popd
To transfer whole system to on-board flash
- Boot up from SD card
- Insert USB stick that contains ${SDCARD_IMAGE}, USB stick will be auto mounted to /media/sda1.
- Perform the following commands in debug console
# umount /media/mmcblk0p?
# cd /media/sda1
# dd if=${SDCARD_IMAGE} of=/dev/mmcblk0 bs=4M conv=fsync
# P2START=$(fdisk -lu | grep mmcblk0p2 | awk '{print $2}')
# echo -e "d\n2\nn\np\n2\n${P2START}\n\nw\n" | fdisk -u /dev/mmcblk0
# umount /media/mmcblk0p2
# e2fsck -f -y /dev/mmcblk0p2
# resize2fs /dev/mmcblk0p2
# poweroff
Customization
Package addition
To add tcf-agent & openssh-sftp-server
- Navigate to the directory where fsl-image-adv.inc located
$ cd ${BSP_HOME}/sources/meta-advantech/recipes-fsl/images
- Add following line to fsl-image-adv.inc
IMAGE_INSTALL += " tcf-agent openssh-sftp-server "
- Continue an exist build environment and build sdcard image
To add chromium browser
- Navigate to the directory where local.conf located
$ cd ${BSP_HOME}/${BDIR}/conf
- Add following two lines to local.conf
CORE_IMAGE_EXTRA_INSTALL += "chromium"
LICENSE_FLAGS_WHITELIST="commercial"
- Continue an exist build environment and build sdcard image
Setting up SDK
- Please follow the section,To build toolchain installer, to build one toolchain installer
- Perform the following command in terminal console
$ cd ${BSP_HOME}/BDIR}/tmp/deploy/sdk
$ sudo ./poky-eglibc-x86_64-meta-toolchain-qt5-cortexa9hf-vfp-neon-toolchain-${POKY}.sh
- Enter directory or press Enter while following question shows up:
- Just press Enter while following question shows up:
- While following message shows up means the SDK is ready.
Setting up cross compiling environment
- SDK has been set up (ref. Setting up SDK)
- Perform the following command in terminal console
$ source /opt/poky/${POKY}/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
Building & updating u-boot manually
To build u-boot
- The cross compiling environment has been set up. (ref. Setting up cross compiling environment)
- Make one copy from Yocto working directory
$ mkdir -p ~/code
$ pushd ${BSP_HOME}/${BDIR}/tmp/work/${MC}-poky-linux-gnueabi/
$ rm -rf ~/code/u-boot-imx
$ cp -a ./u-boot-imx/${UBOOT}/git ~/code/u-boot-imx
$ popd
- Configure u-boot
$ cd ~/code/u-boot-imx
$ make distclean
$ make ${MX6PROC}${BOARD}${BOARD_REV}_${MEM_SIZE}_config
- Start building u-boot
$ make -j4 LDFLAGS=
- The two files, u-boot-crc.bin & u-boot-crc.bin.crc, are located in directory "~/code/u-boot-imx".
To update u-boot to target device
- Perform the following command to transfer to exist boot-up SD card
$ dd if=u-boot_crc.bin.crc of=${SD_DEVICE} bs=512 seek=2 conv=fsync
$ dd if=u-boot-crc.bin of=${SD_DEVICE} bs=512 seek=3 conv=fsync
- Make sure new u-boot does work then perform the following commands to transfer to on-board flash
# dd if=u-boot_crc.bin.crc of=/dev/mmcblk0 bs=512 seek=2 conv=fsync
# dd if=u-boot-crc.bin of=/dev/mmcblk0 bs=512 seek=3 conv=fsync
Building & updating kernel/modules/dtb manually
To build kernel/modules/dtb
- The cross compiling environment has been set up. (ref. Setting up cross compiling environment)
- Make one copy from Yocto working directory
$ mkdir -p ~/code
$ pushd ${BSP_HOME}/${BDIR}/tmp/work/${MC}-poky-linux-gnueabi/
$ rm -rf ~/code/linux-imx
$ cp -a ./linux-imx/${KERNEL}/git ~/code/inux-imx
$ popd
- Configure linux kernel
$ cd ~/code/linux-imx
$ make distclean
$ make imx_v7_adv_defconfig
$ make menuconfig PKG_CONFIG_SYSROOT_DIR= PKG_CONFIG_PATH=
- Start building linux kernel
$ make -j4 zImage LOADADDR=0x10008000 LDFLAGS=
- The kernel image file, zImage, is located in the directory "./arch/arm/boot/".
- Start building kernel modules
$ make -j4 modules LDFLAGS=
- Copy all modules to a temporary rootfs directory, "~/temp/rootfs"
$ make modules_install INSTALL_MOD_PATH=~/temp/rootfs
- Start building device tree blob
$ make -j4 ${IMX6PROC}-${BOARD}-${BOARD_REV}.dtb
- The device tree blob, ${IMX6PROC}-${BOARD}-${BOARD_REV}.dtb, is located in the directory "./arch/arm/boot/dts/".
To update kernel/modules/dtb to target device
- Copy zImage & ${IMX6PROC}-${BOARD}-${BOARD_REV}.dtb to the 1st partition of SD card
- Copy modues to the 2nd partition of SD card.
- Make sure all new linux kernel, device tree and kernel modules work well, then copy all of them to the on-board flash
System Recovery
Please refer to Creating boot-up on-board flash from prebuilt image / sdcard image to create a boot-up SD card and transfer whole system to on-board flash.