VxWorks Reference Manual : Libraries
bootInit - ROM initialization module
romStart( ) - generic ROM initialization
This module provides a generic boot ROM facility. The target-specific romInit.s module performs the minimal preliminary board initialization and then jumps to the C routine romStart( ). This routine, still executing out of ROM, copies the first stage of the startup code to a RAM address and jumps to it. The next stage clears memory and then uncompresses the remainder of ROM into the final VxWorks ROM image in RAM.
A modified version of the Public Domain zlib library is used to uncompress the VxWorks boot ROM executable linked with it. Compressing object code typically achieves over 55% compression, permitting much larger systems to be burned into ROM. The only expense is the added few seconds delay while the first two stages complete.
Example memory layout for a 1-megabyte board:
-------------- 0x00100000 = LOCAL_MEM_SIZE = sysMemTop() | | | RAM | | 0 filled | | | |------------| = (romInit+ROM_COPY_SIZE) or binArrayStart | ROM image | |----------- | 0x00090000 = RAM_HIGH_ADRS | STACK_SAVE | |------------| | | 0x00080000 = 0.5 Megabytes | | | | | 0 filled | | | | | 0x00001000 = RAM_ADRS & RAM_LOW_ADRS | | | | exc vectors, bp anchor, exc msg, bootline | | | | -------------- 0x00000000 = LOCAL_MEM_LOCAL_ADRS-------------- | ROM | | | 0xff8xxxxx = binArrayStart | | | | 0xff800008 = ROM_TEXT_ADRS -------------- 0xff800000 = ROM_BASE_ADRS
bootInit, inflate( ), romInit( ), and deflate
The original compression software for zlib was written by Jean-loup Gailly and Mark Adler. See the manual pages of inflate and deflate for more information on their freely available compression software.
romStart( ) - generic ROM initialization
void romStart ( int startType /* start type */ )
This is the first C code executed after reset.
This routine is called by the assembly start-up code in romInit( ). It clears memory, copies ROM to RAM, and possibly invokes the uncompressor. It then jumps to the entry point of the uncompressed object code.
N/A