Flashing The Bootloader

Christopher Hall edited this page Oct 15, 2010 · 2 revisions

Method 1 Via Debug Connector.

This used a set of python programs in host-tools/flash07 which communicate via the debug connector to perform FLASH ROM programming. This program is configured to use the Openmoko GTA02 debug board, which appears as two serial ports:

  • ttyUSB0: only DTR is used to connect to the PROG pin
  • ttyUSB1: RxD/TxD are used for communication and DTR is used to connect to the RESET pin

The flash07 program will set the PROG pin low, then reset the device the MCU will boot from the serial port by requesting 512 bytes (it echoes these back for verification) this small program (in host-tools/jackknife) allows the flash07 to control the SPI port so it can read and write to the FLASH ROM.

This process take several minutes.

Method 2 – Via SD Card and Boot Menu.

This uses a serial terminal to access the boot menu and an SD Card containing two files:

  • From samo-lib/flash the flash.elf program file.
  • From samo-lib/mbr the flash.rom 64kB FLASH image file.

Boot with this card in the device, send space to interrupt and select the menu entry titled: “FLASH MBR” by typing the corresponding letter.

This will load the flash.elf which will overwrite the flash with the contents of flash.rom and give an indication of success (or failure) both on the serial console and on the LCD display.

This is much faster than Method 1, but failure (e.g. flashing an mbr that does not work) will require using Method 1

Method 3 – A bit risky

Similar to Method 2, but copy flash.elf as kernel.elf and just let the device auto boot without connecting a serial console. Copy flash.rom as normal. This requires using a separate SD Card so that the original kernel.elf is not lost. However the two files occupy less than 1MB so any small SD Card can be used.

Flashing a non-working mbr will of course require using Method 1 to fix things.