
VxWorks
BSP Developer’s Guide, 6.0
8
2.2.1 Sequence Overview
Minimally, initializing a processor consists of providing a portion of code, and
possibly some tables, that are located at the specific location in memory that the
processor “jumps” to upon reset or power-up of the target system. This code sets
the processor to a specific state, initializes memory and memory addressing,
disables interrupts, and then passes control to additional bootstrapping code.
Upon power-up or reset, the processor first jumps to the entry point in ROM,
_romInit( ). The assembly code at the jump destination sets up memory, initializes
the processor status word, and creates a temporary stack. The processor then
jumps to a C routine (romStart( ) in target/config/all/bootInit.c). A parameter in a
register or on a temporary stack determines whether memory must be cleared
(cold start) and then copies the appropriate sections of ROM into RAM. If the code
in ROM is compressed, it is decompressed during the copy. Next, the processor
jumps to the VxWorks entry point in RAM.
The VxWorks entry point is _sysInit( ) in sysALib.s. This assembly routine sets the
initial hardware state (much the same as _romInit( ) does) and then jumps to
usrInit( ) in usrConfig.c. usrInit( ) is the first C routine that runs from a VxWorks
image. This routine initializes the cache, clears the block storage segment (bss) to
zero, initializes the vector table, performs board-specific initialization, and then
starts the multitasking kernel with a user-booting task.
Figure 2-1 provides an overview of the boot sequence when VxWorks is booted
from an image.
Comentários a estes Manuais