Getting u-boot prompt using UART port for Hawkboard

From RidgeRun Developer Connection
Jump to: navigation, search

Loading u-boot over serial

When u-boot is damaged, the simple way to get u-boot prompt again to flash on NAND is using UART. The steps to reach that are the following:

1. Set SW1 DIP Switch as OFF-ON-OFF-ON (1, 2, 3, 4)

2. To check Dip Switch are correctly set, open some terminal emulator application (teraterm or in worst case hyperterm) and restart the target, you should see one “BOOTME” message (115200 8-N-1). After test that, close the terminal emulator application.

3. Download TI’s Host UART Tool -UartHost.exe from:

4. Get the AIS Uboot Image for UART Flashing.

This image can be downloaded from:

or It can be generated: How to generate AIS Uboot Image for UART Flashing for Hawkboard

5. Start the TI’s Host UART Tool (Windows application)

6. Press browse and select the AIS file downloaded or generated.

7. Set Appropriate COM Port and press Start

8. Reset the Hawkboard to generate BOOTME message and start with the writing procedure.

9. It will take about 4-5 min to completely write the Uboot. So it may see as It has been stuck at “Jump to Address 0X80000000”. Do not close app until Tool Close the port itself.(Closing COMX).

10. After the port is closed, close the tool window and open the terminal emulator application, if the target has a kernel installed, the new uboot can be boot it, so, in this case is necessary to open the terminal emulator application rapidly. I was never fast enough, so I let it boot into Linux, and ran the flash_eraseall commands show later in this page. Another option to prevent autostart into Linux, the u-boot can be compiled using the option BOOTDELAY flag like -1 to don't allow try to start the kernel (<RidgeRunSDK>/bootloader/uboot.x/src/includes/configs/omapl_hawkboard.h).

You now have u-boot running from RAM. Next you need to save u-boot to flash.

Procedure to flash u-boot on NAND

After booting the u-boot over UART as mentioned above, runn the following u-boot commands:

setenv autoload no ; setenv autostart no
setenv serverip
tftp 0xc0700000 u-boot_nand_ais_v1.bin
nand erase
nand write.e 0xc0700000 0x20000 0x70000

Then power down the target hardware, change the DIP Switches for NAND boot 1-ON 2-OFF 3-OFF 4-OFF, and power back on.

Solving common problems

Boots into Linux before you can interrupt boot process

Hopefully you can access mtdutils (via root NFS mount for example).

  1. Enable mtdutils (make config -> file system -> file system software -> mtdutils)
  2. Build mtdutils (make fs)
  3. On target, with linux running
for f in /dev/mtd[0-9] ; do flash_eraseall $f ; done

Referenced pages