44 lines
1.8 KiB
Plaintext
44 lines
1.8 KiB
Plaintext
@startuml
|
|
title A/B storage: logical areas and access responsibilities
|
|
left to right direction
|
|
skinparam shadowing false
|
|
skinparam monochrome true
|
|
|
|
actor "Installer" as installer
|
|
actor "Boot control" as boot
|
|
actor "OTA manager /\nconfirmation program" as manager
|
|
actor "Running system\nand applications" as runtime
|
|
|
|
rectangle "Device storage (logical areas, not a partition table)" {
|
|
rectangle "Shared boot components\nSeparate update and recovery method" as shared
|
|
database "Boot state\nNormal slot, trial target, attempts, confirmation" as state
|
|
rectangle "Slot A: retained system\nKernel + device tree + root filesystem" as A
|
|
rectangle "Slot B: update target\nKernel + device tree + root filesystem" as B
|
|
database "Persistent device data" as data {
|
|
rectangle "Identity and calibration\nRestricted access" as identity
|
|
rectangle "Configuration and application data\nMust support the retained version" as appdata
|
|
rectangle "OTA progress, failure blocks\nand pending reports" as progress
|
|
}
|
|
rectangle "Download and work area\nDisposable preparation files" as work
|
|
}
|
|
|
|
installer --> B : replace inactive slot
|
|
installer --> work : use temporary files
|
|
boot --> shared : execute
|
|
boot --> state : read / save before Linux starts
|
|
boot --> A : select matching components
|
|
boot --> B : select matching components
|
|
manager --> state : request trial / confirm\nthrough platform interface
|
|
manager --> progress : read / save
|
|
runtime --> appdata : read / write
|
|
runtime --> identity : authorized access only
|
|
|
|
legend bottom
|
|
A is running while B is prepared. Preserve A, boot state and device data.
|
|
Persistent device data survives replacement of either system slot.
|
|
Shared data is not rolled back by selecting A.
|
|
Both system versions must understand the recovery records they read.
|
|
Separate logical areas do not guarantee safe writes or whole-device recovery.
|
|
endlegend
|
|
@enduml
|