The CRISP and CFI DPU boot programs are identical except for extra features in the CRISP program for the tracking processor. The common features are described here.
The boot ROM program tests RAM searching for a place to load itself. It tests pages 3, 2, and 1. The boot program copies itself into the first RAM page that tests good; this will normally be page 3. No telemetry appears and no commands are accepted until after the RAM test. The test is non-destructive of RAM contents.
The boot program generates a subset of the telemetry generated by the
flight program. Memory
dump packets
and memory
checksum subpackets
can be requested. Command
echoes
are generated. A short
boot status
subpacket is generated periodically.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Time Tag | 32 | Unsigned integer | Spacecraft MET |
| Grouping | 2 | 11 = None | Grouping flags |
| Subpacket Id | 14 | 0x0000 | Identifies subpacket type |
| Length | 16 | 8 | Number of bytes in subpacket |
| Version | 8 | 0 = Boot | Software version |
| Alarm | 8 | See Table 21 | Latest alarm id |
| Alarm Type | 1 | 0 = Persistent 1 = Transient | Latest alarm type |
| Alarms | 7 | Unsigned integer | Count of alarms |
| Executed | 8 | Unsigned integer | Commands executed |
| Rejected | 8 | Unsigned integer | Commands rejected |
| Status Int. | 8 | 1 - 255 (0 = Off) | Status interval (seconds) |
| Auto Flush | 1 | 0 = Disable 1 = Enable | Automatic telemetry flush |
| Spare | 7 |   |   |
| Cause | 8 | 0 = Normal 1 = Watchdog | Reset cause |
The boot program also generates the following non-packetized
housekeeping data every second.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Version | 8 | 0 = Boot | Software version |
| Alarm | 8 | See Table 21 | Latest alarm id |
| Alarm Type | 1 | 0 = Persistent 1 = Transient | Latest alarm type |
| Alarms | 7 | Unsigned integer | Count of alarms |
| Executed | 8 | Unsigned integer | Commands executed |
| Rejected | 8 | Unsigned integer | Commands rejected |
| Spare | 11 * 8 |   |   |
The boot program processes commands received from the C&DH system over the 1553 bus. The boot program accepts a subset of the application commands:
The program also accepts some boot-specific commands.
Boot the default program from EEPROM (address = 0x40000). See
CXX_ROM_GO
below.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Opcode | 16 | 0x0032 |   |
| Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
| Length | 15 | 2 | Command length in 32-bit words |
| Checksum | 32 |   | 32 bit XOR |
Boot a program. The address identifies a boot header (described
below). The program must either execute very quickly (so as not to
hold up the command handler) or take over completely. If the program
returns, there must be no net stack effects.
| Name | Length (bits) | Value | Description |
|---|---|---|---|
| Opcode | 16 | 0x0034 |   |
| Macro? | 1 | 0 = Execute 1 = Append to macro | Macro load bit |
| Length | 15 | 3 | Command length in 32-bit words |
| Address | 32 | Unsigned integer | Program header address |
| Checksum | 32 |   | 32 bit XOR |
The boot program can load and run programs saved in EEPROM. This is
only done in response to a command
(CXX_ROM_BOOT
or
CXX_ROM_GO);
the boot program never attempts to automatically boot a program. This
allows time for the corpse of a defunct program to be examined before
rebooting. The EEPROM format consists of a program image prefixed with
a five word header:
| page | address | start address | length | checksum |
A serial test port is available during ground testing. Typing a
carriage return any time that the boot program is running brings up an
ASCII interface. A set of commands similar to that available over the
spacecraft interface is provided. Each command is invoked by a single
character:
| Command | Action |
|---|---|
| b | Boot (from default EEPROM location) |
| c | Copy Memory |
| e | Run Program |
| g | Boot (from selected EEPROM location) |
| i | Inspect/Modify Memory |
| l | Load Memory (in Motorola S-record format) |
Return to Common Software User's Guide.
Report problems to John Hayes.