NvDVMS#
NvDVMS is introduced in DriveOS to support functional state and power state transition for DriveOS components.
Platform Support#
NvDVMS provides interfaces for triggering power state transitions. Internally it interact with Linux kernel interfaces to perform the required state transition.
VM State Machine#
The diagram below shows the state transitions.
Blue VM states can be pushed by the LCM Client application to NvDVMS.
Green internal VM states are required for DriveOS VM state manager internal usage. The application layer cannot push internal states to the VM state manager.
All states in the above diagram are visible to the application layer when it reads the VM state.
VM States Description#
State |
Trigger |
Description |
|---|---|---|
Init |
Power on |
The VM state during which DriveOS processes initialize. End of Init state occurs when DriveOS transitions to the InitDone state. |
InitDone |
Set by VM State Manager when DriveOS boot completes. Requested by DriveOS user application layer (via REINIT). |
The VM moves to this state when DriveOS has booted up and all its processes have initialized. All functionalities of DriveOS are available for use by the application layer. |
Suspend |
Requested by DriveOS user application layer. |
Puts the VM (and system) into Suspend to RAM state (low power state). The start of the suspend transition is marked by Suspend_Start. |
Resume |
Wake signal (timer/GPIO from MCU). |
The VM states when DriveOS is resuming from Suspend to RAM. The start of the resume transition is marked by Resume_Start. Resume state end when DRIVEOS transitions to InitDone state post completion of resume. |
Run/Operational |
Requested by the DriveOS user application layer. |
DriveOS returns error on the invocation of any INIT/DEINIT phase API/functions during operational/run state. This prevents any resource allocations/deallocations from happening in this state. |
Deinit Prepare |
Requested by DriveOS user application layer. |
Instructs DriveOS VM State Manager to prepare for the start of the application layer deinitialization. INIT/DEINIT APIs are allowed at this point as DriveOS is out of Operational State. |
DeInit |
Requested by DriveOS user application layer. |
The VM state during the process of shutdown. Terminates with the VM (and System) shutting down. |
Reinit |
Requested by DriveOS user application layer. |
With SC7 support, the system reinits from deinit prepare to reach init done. Required for runtime suspend. |