VAR-SOM-MX6 Ubuntu Flash Ubuntu Alip to eMMC

From Variscite Wiki
VAR-SOM-MX6 - Ubuntu Linaro Alip-20151215 Flash your target from bootable SDCARD


Note:
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.

Create Ubuntu Alip SDCARD is prerequisite step. Please make sure you run it and have a bootable Ubuntu SDCARD as described in the linked WIKI.

The steps require to build an Bootable SDCARD:

  1. Build Ubuntu Alip NFS. Build Ubuntu Alip NFS
  2. Created Ubuntu Alip bootable SDCARD. Create Ubuntu Alip SDCARD
  3. Copy required file to your SDCARD
  4. Boot your target from SDCARD
  5. Format and partition the target eMMC
  6. Install U-Boot and Linux Kernel images
  7. Install the root file system
  8. Deploy the kernel modules
  9. Deploy the Wi-Fi modules and firmware

Copy required file to your SDCARD

Note:
Make sure you built U-Boot for NAND.
Plug-In the bootable SDCARD
$ cd  ~/var-som-mx6-alip/
$ sudo mkdir -p /media/rootfs/opt/images/Alip
$ sudo cp uboot-imx/SPL /media/rootfs/opt/images/Alip
$ sudo cp uboot-imx/u-boot.img /media/rootfs/opt/images/Alip
$ sudo cp linux-2.6-imx/arch/arm/boot/uImage /media/rootfs/opt/images/Alip
$ sudo cp linux-2.6-imx/arch/arm/boot/dts/*var*.dtb /media/rootfs/opt/images/Alip
$ sudo cp ~/Downloads/linaro-alip-20151215-v1.tar.bz2  /media/rootfs/opt/images/Alip
$ sudo umount /media/BOT-VARSOM
$ sudo umount /media/rootfs

Boot your target from SDCARD

Booting your specific Developer Kit: Select the one you are using.

MX6CustomBoard

Booting your MX6CustomBoard system from SDCARD requires while powering up the system. See picture below.

Mx6 boot.jpg

To boot board with SD-Card, Follow the steps below:

  • Power-off the board.
  • Insert the SD card into the SD/MMC slot of the carrier board (DVK)
  • Push the middle button (Boot Select) and hold
  • Power-up board
  • Release the middle button (Boot Select) after system starts to boot.
  • The board will automatically boot into Linux from SD-Card

SoloCustomBoard

Booting your system requires switching the relevant dip-switch to "Boot from MMC". See picture below.

Solo boot.jpg

To boot board with SD-Card, Follow the steps below:

  • Power-off the board.
  • Insert the SD card into the SD/MMC slot of the carrier board (DVK)
  • Switch the relevant dip-switch to "Boot from MMC"
  • Power-up board
  • The board will automatically boot into Linux from SD-Card

DT6CustomBoard

Booting your system requires switching the relevant dip-switch to "Boot from SD-Card". See picture below.

Dart boot.jpg

To boot board with SD-Card, Follow the steps below:

  • Power-off the board.
  • Insert the SD card into the SD/MMC slot of the carrier board (DVK)
  • Switch the relevant dip-switch to "Boot from SD-Card"
  • Power-up board
  • The board will automatically boot into Linux from SD-Card

Automatic device Tree selection in U-Boot

Upon reset you will see the U-BOOT-SPL printouts. It will print the SOM configuration:

  • Boot Device MMC or NAND
  • Ram size
  • Production information

For example:

U-Boot SPL 2013.10-00108-ga2bb081 (Dec 06 2015 - 10:06:45)
i.MX6Q SOC P-STD DDR EEPROM configuration
Part number: VSM-MX6-C01
Assembly: AS15
Date of production: 2015 Nov 02
Ram size 1024
Boot Device : MMC1
Load image from RAW...

As explained in the above Build Results table we have 6 optional configurations.
We implemented in U-BOOT and automatic device tree selection, so when kernel boots, the u-boot will load the corresponding device tree according to On-SOM configuration. This is only valid for booting from SDCARD.
Based on the hardware we will set 2 environment variables in U-Boot.

  • fdt_file - Will be set to reflect SOM/CustomBoard pair.
  • screen_alternate=yes - Will be appended to all relevant bootargs in case that you are using capacitive display.


The table below list the possible options:

SOM type
Carrier Board type
LCD Type
Evaluation Kit name
Device Tree Name
Screen Alternate
VAR-SOM-MX6_V2 (Quad / Dual) VAR-MX6CustomBoard Capacitive touch VAR-DVK-MX6_V2-PRO
VAR-STK-MX6_V2
imx6q-var-som.dtb Yes
VAR-SOM-MX6_V2 (Quad / Dual) VAR-MX6CustomBoard Resistive touch VAR-DVK-MX6_V2-PRO
VAR-STK-MX6_V2
imx6q-var-som.dtb No
VAR-SOM-MX6_V2 (Quad / Dual) VAR-SOLOCustomBoard Capacitive LVDS touch N/A imx6q-var-som-vsc.dtb N/A
VAR-SOM-MX6_V2 (DualLite/ Solo) VAR-MX6CustomBoard Capacitive touch N/A imx6dl-var-som.dtb Yes
VAR-SOM-MX6_V2 (DualLite/ Solo) VAR-MX6CustomBoard Resistive touch N/A imx6dl-var-som.dtb No
VAR-SOM-SOLO / VAR-SOM-DUAL VAR-SOLOCustomBoard Capacitive LVDS touch VAR-DVK-SOLO/DUAL VAR-STK-SOLO/DUAL imx6dl-var-som-solo-vsc.dtb N/A
VAR-SOM-SOLO / VAR-SOM-DUAL VAR-MX6CustomBoard Capacitive/Resistive touch N/A imx6dl-var-som-solo.dtb N/A
VAR-SOM-SOLO / VAR-SOM-DUAL VAR-DT6CustomBoard Capacitive LVDS touch VAR-STK-DT6.VAR-DVK-DT6 imx6q-var-dart.dtb N/A

Disable Automatic Device Tree selection

To disable the automatic device tree selection in u-boot:

$ setenv var_auto_fdt_file=N
$ saveenv

Now you can set the device tree to meet your requirments. For example:

$ setenv fdt_file=imx6q-var-som.dtb
$ screen_alternate=yes
$ saveenv

Will select device tree that has i.MX6 Quad/Dual running on MX6CustomBoard.

Comment:
Make sure you don't set am illegal value like "imx6q-var-som.dtb" in a QUAD that is running on SoloCustomBoard.

Format and partition the target eMMC

Boot your target and:

$ fdisk /dev/mmcblk1                                                                                 
n
p
1
<enter for default>
<enter for default>
t
83
w
$ mkfs.ext4 /dev/mmcblk1p1 -Lrootfs

Install U-Boot and Linux Kernel images

Note:
Make sure you built U-Boot for NAND.
$ cd /opt/images/Alip
$ flash_erase /dev/mtd0 0 0
$ kobs-ng init -x SPL --search_exponent=1 -v > /dev/null
$ flash_erase /dev/mtd1 0 0
$ nandwrite -p /dev/mtd1 u-boot.img
$
$ flash_erase  /dev/mtd2 0 0
$ nandwrite -p /dev/mtd2 uImage
$ nandwrite -p /dev/mtd1 -s 0x1e0000 imx6q-var-som.dtb
$ sync

Install the root file system

$ mkdir tmp
$ mount /dev/mmcblk1p1 tmp/
$ tar xf linaro-alip-20151215-v1.tar.bz2  -C tmp/
$ umount tmp
$ rm -rf tmp

Deploy the kernel modules

$ cd ~/var-som-mx6-alip/linux-2.6-imx
$ sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=/media/rootfs/

Deploy the Wi-Fi modules and firmware

$ cd ~/var-som-mx6-alip/build-utilites
$ gedit setup-env
set:
export ROOTFS=/media/rootfs
$ ./sudo_build_wl18xx.sh modules
$ ./sudo_build_wl18xx.sh firmware
$ ./sudo_build_wl18xx.sh bt-firmware
$ sudo umount /dev/sdxxx*

u-boot paramters

To use Yocto eMMC file system stop at u-boot and change boot arguments to :

$ setenv bootargs console=ttymxc0,115200 video=mxcfb1:off root=/dev/mmcblk1p1 rootwait rw
$ saveenv