VAR-SOM-MX6 Yocto GS R5
Introduction
- This Yocto Dora release is based on Freescale fsl-L3.10.17_1.0.0GA release.
- Linux kernel: linux-imx_3.10.17_1.0.0_ga.
- Uboot: u-boot-imx-2013.04.
- Yocto Dora: Based on fsl-L3.10.17_1.0.0_iMX6qdls Freescale release (previous versions were based on the community release). Yocto Dora was re-structured as most of Variscite 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 Dora release. |
Nand Recovery | |
NAND Flash size support |
0.5,1.0,2.0,4.0 GB |
DDR size support configuration |
Solo:0.5,1.0 GB DualLite: 1.0GB Dual: 0.5,1.0GB Quad: 1.0,2.0 GB |
SD-Card |
+ |
Ethernet |
10/100/1000 Mbps Ethernet |
WLAN |
802.11 b/g/n |
Bluetooth |
4.0 |
CAN bus |
+ |
I2C |
+ |
SPI |
+ |
USB host |
+ |
USB OTG |
Device only. Host will be supported on next release |
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 Dora release 2 for Freescale i.MX6 version 4.1.
Installing required packages
Follow the link below and install all the 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
Variscite Yocto build is tested with Ubuntu 12.04 lts.
Get Yocto Dora 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
we uploaded as a reference the repo we used.
Clone Yocto Dora from github.
$ cd ~ $ mkdir var-som-mx6-dora-v5 $ cd var-som-mx6-dora-v5 $ 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.17-1.0.0_ga $ repo sync
Download var_yocto_v5b1.tar.bz2 from Variscite's FTP.
$ tar xvf var_yocto_v5b1.tar.bz2 $ variscite/install
This method will keep the git repositories. It will enable you to track Variscite and your changes.
Setup and Customize your Yocto build
Setup the environment and use build_var folder
$ . ./setup-environment build_var
If you close your terminal and want to build Yocto you should change directory to ~var-som-mx6-dora-v3 and run the above command again. build_var is your build directory and all bitbake commands should run from it
local.conf customizations
Edit you local.conf file:
$ gedit conf/local.conf
Change your SOM version, parallel build and download directory:
Select VAR-SOM_MX6 SOM version
One of:
MACHINE ??= 'varsomimx6q'
MACHINE ??= 'varsomimx6q2'
MACHINE ??= 'varsomimx6dl'
MACHINE ??= 'varsomimx6solo'
Parallel build
Set the build parameters to fully utilize your host machine 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.
Download directory.
Recommended to save download time and space. DL_DIR = "/home/<uname>/yocto_dl"
Build your image
$ bitbake var-image-x11
Other image build options:
image name |
description |
---|---|
core-image-base |
A console-only image that fully supports the target device hardware. |
var-image-test |
Builds contents core-image-base plus Freescale test applications and multimedia components. |
var-image-x11 |
Builds contents of core-image-sato with Freescale test applications and multimedia with hardware accelerated X11 |
The resulted images are in tmp/deploy/images/varsomimx6q.
Looking at tmp/deploy/images/varsomimx6q you will find 6 main files that are linked to the actual file
Image Name |
How to use |
---|---|
var-image-x11-varsomimx6q.ext3 |
Not in Use |
var-image-x11-varsomimx6q.sdcard |
Flash into SD-card and use boot select to boot from. $ sudo dd if=tmp/deploy/images/varsomimx6q/var-image-x11-varsomimx6q.sdcard of=/dev/devxxx bs=1024k Build u-boot out of tree for mmc as explained below and $ sudo dd if=u-boot.imx of=/dev/devxxx bs=512 seek=2; sync 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"
|
var-image-x11-varsomimx6q.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/varsomimx6q/var-image-x11-varsomimx6q.tar.bz2 -C ../rootfs See apendix for setting an NFS server |
var-image-x11-varsomimx6q.ubi |
Use the sdcard created above. Copy the file into it and use the folwing commands to flash them into nand. $ sudo mkdir /media/rootfs/opt/images $ sudo cp tmp/deploy/images/varsomimx6q/u-boot.imx /media/rootfs/opt/images $ sudo cp tmp/deploy/images/varsomimx6q/uImage /media/rootfs/opt/images $ sudo cp tmp/deploy/images/varsomimx6q/uImage-imx6q-var-som-ldo.dtb /media/rootfs/opt/images/imx6q-var-som-ldo.dtb $ sudo cp tmp/deploy/images/varsomimx6q/uImage-imx6q-var-som.dtb /media/rootfs/opt/images/imx6q-var-som.dtb $ sudo cp tmp/deploy/images/varsomimx6q/var-image-x11-varsomimx6q.ubi /media/rootfs/opt/images $ sudo umount /media/rootfs $ sudo umount /media/BOT_varsomi Flashing on target: $ flash_eraseall /dev/mtd0 $ kobs-ng init -x /opt/images/u-boot.imx --search_exponent=1 -v $ nandwrite -p /dev/mtd0 -s 0x1e0000 /opt/images/imx6q-var-som.dtb $ flash_eraseall /dev/mtd2 $ nandwrite -p /dev/mtd2 /opt/images/uImage $ flash_eraseall /dev/mtd3 $ ubiformat /dev/mtd3 -f /opt/images/var-image-x11-varsomimx6q.ubi -s 2048 -O 2048 |
uImage | |
u-boot.imx |
|
U-Boot options
By default all images are built for NAND-based U-Boot. If you want to change the setting to build SD-Card images, change the board file.
under ~/var_yocto/sources/meta-fsl-arm-extra/conf/machine you will find Variscite board definitions.
varsommx6q.conf
varsommx6solo.conf
varsommx6dual.conf
Edit you specifc board and change UBOOT_MACHINE according to the folowing table.
Definition |
Built for |
---|---|
mx6q_var_som_config |
VAR-SOM-MXQ/D 1GB DDR, boot from MMC |
mx6q_2g_var_som_config |
VAR-SOM-MXQ/D 2GB DDR, boot from MMC |
mx6d_0_5g_var_som |
VAR-SOM-MXD 0.5GB DDR, boot from MMC |
mx6dl_var_som_config |
VAR-SOM-MXDL, 1.0 GB DDR boot from MMC |
mx6solo_var_som_config |
VAR-SOM-MXSolo, 0.5 or 1.0 GB DDR boot from MMC |
mx6q_var_som_nand_config |
VAR-SOM-MXQ/D, boot from NAND |
mx6q_2g_var_som_nand_config |
VAR-SOM-MXQ/D 2GB DDR, boot from NAND |
mx6d_0_5g_var_nand_som |
VAR-SOM-MXD 0.5GB DDR, boot from NAND |
mx6dl_var_som_nand_config |
VAR-SOM-MXDL,1.0 GB DDR boot from NAND |
mx6solo_var_som_nand_config |
VAR-SOM-MXSolo, 0.5 or 1.0 GB DDR boot from NAND |
Toolchain
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:
poky-eglibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.5.sh.
Install the tools by running:
$ tmp/deploy/sdk/poky-eglibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.5.1.sh
The toolchain name depend on your build machine and may change.
Build Linux out of Yocto tree
Prepare the Linux kernel
$ bitbake -c cleansstate linux-variscite $ bitbake -c devshell linux-variscite
This will open a new shell at ...tmp/work/varsommx6q-poky-linux-gnueabi/linux-variscite/3.0.35-r0/git#
Copy the Linux kernel to a new folder
$ mkdir ~/var-som-mx6-dora-v4/linux-imx $ cp -a * ~/var-som-mx6-dora-v4/linux-imx $ exit
change dir into the new Linux kernel folder
$ cd ~/var-som-mx6-dora-v4/linux-imx
Set the tools path:
$ export PATH=/opt/poky/1.5.1/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/poky/1.5.1/sysroots/x86_64-pokysdk-linux/usr/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi:$PATH
Clean the Linux kernel:
$ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mrproper
Configure the Linux kernel:
$ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- var_som_mx6_defconfig
Change configuration if required:
$ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- menuconfig
Build the Linux kernel:
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- uImage $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules
The best practice of testing the new Linux kernel is using TFTP&NFS. Described in the apendix.
$ cp arch/arm/boot/uImage /tftpboot
Install the Linux modules into the rootfs file system
$ sudo make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules_install INSTALL_MOD_PATH=../rootfs
Build U-Boot out of Yocto tree
Prepare the U-Boot boot loader
$ bitbake -c cleansstate u-boot-variscite $ bitbake -c devshell u-boot-variscite
This will open a new shell at ...tmp/work/varsommx6q-poky-linux-gnueabi/linux-variscite/3.0.35-r0/git#
Copy the U-Boot boot loader to a new folder
$ mkdir ~/var-som-mx6-dora-v4/uboot-imx $ cp -a * ~/var-som-mx6-dora-v4/uboot-imx $ exit
change dir into the new u-boot folder
$ cd ~/var-som-mx6-dora-v4/uboot-imx
set the tools path if required
$ export PATH=/opt/poky/1.5.1/sysroots/x86_64-pokysdk-linux/usr/bin:/opt/poky/1.5.1/sysroots/x86_64-pokysdk-linux/usr/bin/cortexa9hf-vfp-neon-poky-linux-gnueabi:$PATH
Clean the U-Boot
$ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mrproper
Configure the U-Boot boot loader
$ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mx6q_var_som_nand_config
Build the U-Boot boot loader
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi-
Use our NAND-recovery sd-card to burn your u-boot to the NAND-Flash.
In case you build an sd-card version use
sudo dd if=u-boot.bin of=/dev/mmcblk0 bs=512 seek=2 skip=2 conv=fsync
Set the /dev/mmcblk0 according to you host sd-card device.
Creating a recovery SD-Card
we use Ubuntu 12.04 mount convention and a laptop media name. "/media/var_som_mx6_rf" and "/dev/mmcblk0" are widely used in this section.
You should be aware of this and change the media name to you host machine name.
Create a new folder:
$ mkdir ~/my_recovery_sd $ cd ~/my_recovery_sd
Insert Variscite recovery SD-Card version 19 into your host machine.
Copy the recovery folder from the SD-Card into your local folder:
$ sudo cp -a /media/var_mx6_<x>/opt/recovery ./ $ sudo cp /media/var_mx6_<x>/sbin/nand-recovery.sh ./
Update your local folder with the files you created during the Yocto build:
$ sudo cp ~/var-som-mx6-dora-v4/build_mx6q/tmp/deploy/images/varsommx6q/fsl-image-gui-varsommx6q.ubi recovery/Yocto/rootfs.ubi.img $ sudo cp ~/var-som-mx6-dora-v4/build_mx6q/tmp/deploy/images/varsommx6q/fsl-image-gui-varsommx6q.tar.bz2 recovery/Yocto/rootfs.tar.bz2 $ sudo cp ~/var-som-mx6-dora-v4/build_mx6q/tmp/deploy/images/varsommx6q/uImage recovery/Yocto/uImage $ sudo cp ~/var-som-mx6-dora-v4/build_mx6q/tmp/deploy/images/varsommx6q/u-boot.bin recovery/Yocto/u-boot.bin
Copy the SD-Card image from your Yocto build folder to the local recovery folder:
$ sudo cp ~/var-som-mx6-dora-v4/build_mx6q/tmp/deploy/images/varsommx6dual/fsl-image-gui-varsommx6dual.sdcard ./
Build U-Boot for SD-Card. Follow the "Build U-Boot out of Yocto tree" section.
Configure U-Boot with:
$ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mx6q_var_som_config
Build U-Boot:
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi-
Copy U-Boot from your U-Boot build folder to the local recovery folder:
$ cp u-boot.bin ~/my_recovery_sd
From ~/my_recovery_sd folder
Unmount your SD-Card.
Build the SD-Card. First flash the SD-Card image and U-Boot.
$ sudo dd if=fsl-image-gui-varsommx6q.sdcard of=/dev/mmcblk0 bs=1M $ sudo dd if=u-boot.bin of=/dev/mmcblk0 bs=512 seek=2 skip=2 conv=fsync $ sync
Set the SD-Card label:
$ Sudo apt-get install gparted $ sudo gparted Set the label to var_som_mx6_rf
Mount the SD-Card. You can simply remove it and inster it again to your host machine.
Copy all files from the recovery folder on your host machibe into the SD-Card:
$ sudo cp -a recovery/ /media/var_som_mx6_rf/opt/ $ sudo cp nand-recovery.sh /media/var_som_mx6_rf/sbin/ $ sudo rm /media/var_som_mx6_rf/var/lib/alsa/asound.state
If you want you can back up your new SD-Card image:
Un mount the SD-Card
$ sudo dd of=mx6qd-som-nand-recovery-sd.v19.img if=/dev/mmcblk0 bs=1M
I used "/dev/mmcblk0" as the SD-Card device name. You should replace it with your own SD-Card device name.