I.MX31 ADS Installing Uboot

Showing results for 
Show  only  | Search instead for 
Did you mean: 

I.MX31 ADS Installing Uboot

No ratings

I.MX31 ADS Installing Uboot

If you already followed the i.MX31ADS Compiling Uboot steps or got a compiled U-boot image, copy u-boot.bin to /tftpboot:

 $ cp u-boot.bin /tftpboot 

If you have RedBoot on your board follow the "Installing RedBoot using U-Boot", but if you already have been installed U-Boot and are just installing a new version jump to "Installing U-Boot using U-Boot".

Installing U-Boot using RedBoot

Load the U-boot image to board RAM:

 RedBoot> load -v -r -b 0x100000 /tftpboot/u-boot.bin -h 


0x100000 is the memory position where the firmware image will be downloaded; is your host IP which is running the TFTP server.

Erase the Flash:

 RedBoot> fis erase -f 0xA0000000 -l 0x00040000 

To make sure about what area you should erase, perform the fis list command and compare the areas

Write the image to Flash:

 RedBoot> fis write -f 0xA0000000 -b 0x100000 -l 0x00040000 

Reset the board:

 RedBoot> reset 

You should see something like this:

U-Boot 1.3.3 (May 26 2008 - 11:19:43)

CPU: Freescale i.MX31 at 531 MHz

Board: MX31ADS

DRAM: 128 MB

Flash: 32 MB

In: serial

Out: serial

Err: serial

Hit any key to stop autoboot: 0


Installing U-Boot using U-Boot

First upload the U-Boot firmware using Network (Transferring file over network ) or Serial (Transferring File Over Serial)

This is a common serial transfer output:

=> loady

## Ready for binary (ymodem) download to 0x80800000 at 115200 bps...

CCmode, 1359(SOH)/0(STX)/0(CAN) packets, 9 retries

## Total Size = 0x0002a388 = 172936 Bytes

Unprotect the bootloader flash area:

protect off A0000000 A003FFFF 

Erase the flash blocks:

erase A0000000 A003FFFF 

Copy from RAM to Flash: If firmware has been thansfered over serial:

cp.b 80800000 A0000000 2a388 

If firmware has been transfered over tftp:

cp.b 100000 A0000000 2a388

Installing U-Boot using OpenOCD JTAG/GDB

To do that you need to compile U-Boot with this define:


Then enter in GDB and execute:

(arm-gdb) restore u-boot.bin binary 0x87f00000

Restoring binary file u-boot.bin into memory (0x87f00000 to 0x87f2c790)

(arm-gdb) set $pc = 0x87f00000

(arm-gdb) c

You will see U-Boot starting in the serial console. Then compile a new U-Boot without the CONFIG_SKIP_LOWLEVEL_INIT and follow the Installing U-Boot using U-Boot to install U-Boot in the flash.

Installing U-Boot using LogicLoader

losh> ifconfig sm0 dhcp 
losh> load raw 0x81000000 115764 /tftp/ 
losh> exec 0x81000000 - 


I'm trying to run U-boot with starting address in middle of DDR RAM, instead of flash ROM.  It starts to run from 0xA0100000 just fine, but somewhere in the relocation code (crt0_64.S) it gets a Sync exception.  I'm going to try the below option tomorrow, hopefully disabling the remap might help.  

Version history
Last update:
‎09-10-2020 02:00 AM
Updated by: