System Overview

The ACU6-Pro device software consists of three parts; the User Virtual Machine (VM), the ACU6 Base System and the Hypervisor.

../_images/acu6-pro-system-architecture.png

The hypervisor is an underlying component that creates multiple virtual execution environments that are isolated from each other. In the ACU6-Pro system it is used to provide two different environments, one for the ACU6 Base System and one for the User VM. Using a hypervisor to isolated the different systems both increases safety and reliability.

The ACU6 Base System is developed by ACTIA and bundled together with the hypervisor in the System Software software bundle. The ACU6 Base System has two major functionalities, first of all manages various system services, for example cellular connectivity, CAN, and GNSS; and secondly it manages all interaction with hardware and hardware drivers in the system.

The final component is the User VM, which is the software provided by you as a customer developing for the ACU6-Pro device.

One thing to note, which affects the User VM in a profound way, the ACU6 Base System provides all interfaces to the actual hardware. These are then provided th the User VM in one of three ways:

  1. as high level interfaces provided by the System Services via the messaging system, for example digital input and output.

  2. as passed through hardware, for example for serial interfaces.

  3. as virtual hardware such as network interfaces.

System Boot

As the system comprises multiple independent software components the system boot chain is a little bit more complicated and nuanced than other less sophisticated systems.

In short the boot procedure of the ACU6-Pro performs the following steps:

  1. The ROM code internal in the processor loads certain low-level software components and perform authentication steps related to the secure boot.

  2. The bootloader is executed. It authenticates the firmware for the rest of the boot process, and also determines which of the two redundant firmware copies to boot from.

  3. The hypervisor is started, directly followed by the ACU6 Base System. The base system initializes the different hardware devices and then in parallel starts up the System Services and the User VM

Note

When the User VM is started it is not guaranteed that all system services has been started or are ready for servicing requests. This means that the code running in the User VM has to take care to properly retry any requests it sends during the startup until an expected reply is received.