HAL Port — Implementation Details


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, and headers and in the hal_platform_init() function in plf_misc.c.

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.


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

MIPS16 Support

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.