U-Boot for Exeda

From Compulab Mediawiki
Jump to: navigation, search

Overview

The Exeda uses the U-Boot boot-loader for low-level initialization and operating system loading. U-Boot is an open source boot-loader available for a wide range of embedded processor architectures. This page summarizes settings and features unique to the Exeda port of U-Boot. Comprehensive documentation of the U-Boot project may be found at http://www.denx.de/wiki/view/DULG/UBoot. The CompuLab U-Boot version for the Exeda is checked out from U-Boot-1_2_0 of Das U-Boot repository and can be obtained from CompuLab website in binary form. CompuLab U-Boot source will be provided on request.

Exeda specific U-Boot commands

A brief U-Boot command reference can be found here. The following commands are specific to the Exeda port of U-Boot:

  • CPU frequency scaling
    cpufreq with no arguments - display the current frequency setting
    cpufreq <frequency> - set CPU frequency; (allowed frequency values : 104/208/312/520)
  • Hardware configuration information *
    hwinfo - print device hardware configuration information

Default Environment

U-Boot features an extensive default environment, for boot sequence control and hardware configuration.

Variable Default setting Description
bootcmd This variable defines a command string that is automatically executed when the initial countdown is not interrupted.
bootdelay 3 sec Delay before automatic boot starts
boot_mode uboot Boot option setting. See Boot Sequence Options for details.
bootargs The contents of this variable are passed to the Linux kernel as boot arguments
stdin serial Standard input stream
stdout serial Standard output stream
stderr serial Standard error stream
baudrate 115200 Serial port baud rate
ethaddr set at production time Ethernet MAC address for the extender board ethernet interface
ipaddr - IP address; needed for tftp command
serverip - Server address; needed for tftp command
autoload no Determines whether the "dhcp", "bootp" and "rarpb" commands will automatically download an image.
splashimage 0x000B0000 Address of a bitmap image used as splash-screen.
usb_mode slave USB port operation mode. The only values allowed are: "slave" or "host". Must be set before "usb start" command is issued.
extpwr_mode on Determines whether the external power enable (GPIO<97>) is asserted.
cpu_freq maximum supported by CPU CPU frequency. Used by "cpufreq" command to store the frequency setting.
mem_zero on Determines whether memory zeroing is performed. Allowed values: "on", "off".

Set to "off" for shorter boot time.

Boot Sequence Options

Boot Options

The U-Boot boot-loader supports several basic boot options. The environment variable "boot_mode" determines which boot sequence is executed. The variable may be set to the following values:

  • uboot - the Exeda boots up to the U-boot command prompt.
  • linux - the default Linux boot from NAND sequence is executed. Please see Linux documentation for details.
  • wince - the default WinCE boot from NAND sequence is executed. Please see WinCE documentation for details.
  • any other value - the command stored in the bootcmd variable is executed.

Bringing to Default State

Pressing and holding Ctrl D during the boot process will restore the U-Boot settings to the default factory values. Use this if the environment has been corrupted.

O/S Update Boot Sequence

Pressing the ON/OFF button for more than four seconds during the boot process will put the system into the O/S update boot sequence. The boot-loader will attempt to detect an external storage device (USB or MMC) and search for updated image files. If no files are detected, the system will boot up to the U-Boot command prompt. This boot mode allows easy and fast software updates without connecting a PC host. Please refer to O/S manuals for specific update procedures.

NAND Flash System

The Exeda port of U-Boot supports the MTD flash driver that is used with the Linux O/S. U-Boot will load the appropriate driver according to the boot_mode environment variable. Additionally, the nand_mode environment variable may be used to set the NAND driver mode explicitly. Setting nand_mode to on will cause U-Boot to load the MTD driver. If nand_mode is set to off the MTD driver will not be loaded. See WinCE documentation for further details.

Updating U-Boot

Admolition warning.png Do not interrupt the process or shut down the system during update. Doing so can result in a disabled Exeda device that will need to be shipped to CompuLab for reprogramming

Update through serial port (preferred method)

  • Start terminal emulation program on your PC using the serial port to which the supplied serial cable is connected. Set baud rate to 115200 bps, 8 bit per frame, 1 stop bit, no parity, no flow control.
  • Turn on the Exeda. U-Boot will start and you will get a command prompt.
  • Use the loadb command to start image download
U-Boot> loadb a0010000
  • In a terminal emulation program, send the U-Boot image file using kermit mode. For example, in HyperTerminal, use "Transfer >> Send File". A "Send File" dialog will appear. In the protocol combo box, choose Kermit. Fill in the U-Boot image filename and press the "Send" button.
    Hyperterm kermit send.png
  • Use the following commands to store the downloaded image into the Exeda NOR flash:
U-Boot> protect off 0 +50000
U-Boot> erase 0 +50000
U-Boot> cp.b a0010000 0 50000
  • Reboot the Exeda.

Update through USB and Disk-on-Key

A USB flash drive is needed for this procedure.

  • On the host PC, copy the u-boot-x.x.x.bin file to the USB flash drive. Rename the file u-boot.bin.
  • Connect the USB flash drive to the Exeda OTG USB port using the supplied "USB-A receptacle to Mini-USB A male" cable.
  • Start a terminal emulation program on your PC using the serial port to which the supplied serial cable is connected. Set baud rate to 115200 bps, 8 bit per frame, 1 stop bit, no parity, no flow control.
  • Turn on the Exeda. U-Boot will start and you will get a command prompt.
  • Enable the U-Boot USB host subsystem:
U-Boot> setenv usb_mode host
U-Boot> usb start
  • After U-Boot has detected the USB storage device copy U-Boot image to the Exeda RAM:
U-Boot> fatload usb 0 a0010000 u-boot.bin
  • Use the following commands to store the U-Boot image into the Exeda NOR flash:
U-Boot> protect off 0 +50000
U-Boot> erase 0 +50000
U-Boot> cp.b a0010000 0 50000
  • Reboot the Exeda.

Update through LAN / TFTP

The Ethernet extender board ("Y" option) is needed for this procedure.

  • Install TFTP service (or server) on the host PC. The TFTP server tested by Compulab is TFTPD32, http://tftpd32.jounin.net, it is also included in the Linux and WinCE distribution packages.
  • Rename the u-boot-x.x.x.bin file to u-boot.bin and copy it to the TFTP directory.
  • Start a terminal emulation program on your PC using the serial port to which the supplied serial cable is connected. Set baud rate to 115200 bps, 8 bit per frame, 1 stop bit, no parity, no flow control.
  • Turn on the Exeda. U-Boot will start and you will get a command prompt.
  • Type printenv in order to check the current IP settings. Modify them if needed using the setenv ipaddr and setenv serverip commands. Or, use U-Boot's DHCP capability to automatically set the IP address.
  • Download U-Boot image to the Exeda RAM:
U-Boot> tftp a0010000 u-boot.bin
  • Use the following commands to store the downloaded image into the Exeda NOR flash:
U-Boot> protect off 0 +50000
U-Boot> erase 0 +50000
U-Boot> cp.b a0010000 0 50000
  • Reboot the Exeda.

Memory Map

NOR Flash

Admolition important.png The NOR flash memory is used to store the U-Boot image, the U-Boot environment and Exeda setup data for wireless interfaces. Corruption of this data can result in a disabled Exeda device that will need to be shipped to CompuLab for reprogramming.
Memory Address range Block Range Size Usage
0x00000000 - 0x0004FFFF 1 - 5 320KB U-Boot bootloader
0x00050000 - 0x0005FFFF 6 64KB U-Boot environment
0x00060000 - 0x0006FFFF 7 64KB Setup block
0x00070000 - 0x000AFFFF 8 - 11 256KB Utilities and applications
0x000B0000 - 0x000FFFFF 12 - 16 320KB Splash-screen

SDRAM Memory

SDRAM map: SDRAM starts at 0xA0000000; maximum is 0xA8000000 (128MB).

U-Boot system: 0xA7800000 ...... SDRAM top

U-Boot operates with a virtual memory subsystem turned on, using one-to-one virtual to physical address mapping.

See also