Setup -- Preparing the Malta board for eCos Development
Overview
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:
Configuration
Description
Use
File
RAM
RedBoot running from RAM, usually loaded by another
version of RedBoot
redboot_RAM.ecm
redboot_RAM.bin
ROM
RedBoot running from ROM
redboot_ROM.ecm
redboot_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.
Locate the prebuilt files in the bin directory: deleteall.fl and redboot_ROM.fl.
Make sure switch S5-1 is ON. Reset the board and verify that
the LED display reads Flash DL.
Make sure your parallel port is connected between the 1284 port
of the Malta board and the parallel port of your host system.
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.
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.
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).
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: 10.0.0.203/255.255.255.0, Gateway: 10.0.0.3
Default server: 10.0.0.1, DNS server IP: 10.0.0.1
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.
RedBoot>
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 srecconv.pl 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
$ srecconv.pl -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/VERSION/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
<addr>
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.