ARM-software / psa-firmware-update-spec

The PSA Firmware Update API specification, and discussion of future versions of this API.
Other
4 stars 2 forks source link

Component identifiers #8

Open athoelke opened 2 years ago

athoelke commented 2 years ago

The proposed definition for a Component Identifier (see #4), is a value that identifies the target for a firmware image within a specific device.

Analysis

Whatever scheme is used for component identification for this API, there will need to be a mapping to the firmware identification scheme used by the Update Server and the protocol between the Server and the Client.

In earlier versions of the specification, the Image Id was a 128-bit GUID, following the pattern used by the UEFI UpdateCapsule() API.

There was no significant advantage to making the identifier globally unique, given that the update process will use the device model information to discover and validate firmware updates for the system.

The required scope of the proposal component identifier is the device, allowing the Client to target a firmware update to the appropriate Component. Typically, we expect that the mapping will be the same across all devices that are the same model/make, but may be allocated in common by a device vendor across a family of devices.

For this use, an 8-bit integer is probably sufficient. However, the values are allocated by the implementation, and are not present in data structures defined by the specification, so a wider integer type would also be a reasonable choice.

Comparison

Both TF-M and the v0.7 specification define the Image Id type as uint32_t.

Proposal

We propose to define this type as:

typedef uint8_t psa_fwu_component_t;