Open athoelke opened 9 months ago
I've updated the proposal following initial discussion, and further, detailed reading of some of the additional SUIT specifications relating to nested/dependency manifests.
Much of the text has been altered or completely rewritten - if you have read v1, it may be worthwhile reading the whole new proposal, instead of reviewing the diffs.
A second update to the proposal.
A few key open issues remain:
Version 0.4 uploaded. Revision notes:
Resolved issue: API design for handling fetching during suit-install:
psa_fwu_process()
. As there is only one envelope being installed, the client does not need to indicate what needs to be processed.psa_fwu_component_t
a 32-bit integral type. In the v1.0 API it only appears as a function parameter, so widen the type does not affect source compatibility for the API.Note also: Alternative flow is possible with one-at-a-time restriction. See the appendix in the proposal for details.
Updated to v0.5 - see commit or revision history for update notes.
v0.6: I've made an attempt to define the API. This raises a few additional issues to resolve relating to detailed API design.
Updated the proposal to v0.8:
The Open Issues remaining:
Final naming of API elements. The names seemed to have settled - but the new API psa_fwu_payload()
to retrieve the payload parameters might not be ideal yet. I have renamed the structure for payload information to psa_fwu_payload_info_t
to match the existing psa_fwu_component_info_t
.
We don't think there additional attributes for components that need to be included in the psa_fwu_component_info_t
. Specifically, we don't expect Update clients to implement a SUIT processor - the new API design is based around the processor being inside the implementation.
The psa_fwu_payload()
function (in Option C) is unusual in returning a variable length buffer, but without returning the actual length written to the buffer. The length is returned by the preceding call to psa_fwu_process()
. If we add the parameter, the API now returns this length twice (which is also slightly odd).
I have considered merging the action of the call to psa_fwu_start(payload_id, 0, 0)
into psa_fwu_payload(payload_id, ...)
, which must always follow it (maybe calling it psa_fwu_start_payload(payload_id, ...)
).
This would reduce the functions called, and does not affect the size of the API, but would make the image transfer for payloads slightly different to that for other component images, potentially reducing the ability to share code for these activities.
For now, the API reuses the same psa_fwu_start()
call for initiating payload transfer after the call to psa_fwu_payload()
.
This is a draft PR that creates an RFC proposal document, considering how to implement full support for SUIT in the Firmware Update API.
Reading the proposal is easiest by viewing the document in its branch: rfc-01-fwu-suit
Please provide feedback on the analysis, the draft proposal, and any of the currently open issues (end of the document right now); either in the PR discussion thread, or as review comments against the 'Files changed'.