How to use and build U-Boot on mx6sabresd:
----------------------------------

Currently there are four methods for booting mx6sabresd boards:

1. Booting from SD card via normal U-Boot (u-boot.imx)

2. Booting from eMMC via normal U-Boot

3. Booting via SPL (SPL and u-boot.img)

4. Booting via Falcon mode (SPL launches the kernel directly)


1. Booting from SD card via normal U-Boot
-----------------------------------------

$ make mx6qsabresd_defconfig (If you want to build for mx6qsabresd)

or

$ make mx6dlsabresd_defconfig (If you want to build for mx6dlsabresd)

$ make

This will generate the image called u-boot.imx.

- Flash the u-boot.imx binary into the SD card:

$ sudo dd if=u-boot.imx of=/dev/sdb bs=1K seek=1 && sync


2. Booting from eMMC via normal U-Boot
--------------------------------------

$ make mx6qsabresd_defconfig (If you want to build for mx6qsabresd)

or

$ make mx6dlsabresd_defconfig (If you want to build for mx6dlsabresd)

$ make

This will generate the image called u-boot.imx.

- Flash the u-boot.imx binary into the eMMC:

Set SW6 to download mode: 00001100

Plug a usb cable to USB-OTG and load the u-boot image using the imx_usb_loader
tool (https://github.com/boundarydevices/imx_usb_loader):

$ sudo ./imx_usb u-boot.imx

In U-boot change the eMMC partition config:

=> mmc partconf 2 1 0 0

Mount the eMMC in the host PC:

=> ums 0 mmc 2

Flash the u-boot.imx binary

$ sudo dd if=u-boot.imx of=/dev/sdX bs=1K seek=1 && sync

Set SW6 to eMMC 8-bit boot: 11010110


3. Booting via SPL
------------------

Other method for building U-Boot on mx6qsabresd and mx6qpsabresd is
through SPL. In order to do so:

$ make mx6sabresd_spl_defconfig
$ make

This will generate the SPL image called SPL and the u-boot.img.

- Flash the SPL image into the SD card:

$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 && sync

- Flash the u-boot.img image into the SD card:

$ sudo dd if=u-boot.img of=/dev/sdbbs=1K seek=69 && sync


4. Booting via Falcon mode
--------------------------

$ make mx6sabresd_spl_defconfig
$ make

This will generate the SPL image called SPL and the u-boot.img.

- Flash the SPL image into the SD card:

$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 oflag=sync status=none && sync

- Flash the u-boot.img image into the SD card:

$ sudo dd if=u-boot.img of=/dev/sdbbs=1K seek=69 oflag=sync status=none && sync

Create a partition for root file system and extract it there:

$ sudo tar xvf rootfs.tar.gz -C /media/root

The SD card must have enough space for raw "args" and "kernel".
To configure Falcon mode for the first time, on U-Boot do the following commands:

- Setup the IP server:

# setenv serverip <server_ip_address>

- Download dtb file:

# dhcp ${fdt_addr} imx6q-sabresd.dtb

- Download kernel image:

# dhcp ${loadaddr} uImage

- Write kernel at 2MB offset:

# mmc write ${loadaddr} 0x1000 0x4000

- Setup kernel bootargs:

# setenv bootargs "console=ttymxc0,115200 root=/dev/mmcblk1p1 rootfstype=ext4 rootwait quiet rw"

- Prepare args:

# spl export fdt ${loadaddr} - ${fdt_addr}

- Write args 1MB data (0x800 sectors) to 1MB offset (0x800 sectors)

# mmc write 18000000 0x800 0x800

- Press KEY_VOL_UP key, power up the board and then SPL binary will
launch the kernel directly.
