DART-6UL Debian Jessie MX6UL R2
Overview
This page describes how to assemble and install debian distro (jessie) on Variscite board mx6ul-var-dart.
This instruction was tested with Debian 8.4 x64 (jessie) and Ubuntu 14.04/16.04 x64! When using other distributions, there may be problems.
Create build environment
Installing required packages
Debian jessie x64
If your system does not have "sudo", set the "sudo" using the link: [1]
On your Debian building machine:
$ sudo apt-get install -y binfmt-support qemu qemu-user-static debootstrap kpartx $ sudo apt-get install -y lvm2 dosfstools gpart binutils git lib32ncurses5-dev python-m2crypto $ sudo apt-get install -y gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev $ sudo apt-get install -y autoconf libtool libglib2.0-dev libarchive-dev $ sudo apt-get install -y python-git xterm sed cvs subversion coreutils texi2html bc $ sudo apt-get install -y docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev $ sudo apt-get install -y libglu1-mesa-dev mercurial automake groff curl lzop asciidoc u-boot-tools mtd-utils
Ubuntu 14.04/16.04 x64
On your Ubuntu building machine:
$ sudo apt-get install -y binfmt-support qemu qemu-user-static debootstrap kpartx $ sudo apt-get install -y lvm2 dosfstools gpart binutils git lib32ncurses5-dev python-m2crypto $ sudo apt-get install -y gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev $ sudo apt-get install -y autoconf libtool libglib2.0-dev libarchive-dev $ sudo apt-get install -y python-git xterm sed cvs subversion coreutils texi2html bc $ sudo apt-get install -y docbook-utils python-pysqlite2 help2man make gcc g++ desktop-file-utils libgl1-mesa-dev $ sudo apt-get install -y libglu1-mesa-dev mercurial automake groff curl lzop asciidoc u-boot-tools mtd-utils
Deploy source
Download archive contains the build script and support files for building Debian (Jessie) for this board:
$ cd ~ $ git clone https://github.com/varigit/debian-var.git -b debian_jessie_mx6ul_var02 var_mx6ul_dart_debian
Create environment (Internet connection should be available):
$ cd ~/var_mx6ul_dart_debian $ ./make_var_mx6ul_dart_debian.sh -c deploy
This environment prepared to build.
Make Debian
Build all
Internet connection should be available
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c all | tee 2.log
Build by parts
Build rootfs
Internet connection should be available
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c rootfs
Build kernel, dtb files and kernel modules
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c kernel $ sudo ./make_var_mx6ul_dart_debian.sh -c modules
Build bootloader
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c bootloader
Pack rootfs
For the create archive root file system (rootfs.tar.bz2) and image ubi (rootfs.ubi.img) run the following commands:
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c rtar $ sudo ./make_var_mx6ul_dart_debian.sh -c rubi
Create boot SD card
- Follow the steps for make rootfs, kernel, bootloader: go;
- Insert the SD card to card reader connected to a host system;
- Run the following commands (Caution! All data on the card will be destroyed):
$ cd ~/var_mx6ul_dart_debian $ sudo ./make_var_mx6ul_dart_debian.sh -c sdcard -d /dev/sdX
where '/dev/sdX' path to the block SD device in your system.
Successful process log
I: Flashing U-Boot 35+0 records in 35+0 records out 35840 bytes (36 kB) copied, 0.0773679 s, 463 kB/s 237+1 records in 237+1 records out 243104 bytes (243 kB) copied, 0.720032 s, 338 kB/s I: Flashing "BOOT-VARSOM" partition I: Flashing "rootfs" partition I: Copying Debian images to /opt/images/Debian I: Copying NAND U-Boot to /opt/images/Debian I: Copying MMC U-Boot to /opt/images/Debian I: Copying scripts to /opt/images/Debian I: Sync sdcard... I: Done make sdcard! I: I: Command: "sdcard" end. Exit code: 0 I:
Boot board with a bootable SD card
Note: Boot from SD card eliminates Wifi as the Wifi and SD card are using same SDIO interface.
A typical use-case, is to boot from SD card, flash eMMC or NAND flash, and re-boot form eMMC/NAND flash to have Wi-Fi operational.
Setting board dip-switches
Booting your system requires switching the relevant dip-switch to "Boot from SD card". See picture below.
- "00" - Boot from SD card - The picture mode
- "01" - Boot from eMMC
- "10" - Boot from NAND flash
- "11" is illegal.
Be aware that your SOM has either eMMC or NAND flash but never both !
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 also the SOM configuration:
On-SOM storage: SD only, eMMC, NAND.
WIFI if chip exits.
For example:
U-Boot SPL 2015.10-00532-g482dc88 (Jan 03 2016 - 10:05:42) i.MX6UL SOC Part number: DART-6U-A01 Assembly: AS11 Date of production: 2015 Dec 31 DART-6UL configuration: eMMC WIFI Ram size: 512 Boot Device: SD
As explained in the above Build Results table we have 4 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.
Boot From |
SOM Internal FLASH |
SOM has WIFI/BT |
Device Tree selected |
---|---|---|---|
SD | eMMC | Don't Care | imx6ul-var-dart-sd_emmc.dtb |
SD | NAND | Don't Care | imx6ul-var-dart-sd_nand.dtb |
eMMC | eMMC | Yes | imx6ul-var-dart-emmc_wifi.dtb |
eMMC | eMMC | NO | imx6ul-var-dart-sd_emmc.dtb |
NAND | NAND | YES | imx6ul-var-dart-nand_wifi.dtb |
NAND | NAND | NO | imx6ul-var-dart-sd_nand.dtb |
Note: Boot from SD card eliminates Wifi as the Wifi and SD card are using same SDIO interface.
A typical use-case, is to boot from SD card, flash eMMC or NAND flash, and re-boot form eMMC/NAND flash to have Wi-Fi operational.
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 imx6ul-var-dart-sd_emmc.dtb > saveenv
Will select device tree that has SD and eMMC regardless if the SOM has WIFI.
> setenv fdt_file imx6ul-var-dart-sd_nand.dtb > saveenv
Will select device tree that has SD and NAND flash regardless if the SOM has WiFi.
Make sure you don't set am illegal value like "imx6ul-var-dart-sd_nand.dtb" in a SOM that has eMMC flash.
Build Results
The resulted images are located in ~/var_mx6ul_dart_debian/output/.
Image Name |
How to use |
---|---|
rootfs.tar.bz2 | Used to create sdcard and rootfs.ubi.img |
rootfs.ubi.img | Use for flash to nand |
zImage | Linux kernel image |
SPL-nand | SPL built for NAND flash. The SPL is pre-u-boot SW component, required for DDR initialization |
SPL-emmc | SPL built for SD card and eMMC boot. The SPL is pre-u-boot SW component, required for DDR initialization |
u-boot.bin.nand | U-Boot built for NAND flash. |
u-boot.bin.emmc | u-boot built for SD card boot, or eMMC boot in case of DART-MX6UL. |
Device Tree Name |
Boot Device |
imx6ul-var-dart-emmc_wifi.dtb | Boot from internal eMMC with WiFi enabled. (SD card & NAND flash disabled) |
imx6ul-var-dart-nand_wifi.dtb | Boot from internal NAND flash with WiFi enabled. (SD card & eMMC disabled) |
imx6ul-var-dart-sd_emmc.dtb | SD card and eMMC enabled (WiFi & NAND disabled). You can boot from eMMC or SD card |
imx6ul-var-dart-sd_nand.dtb | SD card and NAND flash enabled (WiFi & eMMC disabled). You can boot from NAND flash or SD card |
Linux console access
User name |
User password |
User descriptor |
---|---|---|
root | root | system administrator |
user | user | local user |
xuser | used for X session access |
Flash images to NAND flash and eMMC
To flash images on NAND flash, on the device, as root, run the following command:
# debian-nand.sh
If you wanr to flash images on eMMC, on the device, as root, run the following command:
# debian-emmc.sh
Both the above commands are located in /usr/bin folder of uSD card used to boot debian.