VAR-SOM-MX6 Ubuntu Build Ubuntu Alip NFS
Under construction!!! Under construction!!! Under construction!!!
Overview
Ubuntu Linaro Alip is pre built file system. For more information Ubuntu based Rootfs provided by Linaro. Variscite used linaro-vivid-alip-20151215-714 image added Vivante Graphic acceleration and compile the GStreamer with i.MX6 support. The steps require to build an NFS development system:
- Install the toolchain.
- Extract the file system
- Build Linux kernel, modules and all relevant device tree.
- Deploy The Linux modules into the filesystem.
- Build U-boot
- Build the Wi-Fi modules and deploy them into the filesystem.
- Boot the target with the New kernel and device tree while using the fileystem.
Installing required packages
On your Ubuntu building machine:
sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm lib32ncurses5-dev
Ubuntu Alip build was tested with Ubuntu 14.04 LTS only! We know that Ubuntu 12.04 have some problems with it.
Tool Installation
The tool-chain are available for Download from: Linaro-Toolchain Install the tools:
$ sudo tar xvf ~/Downloads/gcc-linaro-arm-linux-gnueabihf-4.9-2014.05_linux.tar.xz -C /opt $ export PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.05_linux/bin/:$PATH
TFTP and NFS setup
Please follow the link to the WIKI TFTP & NFS and set-up TFTP/NFS servers on your host machine.
File System
Ubuntu Linaro Alip file system available for Download from: Alip-Filesystem
$ mkdir ~/var-som-mx6-alip $ cd ~/var-som-mx6-alip $ sudo mkdir rootfs $ cd rootfs $ sudo tar xvf ~/Downloads/linaro-alip-20151215-v1.tar.bz2
Build Linux
Get sources:
$ cd ~/var-som-mx6-alip $ git clone --branch imx_3.14.38_6qp_ga_var01 --depth 50 https://github.com/varigit/linux-2.6-imx.git $ cd linux-2.6-imx/
Build the Linux kernel and device tree:
$ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mrproper $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- imx_v7_var_ubuntu_defconfig $ make -j6 LOADADDR=0x10008000 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- uImage $ make -j6 LOADADDR=0x10008000 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules $ make -j6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- dtbs
Copy uImage and device tree to the tftpboot directory. Install the modules to the root file system:
$ sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=../rootfs/ $ cp arch/arm/boot/uImage /tftpboot $ cp arch/arm/boot/dts/*var*.dtb /tftpboot
Build U-Boot
This is a single u-boot image that supports all VAR-SOM-MX6 SOM's.
Obtain sources:
$ cd ~/var-som-mx6-alip $ git clone --branch imx_v2013.10_var4 --depth 50 https://github.com/varigit/uboot-imx $ cd uboot-imx/
Build u-boot: clean tree: $ make -j6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mrproper Choose build for SD-Card or NAND Flash: $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- mx6var_som_sd_config or $ make ARCH=arm CROSS_COMPILE=aarm-linux-gnueabihf- mx6var_som_nand_config Build U-BOOT: $ make -j6 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
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.
Refer to NAND Flash Burning for a complete description.
Build the Wi-Fi drivers
Based on: WL18xx System Build Scripts
Clone the build git
$ cd ~/var-som-mx6-alip $ git clone git://git.ti.com/wilink8-wlan/build-utilites.git $ cd build-utilites
Setup the environment
$ cp setup-env setup-env.sample
Edit setup-env and set:
export TOOLCHAIN_PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.05_linux/bin export ROOTFS=/home/<me>/var-som-mx6-alip/rootfs export KERNEL_PATH=/home/<me>/var-som-mx6-alip/linux-2.6-imx/
Change "<me>" to your true name.
Complete file example:
# \\\// # -(o o)- #========================oOO==(_)==OOo======================= # This file contains the exports needed for automating the # build process of WLAN components. # Place this file in the same directory with wl18xx_build.sh # build scripts. No need to run 'source setup-env', the build # scripts will perfom it internaly. #=========================================================== # User specific environment settings - use full PATH # if DEFAULT toolchain path is set toolchain will be downloaded to ./toolchain. export TOOLCHAIN_PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.05_linux/bin # if DEFAULT path to root filesystem is set ./fs folder will be used. export ROOTFS=/home/variscite/var-som-mx6-alip/rootfs #if DEFAULT kernel path is set - kernel will be downloaded (set branch to match kernel version) export KERNEL_PATH=export KERNEL_PATH=/home/variscite/var-som-mx6-alip/linux-2.6-imx/ # if KERNEL_VARIANT below is set the build script will look for kernel specific # patches under the patches directory: # - patches under the pathces/driver_patches/$KERNEL_VARIANT directory would be # applied during "modules" build. # - patches under the patches/kernel_patches/$/$KERNEL_VARIANT directory would # be applied to the kernel pointed by KERNEL_PATH in case the "patch_kernel" # command is used. # Note: the kernel is not built automatically after the patches are applied export KERNEL_VARIANT=DEFAULT export CROSS_COMPILE=arm-linux-gnueabihf- export ARCH=arm [ "$TOOLCHAIN_PATH" != "DEFAULT" ] && export PATH=$TOOLCHAIN_PATH:$PATH
Download the source
Don't use the "sudo" version of the script for this step or you'll end up with directories owned by root instead of user.
$ ./build_wl18xx.sh init
Checkout, Build, and Install
$ ./sudo_build_wl18xx.sh update R8.6
This build will fail. Please move to the next step apply the patch's and run the build with the commands described below.
Patch for Bugfix & Build
Patch:
$ sed -i 's/__TIMESTAMP__/"June_22_2015"/g' src/driver/drivers/net/wireless/ti/wlcore/Makefile $ sed -i 's/__TIMESTAMP__/"June_22_2015"/g' src/driver/drivers/net/wireless/ti/wlcore/release_version.h $ sed -i 's/\/\* time sync \*\//return hw; \/\* time sync \*\//g' src/driver/drivers/net/wireless/ti/wlcore/main.c
Build:
$ ./sudo_build_wl18xx.sh modules $ ./sudo_build_wl18xx.sh firmware $ ./sudo_build_wl18xx.sh bt-firmware
The build above will deploy the Wi-Fi modules and the relevant firmware directly into the the rootfs. Any other packages is not required because we are using the Ubuntu supplied one.
For rebuild just do the last 3 build steps.
Device Tree Information
The table below summarize all available Device Tree.
Device Tree Name |
SOM type |
Carrier Board type |
LCD Type |
Evaluation Kit name |
---|---|---|---|---|
imx6q-var-som.dtb | VAR-SOM-MX6_V2 (Quad / Dual) | VAR-MX6CustomBoard | Capacitive/Resistive touch | VAR-DVK-MX6_V2-PRO VAR-STK-MX6_V2 |
imx6q-var-som-vsc.dtb | VAR-SOM-MX6_V2 (Quad / Dual) | VAR-SOLOCustomBoard | Capacitive LVDS touch | N/A |
imx6dl-var-som.dtb | VAR-SOM-MX6_V2 (DualLite/ Solo) | VAR-MX6CustomBoard | Capacitive/Resistive touch | N/A |
imx6dl-var-som-solo-vsc.dtb | VAR-SOM-SOLO / VAR-SOM-DUAL | VAR-SOLOCustomBoard | Capacitive LVDS touch | VAR-DVK-SOLO/DUAL VAR-STK-SOLO/DUAL |
imx6dl-var-som-solo.dtb | VAR-SOM-SOLO / VAR-SOM-DUAL | VAR-MX6CustomBoard | Capacitive/Resistive touch | N/A |
imx6q-var-dart.dtb | VAR-SOM-SOLO / VAR-SOM-DUAL | VAR-DT6CustomBoard | Capacitive LVDS touch | VAR-STK-DT6.VAR-DVK-DT6 |
Boot your target
Export your new rootfs directory:
$ sudo gedit /etc/exports Add a line: /home/<my name >/var-som-mx6-alip/rootfs *(rw,sync,no_root_squash,no_all_squash,no_subtree_check) and restart the server: $ sudo /etc/init.d/nfs-kernel-server restart
Make sure you have A SOM with U-Boot installed on it. You can use the nand recovery utility to install Yocto on it. Boot your target and stop at U-Boot
Select the right device tree (from the table above). $ setenv fdt_file imx6q-var-som.dtb $ setenv serverip <server IP Address> $ setenv uimage uImage $ setenv nfsroot /home/<me>/var-som-mx6-alip/rootfs $ setenv console ttymxc0 Add rw to root=/dev/nfs $ editenv netargs <== root=/dev/nfs rw $ setenv bootcmd 'run netboot' $ saveenv
Flash images to NAND
Please refer to VAR-SOM-MX6 NAND Flash burning