VAR-SOM-MX6 Yocto GS R5: Difference between revisions
No edit summary |
|||
(55 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{PageHeader|VAR-SOM-MX6 - Yocto fsl-L3.10.17_1.0.0 Dora R5 Beta1}} | {{PageHeader|VAR-SOM-MX6 - Yocto fsl-L3.10.17_1.0.0 Dora R5 Beta1}} {{DocImage|category1=VAR-SOM-MX6|category2=Yocto}} __toc__ | ||
{{DocImage|category1=VAR-SOM-MX6|category2=Yocto}} | |||
__toc__ | |||
= Introduction | = Introduction = | ||
= Supported hardware and features | * This Yocto Dora release is based on Freescale fsl-L3.10.17_1.0.0GA release.<br/> | ||
* 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 = | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! scope="col" | Feature<br> | ! scope="col" | Feature<br/> | ||
! scope="col" | Description<br> | ! scope="col" | Description<br/> | ||
|- | |- | ||
| Board support<br> | | Board support<br/> | ||
| [http://www.variscite.com/products/evaluation-kits/var-dvk-mx6 VAR-DVK-MX6],[http://www.variscite.com/products/system-on-module-som/cortex-a9/var-som-mx6-cpu-freescale-imx6 VAR-SOM-MX6]<br> | | [http://www.variscite.com/products/evaluation-kits/var-dvk-mx6 VAR-DVK-MX6],[http://www.variscite.com/products/system-on-module-som/cortex-a9/var-som-mx6-cpu-freescale-imx6 VAR-SOM-MX6]<br/> | ||
|- | |- | ||
| CPU<br> | | CPU<br/> | ||
| | | | ||
[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q&fr=g i.MX6 Quad]<br>[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6D&fr=g i.MX6 Dual]<br>[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6DL&fr=g i.MX6 Dual lite]<br>[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6S&nodeId=018rH3ZrDRB24A i.MX6 Solo] | [http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q&fr=g i.MX6 Quad]<br/>[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6D&fr=g i.MX6 Dual]<br/>[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6DL&fr=g i.MX6 Dual lite]<br/>[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6S&nodeId=018rH3ZrDRB24A i.MX6 Solo] | ||
|- | |- | ||
| Software platform<br> | | Software platform<br/> | ||
| | | | ||
[https://wiki.yoctoproject.org/wiki/Releases Yocto Dora release.]<br>[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q&fpsp=1&tab=Design_Tools_Tab Freescale release version 4.1]<br>[https://github.com/Freescale Meta freescale community release for Dora] | [https://wiki.yoctoproject.org/wiki/Releases Yocto Dora release.]<br/>[http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=i.MX6Q&fpsp=1&tab=Design_Tools_Tab Freescale release version 4.1]<br/>[https://github.com/Freescale Meta freescale community release for Dora] | ||
|- | |- | ||
| Nand Recovery | | Nand Recovery | ||
| | | | ||
|- | |- | ||
| NAND Flash size support<br> | | NAND Flash size support<br/> | ||
| 0.5,1.0,2.0,4.0 GB<br> | | 0.5,1.0,2.0,4.0 GB<br/> | ||
|- | |- | ||
| DDR size support configuration<br> | | DDR size support configuration<br/> | ||
| Solo:0.5,1.0 GB DualLite: 1.0GB Dual: 0.5,1.0GB Quad: 1.0,2.0 GB<br> | | Solo:0.5,1.0 GB DualLite: 1.0GB Dual: 0.5,1.0GB Quad: 1.0,2.0 GB<br/> | ||
|- | |- | ||
| SD-Card<br> | | SD-Card<br/> | ||
| +<br> | | +<br/> | ||
|- | |- | ||
| | | Ethernet<br/> | ||
| 10/100/1000 Mbps Ethernet<br> | | 10/100/1000 Mbps Ethernet<br/> | ||
|- | |- | ||
| | | WLAN <br/> | ||
| 802.11 b/g/n<br> | | 802.11 b/g/n<br/> | ||
|- | |- | ||
| Bluetooth<br> | | Bluetooth<br/> | ||
| 4.0<br> | | 4.0<br/> | ||
|- | |- | ||
| CAN bus<br> | | CAN bus<br/> | ||
| +<br> | | +<br/> | ||
|- | |- | ||
| I2C<br> | | I2C<br/> | ||
| +<br> | | +<br/> | ||
|- | |- | ||
| SPI<br> | | SPI<br/> | ||
| +<br> | | +<br/> | ||
|- | |- | ||
| USB host<br> | | USB host<br/> | ||
| +<br> | | +<br/> | ||
|- | |- | ||
| USB OTG<br> | | USB OTG<br/> | ||
| Device only. Host will be supported on next | | Device only. Host will be supported on next release<br/> | ||
|- | |- | ||
| Uarts<br> | | Uarts<br/> | ||
| x3, up to 3.6 Mbps. Minicom avilable to use with the port<br> | | x3, up to 3.6 Mbps. Minicom avilable to use with the port<br/> | ||
|- | |- | ||
| RTC<br> | | RTC<br/> | ||
| +<br> | | +<br/> | ||
|- | |- | ||
| Display | | Display | ||
| HDMI 720P,1080P LVDS0 (On board LVDS to RGB bridge, EVK supports 800x480 resolution) LVDS1 external display | | HDMI 720P,1080P LVDS0 (On board LVDS to RGB bridge, EVK supports 800x480 resolution) LVDS1 external display | ||
|- | |- | ||
| Audio | | Audio | ||
| Line IN/ Line out | | Line IN/ Line out | ||
|- | |- | ||
| Camera | | Camera | ||
| ov5640 camera sensor. CB402 board can be | | ov5640 camera sensor. CB402 board can be purchased separately | ||
|- | |- | ||
| SATA | | SATA | ||
| + | | + | ||
|} | |} | ||
Variscite Yocto Dora release 2 for Freescale i.MX6 version 4.1. | Variscite Yocto Dora release 2 for Freescale i.MX6 version 4.1. | ||
= Installing required packages<br/> = | |||
Follow the link below and install all the required packages on your machine. | |||
[http://www.yoctoproject.org/docs/latest/yocto-project-qs/yocto-project-qs.html www.yoctoproject.org/docs/latest/yocto-project-qs/yocto-project-qs.html] | |||
For example, if your building machine is an Ubuntu machine: | |||
<pre>sudo apt-get install gawk wget git-core diffstat unzip texinfo build-essential chrpath libsdl1.2-dev xterm</pre> | |||
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: | |||
Install the `repo` utility: | |||
<pre>$ mkdir ~/bin (this step may not be needed if the bin folder already exists) | <pre>$ 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 | $ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo | ||
$ chmod a+x ~/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 | Add the following line to the .bashrc file to ensure that the ~/bin folder is in your PATH variable | ||
$ export PATH=~/bin:$PATH</pre> | $ export PATH=~/bin:$PATH</pre> | ||
{{note| NOTE:<br>we uploaded as a reference the repo we used.|info}} | {{note| NOTE:<br>we uploaded as a reference the repo we used.|info}} | ||
Clone Yocto Dora from github. | |||
<pre>$ cd ~ | <pre>$ cd ~ | ||
$ mkdir var-som-mx6-dora-v5 | $ mkdir var-som-mx6-dora-v5 | ||
Line 121: | Line 115: | ||
$ repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.10.17-1.0.0_ga | $ repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.10.17-1.0.0_ga | ||
$ repo sync | $ repo sync | ||
</pre> | </pre> | ||
Download var_yocto_v5b1.tar.bz2 from Variscite's FTP. | Download var_yocto_v5b1.tar.bz2 from Variscite's FTP. | ||
<pre>$ tar xvf var_yocto_v5b1.tar.bz2 | <pre>$ tar xvf var_yocto_v5b1.tar.bz2 | ||
$ variscite/install</pre> | $ variscite/install</pre> | ||
{{note|Comment:<br/>This method will | {{note|Comment:<br/>This method will preserve the git repositories. It will enable you to track Variscite's changes, and your own.|info}} | ||
= Setup and Customize your Yocto build | = Setup and Customize your Yocto build = | ||
Setup the environment and use build_var folder | Setup the environment and use build_var folder | ||
<pre>$ . ./setup-environment build_var | <pre>$ . ./setup-environment build_var | ||
</pre> | </pre> | ||
{{note|Comment:<br/>If you close your terminal and | {{note|Comment:<br/>If you close your terminal and wishto build Yocto again, 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|info}} | ||
== local.conf customizations<br/> == | |||
Edit you local.conf file: | Edit you local.conf file: | ||
<pre>$ gedit conf/local.conf | <pre>$ gedit conf/local.conf | ||
</pre> | </pre> | ||
Change your SOM version, parallel build and download directory: | Change your SOM version, parallel build and download directory: | ||
= Build your image | === Select VAR-SOM_MX6 SOM version<br/> === | ||
<pre>$ bitbake var-image-x11 </pre> | One of:<br/>MACHINE ??= 'varsomimx6q' - VAR_SOM_MX6 Quad with 1GB DDR<br/>MACHINE ??= 'varsomimx6q2' - VAR_SOM_MX6 Quad 1.2MHz with 2GB DDR<br/>MACHINE ??= 'varsomimx6dl' - VAR_SOM_MX6 Dual Lite with 1GB DDR <br/>MACHINE ??= 'varsomimx6solo' - VAR_SOM_MX6 Solo with 1GB DDR or 0.5 GB DDR | ||
=== Parallel build<br/> === | |||
Set the build parameters to fully utilize your host machine BB_NUMBER_THREADS = '4'<br/>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 = | |||
<pre>$ bitbake var-image-x11 </pre> | |||
Other image build options: | Other image build options: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! scope="col" | image name <br> | ! scope="col" | image name<br/> | ||
! scope="col" | description<br> | ! scope="col" | description<br/> | ||
|- | |- | ||
| core-image-base<br> | | core-image-base<br/> | ||
| A console-only image that fully supports the target device hardware.<br> | | A console-only image that fully supports the target device hardware.<br/> | ||
|- | |- | ||
| | | var-image-test<br/> | ||
| | | Image contains core-image-base plus Freescale test applications and multimedia components.<br/> | ||
|- | |- | ||
| | | var-image-x11<br/> | ||
| | | Image contains core-image-sato with Freescale test applications and multimedia with hardware accelerated X11<br/> | ||
|} | |} | ||
The resulted images are in tmp/deploy/images/ | |||
The resulted images are locaated in tmp/deploy/images/varsomimx6q.<br/>Looking at tmp/deploy/images/varsomimx6q you will find 6 main files that are linked to the actual file<br/> | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! scope="col" | Image Name<br> | ! scope="col" | Image Name<br/> | ||
! scope="col" | How to use<br> | ! scope="col" | How to use<br/> | ||
|- | |- | ||
| | | var-image-x11-varsomimx6q.ext3<br/> | ||
| Not in Use<br> | | Not in Use<br/> | ||
|- | |- | ||
| | | var-image-x11-varsomimx6q.sdcard | ||
| | | | ||
Flash into SD-card and use boot select to boot from. | Flash into SD-card and use boot select to boot from. | ||
<pre>$ sudo dd if=tmp/deploy/images/ | <pre>$ sudo dd if=tmp/deploy/images/varsomimx6q/var-image-x11-varsomimx6q.sdcard of=/dev/devxxx bs=1024k | ||
</pre> | </pre> | ||
devxxx = mmcblk0 or sdX. Do dmesg after you insert an SD-Card into your build system to figure out the device name<br> | Build u-boot out of tree for mmc as explained below and | ||
<pre>$ sudo dd if=u-boot.imx of=/dev/devxxx bs=512 seek=2; sync | |||
</pre> | |||
devxxx = mmcblk0 or sdX. Do dmesg after you insert an SD-Card into your build system to figure out the device name<br/>{{note|Comment:<br/>Use "$ sudo gparted /dev/devxxx" | |||
*Lable the second partition and call it "rootfs". | |||
*Increase the second partition to include all avilable sd-card space.|info}} | |||
|- | |- | ||
| | | var-image-x11-varsomimx6q.tar.bz2 | ||
| | | | ||
Used to create an NFS root file system on the host. | Used to create an NFS root file system on the host. | ||
<pre>$ sudo mkdir ../rootfs | <pre>$ sudo mkdir ../rootfs | ||
$ sudo rm -rf ../rootfs/* | $ sudo rm -rf ../rootfs/* | ||
$ sudo tar xvf tmp/deploy/images/varsomimx6q/var-image-x11-varsomimx6q.tar.bz2 -C ../rootfs | |||
</pre> | </pre> | ||
See apendix for setting an NFS server | 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.<br/>Coping files (mount the sd-card created above first): | |||
<pre>$ 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/uImage-imx6dl-var-som.dtb /media/rootfs/opt/images/imx6sl-var-som.dtb | |||
$ sudo cp tmp/deploy/images/varsomimx6q/uImage-imx6sl-var-som.dtb /media/rootfs/opt/images/imx6dl-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 | |||
</pre> | |||
Flashing on target: | |||
<pre>$ 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 | |||
</pre> | |||
|- | |||
| uImage | |||
| | |||
|- | |||
| u-boot.imx | |||
| | | | ||
|} | |} | ||
= | = Next steps <br/> = | ||
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 = | |||
Build the toolchain by: | |||
<pre>$ bitbake meta-ide-support | |||
$ bitbake meta-toolchain | |||
</pre> | |||
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: | |||
<pre>$ tmp/deploy/sdk/poky-eglibc-x86_64-meta-toolchain-cortexa9hf-vfp-neon-toolchain-1.5.1.sh</pre> | |||
The toolchain name depend on your build machine and may change. | |||
= Build U-Boot out of Yocto tree<br/> = | |||
Get sources: | |||
<pre>$ cd ~/var-som-mx6-dora-v5 | |||
$ git clone git://github.com/varigit/uboot-imx | |||
$ cd uboot-imx/ | |||
$ git checkout -b imx_v2013.04_3.10.17_1.0.0_beta_var1 remotes/origin/imx_v2013.04_3.10.17_1.0.0_beta_var1 | |||
</pre> | |||
Build u-boot: | |||
<pre>$ 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/arm-poky-linux-gnueabi:$PATH | |||
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mrproper | |||
$ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- <Your config file from the table below> | |||
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- | |||
</pre> | |||
Flash u-boot to the sd-card: | |||
<pre>$ sudo dd if=u-boot.imx of=/dev/sdxxx bs=512 seek=2; sync | |||
</pre> | |||
In case of UBI copy it to the sd-card: | |||
<pre>$ sudo cp u-boot.imx /media/rootfs.opt/images | |||
</pre> | |||
Un mount the sdcard. | |||
<pre>$ sudo umount /dev/sdxxx | |||
</pre> | |||
{{note|Comment:<br/>Replace /dev/sdxxx with the actual device name. Use dmesq to find the right one.|info}} | |||
== Avilable u-boot configurations == | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! scope="col" | Definition<br> | ! scope="col" | Definition<br/> | ||
! scope="col" | Built for<br> | ! scope="col" | Built for<br/> | ||
|- | |- | ||
| | | vsmq_10m10g_sd_config<br/> | ||
| VAR-SOM-MXQ/D, boot from MMC<br> | | VAR-SOM-MXQ/D 1GHz CPU 1GB DDR, boot from MMC<br/> | ||
|- | |- | ||
| | | vsmq_12m20g_sd_config<br/> | ||
| VAR-SOM- | | VAR-SOM-MXQ/D 1.2GHz CPU 2GB DDR, boot from MMC<br/> | ||
|- | |- | ||
| | | vsmd_10m05g_sd_config<br/> | ||
| VAR-SOM- | | VAR-SOM-MXD 1GHz CPU 0.5GB DDR, boot from MMC<br/> | ||
|- | |- | ||
| | | vsmdl_10m10g_sd_config<br/> | ||
| VAR-SOM- | | VAR-SOM-MXDL, 1GHz CPU 1.0 GB DDR boot from MMC<br/> | ||
|- | |- | ||
| | | vsms_10m10g_sd_config<br/> | ||
| VAR-SOM-MXSolo, boot from | | VAR-SOM-MXSolo, 1GHz CPU 0.5 or 1.0 GB DDR boot from MMC<br/> | ||
|- | |- | ||
| | | vsmq_10m10g_nand_config<br/> | ||
| VAR-SOM-MXDL, boot from NAND<br> | | VAR-SOM-MXQ/D 1GHz CPU 1GB DDR, boot from NAND<br/> | ||
|- | |||
| vsmq_12m20g_nand_config<br/> | |||
| VAR-SOM-MXQ/D 1.2GHz CPU 2GB DDR, boot from NAND<br/> | |||
|- | |||
| vsmd_10m05g_nand_som<br/> | |||
| VAR-SOM-MXD 1GHz CPU 0.5GB DDR, boot from NAND<br/> | |||
|- | |||
| vsmdl_10m10g_nand_config<br/> | |||
| VAR-SOM-MXDL,1GHz CPU 1.0 GB DDR boot from NAND<br/> | |||
|- | |||
| vsms_10m10g_nand_config<br/> | |||
| VAR-SOM-MXSolo, 1GHz CPU 0.5 or 1.0 GB DDR boot from NAND<br/> | |||
|} | |} | ||
= Build Linux out of Yocto tree<br/> = | |||
Get sources: | |||
<pre>$ cd ~/var-som-mx6-dora-v5/ | |||
$ git clone git://github.com/varigit/linux-2.6-imx.git | |||
$ cd linux-2.6-imx/ | |||
$ git checkout -b imx_3.10.17_1.0.0_ga_beta_var2 remotes/origin/imx_3.10.17_1.0.0_ga_beta_var2 | |||
= Build Linux out of Yocto tree<br> | |||
<pre>$ | |||
$ | |||
</pre> | </pre> | ||
Build the Linux kernel: | |||
<pre>$ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- | <pre>$ 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/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 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- uImage | |||
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules | $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules | ||
Build the device tree | |||
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6dl-var-som.dtb | |||
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6q-var-som.dtb | |||
</pre> | $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6q-var-som-ldo.dtb | ||
$ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6sl-var-som.dtb | |||
<pre>$ sudo make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules_install INSTALL_MOD_PATH= | </pre> | ||
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 | |||
<pre>$ sudo make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules_install INSTALL_MOD_PATH=/media/rootfs/ | |||
</pre> | </pre> | ||
= Useful Bitbake commands = | |||
= Useful Bitbake commands | |||
[http://elinux.org/Bitbake_Cheat_Sheet Bitbake Cheat Sheet] | [http://elinux.org/Bitbake_Cheat_Sheet Bitbake Cheat Sheet] | ||
[https://community.freescale.com/docs/DOC-94953 Useful bitbake commands] | [https://community.freescale.com/docs/DOC-94953 Useful bitbake commands] | ||
[https://community.freescale.com/docs/DOC-94874 i.MX Yocto Project: ltib versus bitbake] | [https://community.freescale.com/docs/DOC-94874 i.MX Yocto Project: ltib versus bitbake] | ||
Latest revision as of 09:19, 23 July 2014
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 preserve the git repositories. It will enable you to track Variscite's changes, and your own.
Setup and Customize your Yocto build
Setup the environment and use build_var folder
$ . ./setup-environment build_var
If you close your terminal and wishto build Yocto again, 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' - VAR_SOM_MX6 Quad with 1GB DDR
MACHINE ??= 'varsomimx6q2' - VAR_SOM_MX6 Quad 1.2MHz with 2GB DDR
MACHINE ??= 'varsomimx6dl' - VAR_SOM_MX6 Dual Lite with 1GB DDR
MACHINE ??= 'varsomimx6solo' - VAR_SOM_MX6 Solo with 1GB DDR or 0.5 GB DDR
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 |
Image contains core-image-base plus Freescale test applications and multimedia components. |
var-image-x11 |
Image contains core-image-sato with Freescale test applications and multimedia with hardware accelerated X11 |
The resulted images are locaated 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/uImage-imx6dl-var-som.dtb /media/rootfs/opt/images/imx6sl-var-som.dtb $ sudo cp tmp/deploy/images/varsomimx6q/uImage-imx6sl-var-som.dtb /media/rootfs/opt/images/imx6dl-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 |
|
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
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 U-Boot out of Yocto tree
Get sources:
$ cd ~/var-som-mx6-dora-v5 $ git clone git://github.com/varigit/uboot-imx $ cd uboot-imx/ $ git checkout -b imx_v2013.04_3.10.17_1.0.0_beta_var1 remotes/origin/imx_v2013.04_3.10.17_1.0.0_beta_var1
Build u-boot:
$ 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/arm-poky-linux-gnueabi:$PATH $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- mrproper $ make ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- <Your config file from the table below> $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi-
Flash u-boot to the sd-card:
$ sudo dd if=u-boot.imx of=/dev/sdxxx bs=512 seek=2; sync
In case of UBI copy it to the sd-card:
$ sudo cp u-boot.imx /media/rootfs.opt/images
Un mount the sdcard.
$ sudo umount /dev/sdxxx
Replace /dev/sdxxx with the actual device name. Use dmesq to find the right one.
Avilable u-boot configurations
Definition |
Built for |
---|---|
vsmq_10m10g_sd_config |
VAR-SOM-MXQ/D 1GHz CPU 1GB DDR, boot from MMC |
vsmq_12m20g_sd_config |
VAR-SOM-MXQ/D 1.2GHz CPU 2GB DDR, boot from MMC |
vsmd_10m05g_sd_config |
VAR-SOM-MXD 1GHz CPU 0.5GB DDR, boot from MMC |
vsmdl_10m10g_sd_config |
VAR-SOM-MXDL, 1GHz CPU 1.0 GB DDR boot from MMC |
vsms_10m10g_sd_config |
VAR-SOM-MXSolo, 1GHz CPU 0.5 or 1.0 GB DDR boot from MMC |
vsmq_10m10g_nand_config |
VAR-SOM-MXQ/D 1GHz CPU 1GB DDR, boot from NAND |
vsmq_12m20g_nand_config |
VAR-SOM-MXQ/D 1.2GHz CPU 2GB DDR, boot from NAND |
vsmd_10m05g_nand_som |
VAR-SOM-MXD 1GHz CPU 0.5GB DDR, boot from NAND |
vsmdl_10m10g_nand_config |
VAR-SOM-MXDL,1GHz CPU 1.0 GB DDR boot from NAND |
vsms_10m10g_nand_config |
VAR-SOM-MXSolo, 1GHz CPU 0.5 or 1.0 GB DDR boot from NAND |
Build Linux out of Yocto tree
Get sources:
$ cd ~/var-som-mx6-dora-v5/ $ git clone git://github.com/varigit/linux-2.6-imx.git $ cd linux-2.6-imx/ $ git checkout -b imx_3.10.17_1.0.0_ga_beta_var2 remotes/origin/imx_3.10.17_1.0.0_ga_beta_var2
Build the Linux kernel:
$ 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/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 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- uImage $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- modules Build the device tree $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6dl-var-som.dtb $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6q-var-som.dtb $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6q-var-som-ldo.dtb $ make -j6 ARCH=arm CROSS_COMPILE=arm-poky-linux-gnueabi- imx6sl-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/