Table of Contents Previous Chapter ACIS

39.0 Boot FEP (36-53230 01)

39.1 Purpose

The FEP is booted at the direction of a BEP function which commands and controls the process. A minimal amount of code is used to provide the BEP with the capability to deliver read, write, and execute commands to the FEP. With these commands the BEP may complete loading of the executable code and begin execution of that Front End Processor stand alone code.

39.2 Uses

The Boot FEP provides the following feature:

  1. Provides a means of initiating executable code on the FEP.

39.3 Organization

Figure 169 illustrates the relationship between functions used by the FEP boot procedure.

FIGURE 169. FEP Boot Function Relationships


The FEP boot uses the FEP IO Library to fulfill commands entered into the incoming MailBox.

39.4 Scenario

39.4.1 Pre-Boot Tasks

The functions startUpFep and bootServerFep are copied into FEP shared memory by the BEP while holding the FEP in a reset state. When released, the FEP will reference its microboot address and begin executing the startUpFep code. Refer to the FEP Manager Section 25.5.2 for a more extensive description of how this process might be accomplished.

39.4.2 Boot the FEP

startUpFep will initialize registers: setting kernel mode, disabling interrupts, mapping the general exception vector, setting co-processor 0 to usable, clearing the interrupt mask, and clearing the software interrupts in co-processor 0. (There are no additional co-processors.) The mongoose is then configured with no DMA and running with a single wait state. The stack size having been declared during initial compilation, the stack pointer address is located at the maximum offset (minus this functions save area of 24 bytes). The global data pointer (gp) is assigned to the linker defined symbol _gp.

C program specifications expect the global data area (.bss) to be cleared. The address of the first word and the end have been provided by the linker. The process enters a loop which will write zeros into those memory locations. The process then calls the monitor function bootServerFep to service commands from the BEP. Should that function ever return, startUpFep will continue execution from its first statement.

39.4.3 Monitor the Watchdog and Fulfill BEP Commands

bootServerFep establishes a buffer for commands and for the FIOgetNextCmd status variable. It first calls FIOinit to initialize the FEP IO Library pointers and structures used in communicating commands from the BEP mail box. Next it enters a forever loop in which it calls FIOtouchWatchdog to keep the mongoose watchdog counter from reaching zero and resetting the CPU and calls FIOgetNextCmd to have the library functions interrogate the BEP mailbox for any read, write, or execute in memory commands, to which other library functions will respond and fulfill. Commands other than those mentioned are not honored. Usually the BEP uses these functions to complete loading of memory and to begin executing a loaded function. Refer to FEP IO Library Section 38.0 for a more detailed description of the library functions.


39.5 Specification

39.5.1 bootServerFep()

Scope:
Initialization
Return Type:
void
Documentation:
This function will use the FEP IO Library functions to establish communications from the BEP and to respond to BEP read, write, or execute in memory commands.
Preconditions:
The FEP mongoose and its co-processor must have been initialized and booted.
Semantics:
This function will use the FEP IO Library function FIOinit to establish mailbox communications from the BEP. It then enters a FOREVER loop in which it calls FIOtouchWatchdog to prevent the watchdog from counting down and resetting the CPU, and calls FIOgetNextCmd to respond to BEP commands to read, write, or to execute in memory.
Other BEP commands are currently being ignored (TBD).
Postconditions:
This function never returns.

39.5.2 startUpFep()

Scope:
Boot
Return Type:
void
Documentation:
This assembly language function establishes the necessary initial conditions on the FEP.
Preconditions:
The boot code must have been put into place in the FEP.
Semantics:
This function initializes registers, loads the mongoose configuration, initializes the stack and global pointers, clears the global data memory (.bss), and transfers control to bootServerFEP. Should that function return startUpFep will restart.
Postconditions:
This function never returns.

Table of Contents Next Chapter