This documentation explains how the eCos HAL specification has been mapped onto the Malta hardware, and should be read in conjunction with that specification. The Malta platform HAL package complements the MIPS architectural HAL and the MIPS32 variant HAL. It provides functionality which is specific to the target board.
Following a hard or soft reset the HAL will initialize or reinitialize the peripherals that it uses. There is an exception for RAM startup applications which depend on a ROM monitor for certain services.
For ROM startup, the HAL will perform additional
initialization, setting up the memory controller and PCI bridge and programming the
various internal registers. This is done in the assembler macros
defined in the arch.inc,
variant.inc and platform.inc
headers and in the
Linker Scripts and Memory Maps
The platform HAL package provides the memory layout information needed to generate the linker script. The MMU is not enabled for this platform, however, the normal MIPS segment address translations are present. The key memory locations are as follows.
NOTE: The virtual memory maps in this section use a C and B column to indicate whether or not the region is cached (C) or buffered (B).
Virtual Address Range C B Description ----------------------- - - ----------- 0x80000000 - 0x81ffffff Y Y SDRAM 0x9e000000 - 0x9e3fffff Y N System flash (cached) 0x9fc00000 - 0x9fffffff Y N System flash (mirrored) 0xa8000000 - 0xb7ffffff N N PCI Memory Space 0xb4000000 - 0xb40fffff N N Galileo System Controller 0xb8000000 - 0xb80fffff N N Southbridge / ISA 0xb8100000 - 0xbbdfffff N N PCI I/O Space 0xbe000000 - 0xbe3fffff N N System flash (noncached) 0xbf000000 - 0xbfffffff N N Board logic FPGA
The Malta platform HAL enables MIPS16 support in the architecture HAL for those Core boards that contain capable processors. This allows application code to be compiled using MIPS16 options and linked against the 32 bit mode eCos library.
To compile for MIPS16 the standard flags that are used in eCos and exported to the ecos.mak file should be used except that the -mips32 flag should be replaced by -mips16 -fwritable-strings. The -mips16 option enables MIPS16 compilation and the -fwritable-strings option is a work-around for a bug in the compiler.