Setup — Preparing the Malta board for eCos Development


In a typical development environment, the Malta board boots from flash into the RedBoot ROM monitor. eCos applications are configured for RAM startup and then downloaded and run on the board via the debugger mipsisa32-elf-gdb. Preparing the board therefore usually involves programming a suitable RedBoot image into flash memory.

The following RedBoot configurations are supported:

RAM RedBoot running from RAM, usually loaded by another version of RedBoot redboot_RAM.ecmredboot_RAM.bin
ROMRedBoot running from ROMredboot_ROM.ecmredboot_ROM.bin

For serial communications, all versions run with 8 bits, no parity, and 1 stop bit at 38400 baud. RedBoot also supports ethernet communication and flash management.

Initial Installation

Installing RedBoot is a matter of downloading a new binary image and overwriting the existing Boot monitor ROM image.

RedBoot is installed using the code download facility built into the Malta board. See the Malta User manual for details.

Quick Download Instructions

Here are quick start instructions for downloading the prebuilt RedBoot image.

  1. Locate the prebuilt files in the bin directory: deleteall.fl and redboot_ROM.fl.
  2. Make sure switch S5-1 is ON. Reset the board and verify that the LED display reads Flash DL.
  3. Make sure your parallel port is connected between the 1284 port of the Malta board and the parallel port of your host system.
  4. Send the deleteall.fl file to the parallel port to erase previous images:

    $ cat deleteall.fl >/dev/lp0

    When this is complete, the LED display should read Deleted.

  5. Send the RedBoot image to the board:

    $ cat redboot_ROM.fl >/dev/lp0

    When this is complete, the LED display should show the last address programmed. This will be something like: 1fc17000.

  6. Connect a serial cable between one of the Malta board serial ports and a serial port on your host. Use a terminal emulator to monitor the serial port (HyperTerminal on Windows or minicom on Linux).
  7. Change switch S5-1 to OFF and reset the board. The LED display should read RedBoot and something similar to the following should be output on the serial port:

    No devices on IDE controller 0
    No devices on IDE controller 1
    ... waiting for BOOTP information
    Ethernet eth0: MAC address 00:d0:a0:00:01:cb
    IP:, Gateway:
    Default server:, DNS server IP:
    RedBoot(tm) bootstrap and debug environment [ROM]
    Non-certified release, version UNKNOWN - built 15:01:37, Oct 20 2004
    Platform: Malta (MIPS32 4Kc)
    Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
    Copyright (C) 2003, 2004, eCosCentric Limited
    RAM: 0x80000400-0x82000000, [0x8000cc40-0x81ed1000] available
    FLASH: 0xbe000000 - 0xbe400000, 32 blocks of 0x00020000 bytes each.
  8. Run the RedBoot fis init and fconfig commands to initialize the flash.

Malta Download Format

In order to download RedBoot to the Malta board, it must be converted to the Malta download format.

The Atlas/Malta Developer's Kit CD contains an utility which requires Perl. This utility is part of the yamon/yamon-src-02.00.tar.gz tarball on the Dev Kit CD. The path in the expanded tarball is yamon/bin/tools. To use srecconv to convert the S-record file:

$ cp redboot_ROM.srec redboot_ROM.rec
$ -ES L -A 29 redboot_ROM

The resulting file is named redboot_ROM.fl.

Rebuilding RedBoot

Should it prove necessary to rebuild a RedBoot binary, this is done most conveniently at the command line. The steps needed to rebuild the the ROM version of RedBoot for the Malta are:

$ mkdir redboot_malta_rom
$ cd redboot_malta_rom
$ ecosconfig new malta redboot
$ ecosconfig import $ECOS_REPOSITORY/hal/mips/malta/current/misc/redboot_ROM.ecm
$ ecosconfig resolve
$ ecosconfig tree
$ make

At the end of the build the install/bin subdirectory should contain the file redboot.srec. This can then be converted into the download format by using the srecconv program as described above.

Additional commands

The exec command which allows the loading and execution of Linux kernels, is supported for this architecture. The exec parameters used for MIPS boards are:

-b <addr>
Location to store command line and environment passed to kernel
-w <time>
Wait time in seconds before starting kernel
-c "params"
Parameters passed to kernel
Kernel entry point, defaulting to the entry point of the last image loaded

Linux kernels on MIPS platforms expect the entry point to be called with arguments in the registers equivalent to a C call with prototype:

void Linux(int argc, char **argv, char **envp);

RedBoot will place the appropriate data at the offset specified by the -b parameter, or by default at address 0x80080000, and will set the arguments accordingly when calling into the kernel.

The default entry point, if no image with explicit entry point has been loaded and none is specified, is 0x80000750.

Other Issues

The Malta platform HAL does not affect the implementation of other parts of the eCos HAL specification. The MIPS32 variant HAL, and the MIPS architectural HAL documentation should be consulted for further details.