The MCB1700 board platform HAL package is loaded
automatically when eCos is configured for an
mcb1700 target. It should never be necessary to
load this package explicitly. Unloading the package should only
happen as a side effect of switching target hardware.
Startup
The MCB1700 board platform HAL package supports three
separate startup types:
RAM
This is the startup type for application development
using a GDB stubs based development approach.
The Stubsrom is programmed into internal Flash at
location 0x00000000 and uses internal RAM at location
0x10000000. arm-eabi-gdb is then
used to load a RAM startup application into memory and debug
it. The application code is loaded from 0x10001000 and its data
and heap go into SRAM at 0x2007C000. It is assumed that the
hardware has already been initialized by the stubs. By default
the application will use the eCos virtual vectors mechanism to
obtain services from the stubs, including diagnostic output.
ROM
This startup type can be used for finished applications which
will be programmed into internal ROM at location
0x00000000. Data and BSS will be put into internal RAM starting
from 0x10000400. The remainder of SRAM at 0x10000000 and all of
the SRAM at 0x2007C000 will be used for heap. The application
will be self-contained with no dependencies on services
provided by other software. The program expects to boot from
reset into ROM at location zero. eCos startup code will perform
all necessary hardware initialization. This startup type can
also be used with JTAG debuggers, writing the application image
into the flash and then using JTAG to debug the application.
This approach makes the best use of the board's frugal memory
resources, but does require the additional step of flashing the
image onto the board each time.
JTAG
This is the startup type used to build applications that are
loaded via a JTAG interface. The application will be
self-contained with no dependencies on services provided by
other software. The program code expects to be loaded from
0x20000400 and entered at that address and its data
and heap go into SRAM at 0x2007C000. eCos startup code will
perform all necessary hardware initialization.
Monitors and Virtual Vectors
If the application is intended to act as a ROM monitor, providing
services for other applications, then the configuration option
CYGSEM_HAL_ROM_MONITOR should be set. Typically
this option is set only when building the Stubrom.
If the application is supposed to make use of services provided by
a ROM monitor, via the eCos virtual vector mechanism, then the
configuration option CYGSEM_HAL_USE_ROM_MONITOR
should be set. By default this option is enabled when building for
a RAM startup, disabled otherwise. It can be manually disabled for
a RAM startup, making the application self-contained, as a testing
step before switching to ROM startup.
If the application does not rely on a ROM monitor for diagnostic
services then serial port 1 will be claimed for HAL diagnostics.
UART Serial Driver
The MCB1700 board uses the LPC1XXX's internal UART serial support.
As well as the polled HAL diagnostic interface, there is also
a CYGPKG_IO_SERIAL_CORTEXM_LPC1XXX package
which configures
the CYGPKG_IO_SERIAL_GENERIC_16X5X driver for
use in the LPC1XXX series. Both UARTs can be supported by this
driver. Note that it is not recommended to enable this driver
on the port used for HAL diagnostic I/O. This driver is not active
until the
CYGPKG_IO_SERIAL_DEVICES configuration option
within the generic serial driver support package
CYGPKG_IO_SERIAL is enabled in the
configuration.