U-Boot for the Freescale i.MX6q SabreLite board
===============================================

This file contains information for the port of U-Boot to the Freescale
i.MX6q SabreLite board.


1. Build
--------

To build U-Boot for the SabreLite board:

 make mx6qsabrelite_config
 make


2. Boot from SD card
--------------------

The SabreLite boards boot from the SPI NOR flash. These boards need their SPI
to be reflashed with a small SD card loader to support boot from SD card. The
board will still boot from SPI NOR, but the loader will in turn request the
BootROM to load the U-Boot from SD card.

The SD card loader is available from

https://wiki.linaro.org/Boards/MX6QSabreLite

This is provided under a open-source 3-clause BSD license.

To following procedure can be used to update the SPI-NOR on the SabreLite
board:

1. Write this SD card loader onto a large SD card using:

      sudo dd if=iMX6DQ_SPI_to_uSDHC3.bin of=/dev/sXx

   Note: Replace sXx with the device representing the SD card in your system.

   Note: This writes SD card loader at address 0

2. Put this SD card into the slot for the large SD card (SD3 on the bottom of
   the board). Make sure SW1 switch is at position "00", so that it can boot
   from the fuses.

3. Power-up the SabreLite, press 'space' to enter command mode in the U-Boot
   (the default one the board is shipped with, starting from the SPI NOR) and
   enter the following commands:

      MX6Q SABRELITE U-Boot > mmc dev 0
      MX6Q SABRELITE U-Boot > mmc read 0x10800000 0 200
      MX6Q SABRELITE U-Boot > sf probe
      MX6Q SABRELITE U-Boot > sf erase 0 0x40000
      MX6Q SABRELITE U-Boot > sf write 0x10800000 0 0x40000

4. Write the u-boot.imx produced during the U-Boot build to the SD card:

      sudo dd if=u-boot.imx of=/dev/sXx bs=512 seek=2 && sudo sync

   Note: Replace sXx with the device representing the SD card in your system.

5. Re-insert the SD card back in the slot for the large SD card and power-cycle
   the board.

Note: The board now boots from full size SD3 on the bottom of the board. NOT
      the micro SD4/BOOT slot on the top of the board. I.e. you have to use
      full size SD cards.

This information originally taken from:

   https://wiki.linaro.org/Boards/MX6QSabreLite


3. Boot from SPI NOR
--------------------

The SabreLite board can also boot U-Boot directly from the SPI NOR flash:

1. Power-up the SabreLite, press 'space' to enter command mode in the U-Boot
   and enter the following commands:

      => mmc dev 0
      => mmc read 0x10800000 0x400 0x80000
      => sf probe 0
      => sf erase 0 0xc0000
      => sf write 0x10800000 0x400 0x80000

Note: This procedure assumes you have booted using the desired U-Boot from an
      SD card as prepared in the previous section. Alternative mechanisms, such
      as using tftpboot to copy an alternative U-Boot image into memory can
      also be used.


4. Recovering SPI-NOR
---------------------

In case you somehow do not succeed with this procedure you can upload U-Boot
via USB:

1. Download and install the imx_loader following the instructions provided:

      https://github.com/boundarydevices/imx_usb_loader

2. Connect the board to USB via the USB OTG port.

3. Make sure SW1 switch is at position "01", so that it can boot from USB OTG.

4. Power-up the SabreLite and run the imx_loader to upload the U-Boot image:

      sudo imx_usb u-boot.imx

Note: This will upload and run the U-Boot image in memory, the SPI will not be
      reprogrammed and this procedure will need to be repeated if the board is
      reset.

5. Use one of previous descriptions to re-flash the SPI-NOR as required.

6. Ensure SW1 is returned to "00" to boot from the fuses once done.

