Power-on starts the unit in bootloader mode. The remaining mode transitions have the following triggers. In each case where a mode transition is caused by a command, the command is assumed to have been addressed to the supervisor processor.
Table 24: Mode Transition Mechanisms
From
Bootloader
Idle
Processing
Maintenance
Application
To
Bootloader
Supervisor INIT with no data
Supervisor INIT with no data
Supervisor INIT with no data
Supervisor INIT with no data
Idle
INIT with data 0x00002000
Emergency notification
GO requesting functional processor turn-off
Timeout, if GO command does not permit remaining on
Processing complete, if GO command does not permit remaining on
Emergency notification
GO requesting functional processor turn-off
Timeout, if GO command does not permit remaining on
Emergency notification
Go requesting functional processor turn-off
Timeout, if GO command does not permit remaining on
Processing
GO requesting turn-on, boot from NAND, and control structure sent
GO requesting turn-on, boot from NAND, and control structure sent
GO requesting turn-on, boot from NAND, and control structure sent
Maintenance
GO requesting turn-on, boot from supervisor flash
GO requesting turn-on, boot from supervisor flash
GO requesting turn-on, boot from supervisor flash
Functional INIT with no data
Application
GO requesting turn-on, boot from NAND, no control structure sent
GO requesting turn-on, boot from NAND, no control structure sent
Processing complete, if GO command permits remaining on
GO requesting turn-on, boot from NAND, no control structure sent
Functional INIT with data 0x00008000
Table 25: Mode Description
Mode
Supervisor Processor
Functional Processor
Detector
Bootloader
Running bootloader software.
Vdd regulator at 2.5 V
Clock at 6 MHz
Polling communication
Powered Off
Powered Off
Idle
Running application software
Vdd regulator at 2.1 V
Clock at 48 MHz
Interrupt driven
Processing
Powered On
Clock at 480 MHz
Busy processing star data
Powered On
Pixel clock at 85 MHz
Application
Powered On
Clock at 96 MHz
Polling for NSP messages
Running code from DRAM, copied from NAND image
Powered On
Held in reset, unclocked
Maintenance
Powered On
Clock at 96 MHz
Polling for NSP messages
Running code from SRAM, copied from boot image or sent from supervisor
The table above shows the configuration of the major hardware elements in the different modes.
Self-Test Sequence
The star tracker can be commanded to run a self test sequence. It will run through the following steps:
1. Turn on the main power switch. Log analog telemetry. Wait 1 second.
2. Turn on the +1.8 V Vdd IO rail. Log analog telemetry. Wait 1 second.
3. Turn on the +2.8 V detector rail. Log analog telemetry. Wait 1 second.
4. Turn on the Vdd core rail. Log analog telemetry. Wait 1 second.
5. Turn on the Vdd MPU rail. Log analog telemetry. Wait 1 second.
6. Release the functional processor reset signal. Log analog telemetry.
7. Boot the functional processor. Switch to full speed. Put the power supplies into default state. Log analog telemetry. Wait 1 second.
8. Command the Vdd MPU rail up to its maximum voltage. Log analog telemetry. Wait 2 seconds.
9. Command the Vdd MPU rail to its default. Command the Vdd core rail to its maximum voltage. Log analog telemetry. Wait 2 seconds.
10. Comand the Vdd core rail to its default. Command the Vdd IO rail to its maximum voltage. Log analog telemetry. Wait 2 seconds.
11. Command Vdd IO rail to its default. Engage Smart Reflex dynamic voltage adjustment. Configure the detector for a diagonal test pattern and read one image. Log analog telemetry.
12. Read second image. Wait 1 second. Compare the images to the predicted test pattern, and to each other. Log analog telemetry.
13. Configure the detector with its operational settings and read two images. Return hardware health telemetry. Log analog telemetry. Wait 1 second.
14. Compute image statistics on dark columns. Log analog telemetry.
15. Drop functional processor to idle speed. Wait 1 second. Log analog telemetry.
The timeout period is overridden and set to 30 seconds for the duration of the self-test. This gives the test time to complete before returning to idle mode.
Byte Order
All multi-byte values transported in the data field of NSP messages are in little-endian format. That is, the least-significant byte is stored first, and the most-significant byte is stored last.
Command Codes
Table 26: Command Codes
Command Code
Command
Mode
Bootloader
Idle
Processing
Maintenance / Application
0x00
PING
Supervisor
Supervisor
Supervisor
Supervisor + Functional
0x01
INIT
Supervisor
Supervisor
Supervisor
Supervisor + Functional
0x02
PEEK
Supervisor
Supervisor
Supervisor
Supervisor + Functional
0x03
POKE
Supervisor
Supervisor
Supervisor
Supervisor + Functional
0x04
DIAGNOSTIC
Supervisor
Supervisor
Supervisor
Supervisor
0x05
STORE
Supervisor
0x06
FLASH/CRC
Supervisor
Supervisor
Supervisor
Supervisor + Functional
0x07
READ FILE
Supervisor
Supervisor
Supervisor
0x08
WRITE FILE
Supervisor
Supervisor
Supervisor
0x09
READ EDAC
Supervisor
Supervisor
Supervisor
0x0A
WRITE EDAC
Supervisor
Supervisor
Supervisor
0x0B
GO
Supervisor
Supervisor
Supervisor
0x0C
Reserved
0x0D
READ RESULT
Supervisor
Supervisor
Supervisor
0x0E – 0x0F
Reserved
0x10
IMAGE
Functional
(Application Only)
0x11
Reserved
0x12
COMBINATION
Supervisor
Supervisor
Supervisor
0x13
TIME
Supervisor
Supervisor
Supervisor
0x14 – 0x1F
Reserved
The table above shows the command codes that can be used by the host spacecraft to communicate with the star tracker. It shows which of the star tracker processors will accept each type of command in each mode. The functional processor will only accept host commands in maintenance and application modes, and the supervisor processor supports only a limited command set in bootloader mode.
In addition to the codes shown above, there are a number of private command codes used by the star tracker’s two processors to communicate with each other. These are not documented here.
PING (0x00)
The PING command is typically used during testing to verify communications. Incoming data is ignored. The reply packet contains a human-readable text string containing:
· The type of device and the manufacturer
· The name, and compile time and date of the software that is currently running on the target processor.
Command Format
Bytes 0 – N
Zero or more bytes, ignored by the NSP module
Reply Format
Bytes 0 – N
Human-readable ASCII string. No NULL termination.
INIT (0x01)
The INIT command is used to change the operating mode of a processor. In general, and INIT with data is interpreted as an address to jump to. An init with no data is interpreted as a reset or exit command. In all cases, if a reply has been requested (“Poll” bit set to ‘1’) then the reply will be sent before the processor state is changed.
The supervisor will respond to an INIT with no data by completely resetting the device, returning to bootloader mode. If it is in bootloader mode, it will respond to an INIT with 4 bytes of data by running an Application Module at the corresponding 32-bit start address. By convention, devices will ship from the factory with the supervisor processor primary application program stored at address 0x00002000. Thus, a command of INIT 0x00002000 will start the default behaviour.
If the functional processor is in application mode, it will respond to an INIT with no data by exiting the Application Module and returning to its previous program. This is probably its bootloader (maintenance mode). If one application module is called from a second, then the INIT will return to the first application module.
The functional processor will respond to an INIT with 4 bytes of data by attempting to load an Application Module from the corresponding 32-bit page address in NAND memory. If the CRC of the module fails, NAK will be returned. Otherwise the module will be executed. By convention, devices will ship from the factory with the functional processor primary application program stored at address 0x0008000. Thus, a command of INIT 0x00008000 will start the default behaviour.
When using the INIT command to the functional processor in application mode, be sure that the second application module is compatible with the first. If both use the same DRAM resources, trouble will occur. Do not attempt to INIT to an Application Module that is already running.
Command Format
Reboot command:
No payload bytes
Application start command:
Bytes 0 – 3
32-bit integer address of program to start
Reply Format
Reboot reply:
No payload bytes
Application start reply:
Bytes 0 – 3
32-bit integer address of program to be started
PEEK (0x02)
The PEEK command is used to read the device memory. Short and long formats of this command are available for historical reasons. Short commands can be distinguished from long commands by their lengths.
The supervisor processor has no restriction on the alignment or length of a peek. The functional processor can perform only the following peeks: