VAR-SOM-MX6 Yocto GS R7
Introduction
- This Yocto Daisy release is based on Freescale L3.10.53_1.1.0-ga release.
- Release 1 version.
Main features:
- Yocto Daisy.
- Linux kernel: linux-imx_3.10.53_1.0.0.
- Uboot: imx_v2013.10_var4.
- QT5 X, QT5 Embedded
- Yocto Daisy: Based on L3.10.53_1.1.0-ga_iMX6qdls Freescale release. Yocto Daisy support code is located in meta-variscite folder.
Supported hardware and features
Feature |
Description |
---|---|
Board support |
VAR-DVK-MX6,VAR-SOM-MX6 |
CPU |
|
Software platform |
Yocto Daisy release. |
Nand Recovery | |
NAND Flash size support |
128MB up to 1GB |
eMMC |
up to 64GB |
DDR size support configuration |
Solo:up to 1GB. DualLite, Dual, Quad: up to 4GB |
SD-Card |
+ |
Ethernet |
10/100/1000 Mbps Ethernet |
WLAN |
Support for Wilink8, Dual band 5.0ghz + MIMO b/g/n |
Bluetooth |
4.0 |
CAN bus |
+ |
I2C |
+ |
SPI |
+ |
USB host |
+ |
USB OTG |
Device / Host |
Uarts |
x3, up to 3.6 Mbps. Minicom avilable to use with the port |
RTC |
+ |
Display | HDMI 720P,1080P LVDS0 (On board LVDS to RGB bridge, EVK supports 800x480 resolution) LVDS1 external display |
Audio | Line IN/ Line out |
Camera | ov5640 camera sensor. CB402 board can be purchased separately |
SATA | + |
Variscite Yocto Daisy release 2 Beta for Freescale i.MX6.
Installing required packages
Follow the link below and install all required packages on your machine.
www.yoctoproject.org/docs/latest/yocto-project-qs/yocto-project-qs.html
For example, if your building machine is an Ubuntu machine:
sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm lzop
Variscite Yocto build was tested with Ubuntu 12.04 LTS only!
Download Yocto Daisy for i.MX6 with Variscite VAR-SOM-MX6 support
Use "repo" to fetch Yocto and apply Variscite's patches for the BSP support:
- Install the `repo` utility:
$ mkdir ~/bin (this step may not be needed if the bin folder already exists) $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo $ chmod a+x ~/bin/repo Add the following line to the .bashrc file to ensure that the ~/bin folder is in your PATH variable $ export PATH=~/bin:$PATH
Reference repo is available on FTP.
- Clone Yocto Daisy from Freescale's git:
$ cd ~ $ mkdir var-som-mx6-daisy-v7 $ cd var-som-mx6-daisy-v7 $ git config --global user.name "Your Name" $ git config --global user.email "Your Email" $ repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.10.53-1.1.0_ga $ repo sync
- Download ftp.variscite.com/VAR-SOM-MX6/Software/Linux/Yocto/Release6/var_yocto_v7.tar.bz2
- Extract tarball:
$ cd ~/var-som-mx6-daisy-v7 $ tar xvf ~/Downloads/var_yocto_v7.tar.bz2 $ variscite/install
This method will preserve the git repositories. It will enable you to track Variscite's changes, and your own.
Setup and build Yocto QT5/X
Setup the environment and use build_var folder
$ cd ~/var-som-mx6-daisy-v7 $ source var-setup-release.sh -b build_x11 -e x11
If you close your terminal and wish to build Yocto again, you should do:
$ cd ~/var-som-mx6-daisy-v7
$ . ./setup-environment build_x11Setup and build Yocto QT5/Embedded
Setup the environment and use build_var folder
$ cd ~/var-som-mx6-daisy-v7 $ source var-setup-release.sh -b build_fb -e fb
If you close your terminal and wish to build Yocto again, you should do:
$ cd ~/var-som-mx6-daisy-v7
$ . ./setup-environment build_fblocal.conf customizations
Edit you local.conf file:
$ gedit conf/local.conf
Change parallel build and download directory:
Set the build parameters to fully utilize your host machine's resources
BB_NUMBER_THREADS = '4'
PARALLEL_MAKE = '-j 6'
BB_NUMBER_THREADS should be your host machine's number of threads minus 2 or same. PARALLEL_MAKE should be the number of threads your host machine has plus two.
Change packages download directory. By default it is set to: DL_DIR ?= "${BSPDIR}/downloads/" change it to a global folder like DL_DIR ?= "/opt/yocto_dl/". Don't forget to create the folder and make it available without a sudo permeation.
Build your image
$ bitbake fsl-image-qt5
The resulted images are locaated in tmp/deploy/images/varsomimx6.
Looking at tmp/deploy/images/varsomimx6 you will find 6 main files that are linked to the actual file
Image Name |
How to use | |
---|---|---|
fsl-image-qt5-varsomimx6.ext3 |
Not in Use | |
fsl-image-qt5-varsomimx6.sdcard |
This image is for SD-Card boot. Default u-boot is built for SDCARD. Booting from SD-Card is explained in details below. $ sudo dd if=tmp/deploy/images/varsomimx6/fsl-image-qt5-varsomimx6.sdcard of=/dev/sdX bs=1024k devxxx = mmcblk0 or sdX. Do dmesg after you insert an SD-Card into your build system to figure out the device name Comment: Use "$ sudo gparted /dev/devxxx"
| |
fsl-image-qt5-varsomimx6.tar.bz2 |
Used to create an NFS root file system on the host. $ sudo mkdir ../rootfs $ sudo rm -rf ../rootfs/* $ sudo tar xvf tmp/deploy/images/varsomimx6/fsl-image-qt5-varsomimx6.tar.bz2 -C ../rootfs See apendix for setting an NFS server | |
fsl-image-qt5-varsomimx6.ubi |
Use the sdcard created above. Copy the file into it and use the following commands to flash them into nand. $ sudo mkdir /media/rootfs/opt/images $ sudo cp tmp/deploy/images/varsomimx6/uImage /media/rootfs/opt/images $ sudo cp tmp/deploy/images/varsomimx6/uImage-imx6q-var-som.dtb /media/rootfs/opt/images/imx6q-var-som.dtb $ sudo cp tmp/deploy/images/varsomimx6/uImage-imx6dl-var-som.dtb /media/rootfs/opt/images/imx6dl-var-som.dtb $ sudo cp tmp/deploy/images/varsomimx6/uImage-imx6dl-var-som-solo.dtb /media/rootfs/opt/images/imx6dl-var-som.dtb $ sudo cp tmp/deploy/images/varsomimx6/fsl-image-qt5-varsomimx6.ubi /media/rootfs/opt/images By default Yocto build the u-boot for sdcard. Use the method of building u-boot out of tree for nand and copy the result into the sdcard. $ sudo cp u-boot.img /media/rootfs/opt/images $ sudo cp SPL /media/rootfs/opt/images Unmount the sdcard $ sudo umount /media/rootfs $ sudo umount /media/BOT_varsomi Flashing on target: $ flash_eraseall /dev/mtd0 $ kobs-ng init -x /opt/images/SPL --search_exponent=1 -v $ flash_eraseall /dev/mtd1 $ nandwrite -p /dev/mtd1 /opt/images/u-boot.img Select one of: i.MX6Q / i.MX6D $ nandwrite -p /dev/mtd1 -s 0x1e0000 /opt/images/imx6q-var-som.dtb i.MX6DualLite / i.MX6 Solo $ nandwrite -p /dev/mtd1 -s 0x1e0000 /opt/images/imx6dl-var-som.dtb i.MX6Solo VAR-SOM-SOLO $ nandwrite -p /dev/mtd1 -s 0x1e0000 /opt/images/imx6dl-var-som-solo.dtb Linux kernel: $ flash_eraseall /dev/mtd2 $ nandwrite -p /dev/mtd2 /opt/images/uImage UBIFS: $ flash_eraseall /dev/mtd3 $ ubiformat /dev/mtd3 -f /opt/images/fsl-image-qt5-varsomimx6.ubi -s 2048 -O 2048 Not available in this release. | |
uImage | ||
u-boot | SPL |
|
QT5/Embedded environment variables
The QT5/Embedded require environment variables to run correctly. You need to have them avilable on the target. For example /etc/profile.d/tslib.sh can be edited.
export TSLIB_TSDEVICE=/dev/input/touchscreen0
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=/etc/ts.conf
export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event0
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=480
export QT_QPA_EGLFS_PHYSICAL_WIDTH=800
export QT_QPA_EGLFS_HEIGHT=480
export QT_QPA_EGLFS_WIDTH=800
export QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=1
export QT_QPA_EGLFS_DEPTH=24
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:size=800x480:mmSize=800x480
UBIFS
By default we create ubifs image for 0.5GB nand size.
You can change the size by editing ~/var-som-mx6-daisy-v7/sources/meta-variscite/conf/machine/varsomimx6.conf
and change
"include conf/machine/include/var-512mb-ubi.inc" into one of:
- "include conf/machine/include/var-512mb-ubi.inc"
- "include conf/machine/include/var-1gb-ubi.inc"
- "include conf/machine/include/var-2gb-ubi.inc"
- "include conf/machine/include/var-4gb-ubi.inc"
Anther option is to create the ubifs image manualy. 4GB nand example:
$ cd ~/var-som-mx6-daisy-v7 $ sudo mkdir rootfs $ sudo tar xvf build_var/tmp/deploy/images/varsomimx6/fsl-image-qt5-varsomimx6.tar.bz2 -C rootfs/ $ sudo mkfs.ubifs -r rootfs/ -o fsl-image-qt5-varsomimx6q4.ubifs -m 4096 -e 504KiB -c 7835 $ ubinize -o fsl-image-qt5-varsomimx6q4.ubi -m 4096 -p 512KiB -s 4096 -O 4096 ubinize.cfg
$ cat ubinize.cfg [ubifs] mode=ubi image=fsl-image-qt5-varsomimx6q4.ubifs vol_id=0 vol_type=dynamic vol_name=rootfs vol_flags=autoresize
Next steps
In sections 1-6 we explained how to build Yocto for VAR-SOM-MX6. We explained the results for nand (UBI) and for sd-card.
At this point you should have a bootable sd-card with UBI images on it. You should be able to boot from the sd-card using the boot select button and flash the nand.
Next steps:
- Build and deploy the compiler and tools.
- Fetch u-boot and compile it out of Yocto tools.
- Fetch Linux kernel and compile it out of Yocto tools.
Toolchain installation for out of Yocto builds
Build the toolchain by:
$ bitbake meta-ide-support $ bitbake meta-toolchain
The output will be located at tmp/deploy/sdk/. On a 64 bit Ubuntu you will get:
sdk/poky-eglibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.6.1.sh.
Install the tools by running:
$ tmp/deploy/sdk/poky-eglibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.6.1.sh
Reply to all defaults 'y'
The toolchain name depend on your build machine and may change.
Build U-Boot out of Yocto tree
This is a single u-boot image that supports all VAR-SOM-MX6 SOM's.
Obtain sources:
$ cd ~/var-som-mx6-daisy-v6 $ git clone https://github.com/varigit/uboot-imx $ cd uboot-imx/ $ git checkout -b imx_v2013.10_beta_var4 remotes/origin/imx_v2013.10_beta_var4
- follow above procedure for installing the toolchain
Build u-boot:
$ export PATH=/opt/poky/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:$PATH clean tree: $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mrproper Choose build for SD-Card or NAND Flash: $ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mx6var_som_sd_config or $ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mx6var_som_nand_config Build U-BOOT: $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi-
Flash u-boot to the sd-card:
$ sudo dd if=SPL of=/dev/sdxxx bs=1K seek=1; sync $ sudo dd if=u-boot.img of=/dev/sdxxx bs=1K seek=69; sync
In case of UBI copy it to the sd-card:
$ sudo cp SPL /media/rootfs/opt/images $ sudo cp u-boot.img /media/rootfs/opt/images
Eject SD-Card gracefully from host machine
Build Linux out of Yocto tree
Get sources:
$ cd ~/var-som-mx6-daisy-v6/ $ git clone https://github.com/varigit/linux-2.6-imx.git $ cd linux-2.6-imx/ $ git checkout -b imx_3.10.31_1.1.0_beta2_var1 remotes/origin/imx_3.10.31_1.1.0_beta2_var1
Build the Linux kernel:
$ export PATH=/opt/poky/1.6.1/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi:$PATH $ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mrproper $ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx_v7_var_defconfig $ make -j6 LOADADDR=0x10008000 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- uImage $ make -j6 LOADADDR=0x10008000 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules Build the device tree for Dualite/Solo $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6dl-var-som.dtb Build the device tree for Quad/Dual $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6q-var-som.dtb
Copy the uImage and device tree to the sd-card boot partition or to the opt/image in order to be flashed to the nand. Copy modules to the sd-card
$ sudo make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules_install INSTALL_MOD_PATH=/media/rootfs/