Difference between revisions of "IoTGateway/BSP/Linux/Quark/Yocto LBV2 User Guide"
Line 98: | Line 98: | ||
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>== | ||
+ | :The BSP is based on Yocto Project with Intel enhanced features for Quark, plus specific target board features from Advantech Inc.. | ||
+ | |||
+ | ===<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. | ||
+ | |||
+ | :For example, U222LBV2011_2016-01-29.zip which "<span style="color:#ff0000;">'''U'''</span>222" stands for UBC-<span style="color:#ff0000;">'''222'''</span>, "LB" is acronym of <span style="color:#ff0000;">'''L'''</span>inux <span style="color:#ff0000;">'''B'''</span>SP, "V2011" stands for <span style="color:#ff0000;">'''V'''</span>ersion <span style="color:#ff0000;">'''2'''</span>.<span style="color:#ff0000;">'''022'''</span><nowiki>.</nowiki> | ||
+ | :For example, U222LBV2011_2016-01-29.zip 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>=== | ||
+ | :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;">}'''</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: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> | ||
+ | |||
+ | ===<span style="color:#0070c0;">Prebuilt image</span>=== | ||
+ | :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;">}'''</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 | ||
+ | ::<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> | ||
+ | :You need to read and accept the EULA. | ||
+ | :[[Image:accept_EULA.png]] | ||
+ | |||
+ | ===<span style="color:#0070c0;">To continue an exist build environment</span>=== | ||
+ | :Perform the following commands in terminal console | ||
+ | ::<code>$ cd <span style="color:#7030a0;">'''${BSP_HOME}'''</span></code> | ||
+ | ::<code>$ source setup-environment <span style="color:#7030a0;">'''${BDIR}'''</span></code> | ||
+ | |||
+ | ===<span style="color:#0070c0;">To build sdcard image</span>=== | ||
+ | :To create/continue a build environment | ||
+ | :Perform the following command in terminal console | ||
+ | ::<code>$ bitbake fsl-image-qt5</code> | ||
+ | :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;">To build toolchain installer</span>=== | ||
+ | :To create/continue a build environment | ||
+ | :Perform the following command in terminal console | ||
+ | ::<code>$ bitbake fsl-image-qt5 -c populate_sdk</code> | ||
+ | :The installer, poky-eglibc-x86_64-fsl-image-qt5-cortexa9hf-vfp-neon-toolchain-<span style="color:#7030a0;">'''${POKY}'''</span>.sh, will be located in the directory "./tmp/deploy/sdk".</code> | ||
+ | |||
+ | ===<span style="color:#0070c0;">To build u-boot</span>=== | ||
+ | :To create/continue a build environment | ||
+ | :Perform the following command in terminal console | ||
+ | ::<code>$ bitbake u-boot-imx</code> | ||
+ | :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>=== | ||
+ | :To create/continue a build environment | ||
+ | :Perform the following command in terminal console | ||
+ | ::to show up menuconfig | ||
+ | :::<code>$ bitbake linux-imx -c menuconfig</code> | ||
+ | ::to do build | ||
+ | :::<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;">}'''</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;">To create one boot-up SD card</span>=== | ||
+ | :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> | ||
+ | |||
+ | ===<span style="color:#0070c0;">To transfer whole system to on-board flash</span>=== | ||
+ | :Boot up from SD card | ||
+ | :Perform the following commands in debug console | ||
+ | ::<code># cd /mk_inand</code> | ||
+ | ::<code># ./mksd-linux.sh /dev/mmcblk0</code> | ||
+ | :press y followed by Enter, if following message shows up: | ||
+ | ::[[File:all_data_will_be_destroyed.png]] | ||
+ | :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;">To create one boot-up SD card</span>=== | ||
+ | :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>$ dd if=<span style="color:#7030a0;">'''${SDCARD_IMAGE}'''</span> of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=1M</code> | ||
+ | ::<code>$ popd</code> | ||
+ | |||
+ | ===<span style="color:#0070c0;">To transfer whole system to on-board flash</span>=== | ||
+ | :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. | ||
+ | :Perform the following commands in debug console | ||
+ | ::<code># umount /media/mmcblk0p?</code> | ||
+ | ::<code># cd /media/sda1</code> | ||
+ | ::<code># dd if=<span style="color:#7030a0;">'''${SDCARD_IMAGE}'''</span> of=/dev/mmcblk0 bs=4M conv=fsync</code> | ||
+ | ::<code># P2START=$(fdisk -lu | grep mmcblk0p2 | awk '{print $2}')</code> | ||
+ | ::<code># echo -e "d\n2\nn\np\n2\n<span style="color:#7030a0;">'''${P2START}'''</span>\n\nw\n" | fdisk -u /dev/mmcblk0</code> | ||
+ | ::<code># umount /media/mmcblk0p2</code> | ||
+ | ::<code># e2fsck -f -y /dev/mmcblk0p2</code> | ||
+ | ::<code># resize2fs /dev/mmcblk0p2</code> | ||
+ | ::<code># poweroff</code> | ||
+ | |||
+ | =Customization= | ||
+ | ==<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 | ||
+ | ::<code>$ cd <span style="color:#7030a0;">'''${BSP_HOME}'''</span>/sources/meta-advantech/recipes-fsl/images</code> | ||
+ | :Add following line to fsl-image-adv.inc | ||
+ | ::<code>IMAGE_INSTALL += " tcf-agent openssh-sftp-server "</code> | ||
+ | :[[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;">To add chromium browser</span>=== | ||
+ | :Navigate to the directory where local.conf located | ||
+ | ::<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 | ||
+ | ::<code>CORE_IMAGE_EXTRA_INSTALL += "chromium"</code> | ||
+ | ::<code>LICENSE_FLAGS_WHITELIST="commercial"</code> | ||
+ | :[[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;">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 | ||
+ | :Perform the following command in terminal console | ||
+ | ::<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-fsl-image-qt5-cortexa9hf-vfp-neon-toolchain-<span style="color:#7030a0;">'''${POKY}'''</span>.sh</code> | ||
+ | :Enter directory or press Enter while following question shows up: | ||
+ | ::[[File:setting_up_sdk_1.png]] | ||
+ | :Just press Enter while following question shows up: | ||
+ | ::[[File:setting_up_sdk_2.png]] | ||
+ | :While following message shows up means the SDK is ready. | ||
+ | ::[[File:setting_up_sdk_3.png]] | ||
+ | |||
+ | ==<span style="color:#0070c0;">Setting up cross compiling environment</span>== | ||
+ | :SDK has been set up (ref. [[#Setting_up_SDK|Setting up SDK]]) | ||
+ | :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> | ||
+ | |||
+ | ==<span style="color:#0070c0;">Building & updating u-boot manually</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]]) | ||
+ | :Make one copy from Yocto working directory | ||
+ | ::<code>$ mkdir -p ~/code</code> | ||
+ | ::<code>$ pushd <span style="color:#7030a0;">'''${BSP_HOME}'''</span>/<span style="color:#7030a0;">'''${BDIR}'''</span>/tmp/work/<span style="color:#7030a0;">'''${MC}'''</span>-poky-linux-gnueabi/</code> | ||
+ | ::<code>$ rm -rf ~/code/u-boot-imx</code> | ||
+ | ::<code>$ cp -a ./u-boot-imx/<span style="color:#7030a0;">'''${UBOOT}'''</span>/git ~/code/u-boot-imx</code> | ||
+ | ::<code>$ popd</code> | ||
+ | :Configure u-boot | ||
+ | ::<code>$ cd ~/code/u-boot-imx</code> | ||
+ | ::<code>$ make distclean</code> | ||
+ | ::<code>$ make <span style="color:#7030a0;">'''${MX6PROC}${BOARD}${BOARD_REV}'''</span>_<span style="color:#7030a0;">'''${MEM_SIZE}'''</span>_config</code> | ||
+ | :Start building u-boot | ||
+ | ::<code>$ make -j4 LDFLAGS=</code> | ||
+ | :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>=== | ||
+ | :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 of=<span style="color:#7030a0;">'''${SD_DEVICE}'''</span> bs=512 seek=3 conv=fsync</code> | ||
+ | :Make sure new u-boot does work then perform the following commands to transfer to on-board flash | ||
+ | ::<code># dd if=u-boot_crc.bin.crc of=/dev/mmcblk0 bs=512 seek=2 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;">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]]) | ||
+ | |||
+ | :Make one copy from Yocto working directory | ||
+ | ::<code>$ mkdir -p ~/code</code> | ||
+ | ::<code>$ pushd <span style="color:#7030a0;">'''${BSP_HOME}'''</span>/<span style="color:#7030a0;">'''${BDIR}'''</span>/tmp/work/<span style="color:#7030a0;">'''${MC}'''</span>-poky-linux-gnueabi/</code> | ||
+ | ::<code>$ rm -rf ~/code/linux-imx</code> | ||
+ | ::<code>$ cp -a ./linux-imx/${KERNEL}/git ~/code/inux-imx</code> | ||
+ | ::<code>$ popd</code> | ||
+ | |||
+ | :Configure linux kernel | ||
+ | ::<code>$ cd ~/code/linux-imx</code> | ||
+ | ::<code>$ make distclean</code> | ||
+ | ::<code>$ make imx_v7_adv_defconfig</code> | ||
+ | ::<code>$ make menuconfig PKG_CONFIG_SYSROOT_DIR= PKG_CONFIG_PATH=</code> | ||
+ | |||
+ | :Start building linux kernel | ||
+ | ::<code>$ make -j4 zImage LOADADDR=0x10008000 LDFLAGS=</code> | ||
+ | |||
+ | :The kernel image file, zImage, is located in the directory "./arch/arm/boot/". | ||
+ | |||
+ | :Start building kernel modules | ||
+ | ::<code>$ make -j4 modules LDFLAGS=</code> | ||
+ | |||
+ | :Copy all modules to a temporary rootfs directory, "~/temp/rootfs" | ||
+ | ::<code>$ make modules_install INSTALL_MOD_PATH=~/temp/rootfs</code> | ||
+ | |||
+ | :Start building device tree blob | ||
+ | ::<code>$ make -j4 <span style="color:#7030a0;">'''${IMX6PROC}'''</span>-<span style="color:#7030a0;">'''${BOARD}'''</span>-<span style="color:#7030a0;">'''${BOARD_REV}'''</span>.dtb</code> | ||
+ | |||
+ | :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>=== | ||
+ | :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. | ||
+ | :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|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. |
Revision as of 06:58, 15 April 2016
Yocto Linux BSP Ver.2 User Guide for Quark series
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, 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"
Conventions
${BOARD_ID} : board ID
- e.g. ubc222 or ubc221
${IMAGE_PACK} : prebuilt image pack
- e.g. ubc222 or ubc221
${IMAGE_DIR} : the directory prebuilt image pack extracted to
- e.g. ~/U222LIV2011_quark_2016-01-29
${BSP_PACK} : BSP pack
- e.g. U222LIV2011_quark_2016-01-29.zip
${BSP_HOME} : the directory BSP pack extracted to
- e.g. ~/LBV2011/meta-clanton_v1.2.0
${BDIR} : build directory
- e.g. yocto_build
${DEPLOY_IMAGE} : all built images are located in this relative path starts from ${BDIR}
- e.g. tmp/deploy/images/quark
${DEPLOY_SDK} : the built SDK is located in this relative path starts from ${BDIR}
- e.g. tmp/deploy/sdk
${SD_MOUNT} : mount point of SD card in Ubuntu
- e.g. /media/sdf1
${POKY} : Yocto poky version
- e.g. 1.7.2
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 Intel enhanced features for Quark, 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, U222LBV2011_2016-01-29.zip which "U222" stands for UBC-222, "LB" is acronym of Linux BSP, "V2011" stands for Version 2.022.
- For example, U222LBV2011_2016-01-29.zip 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 fsl-image-qt5 -c populate_sdk
- The installer, poky-eglibc-x86_64-fsl-image-qt5-cortexa9hf-vfp-neon-toolchain-${POKY}.sh, will be located in the directory "./tmp/deploy/sdk".</code>
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
- 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
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
$ 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-fsl-image-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.