Startup Shutdown Synchronization Protocol (SSSP v1.0)¶
SSSP defines signal handling during the startup phase until all AMiRo modules are fully initialized, and during the shutdown phase so that the system turns off in a controlled and safe manner or restarts, if requested.
The complexity of the protocol is quite low and designed in a way that modules which do not implement SSSP will not compromise system operation.
Hence, only two signals are required:
S
- synchronizePD
- power down
Both must be designed in a way, that they realize a logical OR on activation (one or more nodes are active) and a logical AND on deactivation (all nodes are inactive) respectively.
Electrically this can be implemented using active-low open-drain signals with pull-up resistors.
Startup Phase¶
All modules must initialize the signals in a way, that S
is active and PD
is inactive.
Although only S
is used for startup, PD
must be inactive during the startup phase, or the shutdown phase will be initiated either immediately by the bootloader or by the operating system as soon as it is active.
Each module executes the following steps:
- basic initialization
- initialization of required signals, voltages, or other hardware
When a module has finished this stage, it setsS
to inactive.
In order to prevent erroneous behavior due to incorrect signals during the initialization, this stage takes at least one millisecond. - waiting for synchronization
Each module waits forS
to become inactive (all modules are initialized) as a first synchronization. - synchronous start of stage 2
As soon asS
is inactive, the master node activates it again in order to start the next stage.
To ensure that each module had enough time to detect the inactive state ofS
, the master node must delay the activation by at least one millisecond.
- initialization of required signals, voltages, or other hardware
- operating system initialization
- complete system startup
Each module activatesS
again and fully initializes (e.g. starts the operating system).
As soon as it is ready, it deactivatesS
again.
When a module indicates to be ready, at least the main communication channel (for AMiRo this is CAN) must be fully operational.
Again,S
must be active for at least one millisecond, so every module can detect the activation. - waiting for synchronization
Each module waits forS
to become inactive (all modules are ready).
Only now it is safe to use the main communication channel and all modules are able to receive messages correctly.
- complete system startup
At the end of the startup phase both signals, S
and PD
, are inactive.
Note that a module, which does not implement the protocol, will not interfere and cause no errors as long as it does not activate S
.
However, such a module might cause errors after the startup phase, if it does not receive crucial information because communication is not set up.
Shutdown Phase¶
Since the two signals S
and PD
must not be used during system operation, both are defined to be inactive.
Any module can initiate the shutdown phase by activation of PD
.
All modules (including the initiating one) must then execute the following steps as soon as the activation of PD
is detected:
- shutdown of high-level operation
- initiation of module shutdown
As soon as the activation ofPD
is detected, each module activatesS
.
The module, which initiated system shutdown by activatingPD
has to activateS
as well, of course. - shutdown of high-level operation (e.g. the operating system)
Each module stops all computation in a safe manner, so it can be shut down without data loss or other issues.
As soon as this is done, it deactivatesS
.
In order to ensure that every module had a chance to detect the activation ofPD
, this step must take at least one millisecond. - waiting for synchronization
Each module waits forS
to become inactive (all modules are done).
- initiation of module shutdown
- system shutdown or restart
- evaluation of
PD
signal
WhenS
becomes inactive, the state ofPD
indicates whether the system shall shut down or restart.
Hence, the initiating module, which activatedPD
, must have set it to the according state before it deactivatedS
.
The implication of thePD
state at this point is defined as follows:- active: A system shutdown is requested.
- inactive: A system restart is requested.
- final shutdown or restart
Depending on the evaluation ofPD
, each module reacts accordingly.- shutdown
Each module completely stops itself and enters low-power mode. - restart
If a restart was requested, each module starts with the first step of the startup phase.
In order to minimize risk of errors, all modules can power off, except for a master node, which resets the whole system and forces a clean startup.
- shutdown
- evaluation of
Again, a module which does not implement the protocol will cause no errors as long as it does not activate S
or PD
.
However, if such a module has its own power supply and does not enter low-power mode, it will unnecessarily draw energy and might not end up in a defined state as the rest of the system.