From 4ab7ab0b8f3d978c726111d083e57cf46b887bdb Mon Sep 17 00:00:00 2001 From: Martyn Welch Date: Fri, 22 Feb 2019 19:05:48 +0000 Subject: [PATCH] imx: mx6qsabrelite: Update the SabreLite README The information in the SabreLite README is inaccurate and sparse. The upstream U-Boot can boot the SabreLite from SPI-NOR. Additionally, the freely available imx_loader tool can be easily used to boot a board with a corrupted SPI, the official Freescale/NXP manufacturing tools are not required. Reformat the document, adding a description of how to boot from SPI-NOR and adding a brief description of how to recover the board should the SPI-NOR be corrupted using imx_loader. Signed-off-by: Martyn Welch Acked-by: Troy Kisky --- .../boundary/nitrogen6x/README.mx6qsabrelite | 161 +++++++++++------- 1 file changed, 104 insertions(+), 57 deletions(-) diff --git a/board/boundary/nitrogen6x/README.mx6qsabrelite b/board/boundary/nitrogen6x/README.mx6qsabrelite index 12a9c856cf..6283c9575e 100644 --- a/board/boundary/nitrogen6x/README.mx6qsabrelite +++ b/board/boundary/nitrogen6x/README.mx6qsabrelite @@ -1,63 +1,11 @@ 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. Boot source, boot from SD card ---------------------------------- -The recent mainline U-Boot for the Freescale i.MX6q SabreLite board supports -boot from SD card only. However, by default, the SabreLite -boards boot from the SPI NOR flash. These boards need to be reflashed with -a small SD card loader to support boot from SD card. This small SD card loader -will be flashed into the SPI NOR. 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 - -under a open-source 3-clause BSD license. - -To update the SPI-NOR on the SabreLite board without the Freescale -manufacturing tool use the following procedure: - -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. done. - -In case you somehow do not succeed with this procedure you will have to use -the Freescale manufacturing tool in order to reflash the SPI-NOR. - -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 is taken from - -https://wiki.linaro.org/Boards/MX6QSabreLite - -2. Build +1. Build -------- To build U-Boot for the SabreLite board: @@ -65,8 +13,107 @@ To build U-Boot for the SabreLite board: make mx6qsabrelite_config make -To copy the resulting u-boot.imx to the SD card: - sudo dd if=u-boot.imx of=/dev/sXx bs=512 seek=2&&sudo sync +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. -Note: Replace sXx with the device representing the SD card in your system.