Skip to content

Commit 2cba948

Browse files
tomchycarlescufi
authored andcommitted
doc: Add SUIT IPUC documentation
Add extensive documentation for the SUIT In-Place Update Components. Ref: NCSDK-32516 Signed-off-by: Tomasz Chyrowicz <[email protected]>
1 parent d2ccfa1 commit 2cba948

38 files changed

+1239
-0
lines changed

CODEOWNERS

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@
9898
/doc/nrf/drivers/bme68x_iaq.rst @nrfconnect/ncs-cia-doc
9999
/doc/nrf/drivers/entropy_cc3xx.rst @nrfconnect/ncs-aegir-doc
100100
/doc/nrf/drivers/eth_rtt.rst @nrfconnect/ncs-si-muffin-doc
101+
/doc/nrf/drivers/suit_flash_ipuc.rst @nrfconnect/ncs-charon-doc
102+
/doc/nrf/drivers/images/flash_ipuc/* @nrfconnect/ncs-charon-doc
101103
/doc/nrf/drivers/hw_cc3xx.rst @nrfconnect/ncs-aegir-doc
102104
/doc/nrf/drivers/paw3212.rst @nrfconnect/ncs-si-bluebagel-doc
103105
/doc/nrf/drivers/pmw3360.rst @nrfconnect/ncs-si-bluebagel-doc
33.8 KB
Loading
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
@startuml
2+
autonumber
3+
participant suit_dfu_cache
4+
participant memory_layout
5+
participant flash_ipuc
6+
7+
--> suit_dfu_cache ++ : preinitialize()
8+
suit_dfu_cache -> memory_layout ++ : suit_memory_sdfw_update_area_info_get(&min_address, &size)
9+
deactivate memory_layout
10+
11+
suit_dfu_cache -> flash_ipuc ++ : flash_cache_ipuc_create(min_address)
12+
flash_ipuc -> flash_sdfw_cache_ipuc_dev ** : get_free_dev()
13+
flash_ipuc -> flash_ipuc ++ : read_access_check(ipuc[i].role)
14+
deactivate flash_ipuc
15+
deactivate flash_ipuc
16+
17+
suit_dfu_cache -> flash_ipuc ++ : flash_cache_ipuc_create(min_address)
18+
flash_ipuc -> flash_app_cache_ipuc_dev ** : get_free_dev()
19+
flash_ipuc -> flash_ipuc ++ : read_access_check(ipuc[i].role)
20+
deactivate flash_ipuc
21+
deactivate flash_ipuc
22+
23+
deactivate suit_dfu_cache
24+
25+
rnote over flash_ipuc
26+
Cache IPUCs are never released.
27+
end note
28+
29+
@enduml
104 KB
Loading
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
@startuml
2+
autonumber
3+
participant suit_plat_fetch
4+
participant suit_fetch_app_specific
5+
' participant suit_utils
6+
7+
participant suit_fetch_source_mgr
8+
participant suit_flash_sink
9+
participant suit_flash_sink_entry
10+
participant memory_layout
11+
participant flash_ipuc
12+
13+
--> suit_plat_fetch ++ : suit_plat_fetch(\n handle,\n uri,\n mfst_id,\n enc_info\n)
14+
15+
' suit_plat_fetch -> suit_fetch_app_specific : suit_plat_fetch_domain_specific_is_type_supported(type)
16+
suit_plat_fetch -> suit_fetch_app_specific ++ : suit_plat_fetch_domain_specific(\n handle,\n type,\n uri,\n mfst_id,\n enc_info\n)
17+
18+
opt SUIT_COMPONENT_TYPE_MEM
19+
20+
' suit_fetch_app_specific -> suit_utils : suit_plat_component_id_get(handle)
21+
' suit_fetch_app_specific -> suit_utils : suit_plat_decode_address_size(component_id)
22+
suit_fetch_app_specific -> flash_ipuc ++ : flash_component_ipuc_check(component_id)
23+
deactivate flash_ipuc
24+
25+
suit_fetch_app_specific -> flash_ipuc ++ : flash_component_ipuc_create(mfst_id, enc_info, comp_info)
26+
flash_ipuc -> flash_ipuc_dev ** : get_free_dev()
27+
deactivate flash_ipuc
28+
29+
suit_fetch_app_specific -> suit_flash_sink ++ : suit_flash_sink_is_address_supported(address)
30+
suit_flash_sink -> memory_layout ++ : suit_memory_global_address_is_in_nvm(address)
31+
memory_layout -> flash_ipuc ++ : flash_ipuc_find(address, 0)
32+
note right
33+
Returns the newly created IPUC device.
34+
end note
35+
deactivate flash_ipuc
36+
deactivate memory_layout
37+
deactivate suit_flash_sink
38+
39+
suit_fetch_app_specific -> suit_flash_sink ++ : suit_flash_sink_get(address, size)
40+
41+
suit_flash_sink -> suit_flash_sink_entry ** : new_ctx_get()
42+
suit_flash_sink -> memory_layout ++ : suit_memory_global_address_to_nvm_address(address, size)
43+
memory_layout -> flash_ipuc ++ : flash_ipuc_find(address, size)
44+
deactivate flash_ipuc
45+
deactivate memory_layout
46+
47+
suit_flash_sink -> memory_layout ++ : suit_memory_global_address_range_is_in_nvm(address, size)
48+
memory_layout -> flash_ipuc ++ : flash_ipuc_find(address, size)
49+
deactivate flash_ipuc
50+
deactivate memory_layout
51+
deactivate suit_flash_sink
52+
53+
suit_fetch_app_specific -> suit_fetch_source_mgr ++ : suit_fetch_source_stream(uri, flash_sink)
54+
suit_fetch_source_mgr -> suit_flash_sink_entry ++ : write(buf, size)
55+
note right
56+
Flash IPUC driver uses single-byte read block size
57+
to avoid memory readback in unaligned write requests.
58+
end note
59+
suit_flash_sink_entry -> flash_ipuc_dev ++ : write(offset, buf, size)
60+
deactivate flash_ipuc_dev
61+
deactivate suit_flash_sink_entry
62+
deactivate suit_fetch_source_mgr
63+
64+
suit_fetch_app_specific -> suit_flash_sink_entry ++ : flush()
65+
suit_flash_sink_entry -> flash_ipuc_dev ++ : write(offset, NULL, 0)
66+
deactivate flash_ipuc_dev
67+
deactivate suit_flash_sink_entry
68+
69+
suit_fetch_app_specific -> suit_flash_sink_entry : release()
70+
destroy suit_flash_sink_entry
71+
72+
suit_fetch_app_specific -> flash_ipuc ++ : flash_ipuc_release()
73+
flash_ipuc -> flash_ipuc_dev ++ : release()
74+
destroy flash_ipuc_dev
75+
deactivate flash_ipuc
76+
77+
end
78+
79+
deactivate suit_fetch_app_specific
80+
deactivate suit_plat_fetch
81+
82+
@enduml
18.4 KB
Loading
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
@startuml
2+
autonumber
3+
participant suitfu
4+
participant suit_dfu_cache
5+
participant flash_cache_ipuc_dev
6+
7+
--> suitfu ++ : suitfu_mgmt_suit_cache_raw_upload(id)
8+
suitfu -> suit_dfu_cache ++ : suit_dfu_cache_rw_device_info_get(id)
9+
deactivate suit_dfu_cache
10+
11+
suitfu -> flash_cache_ipuc_dev ++ : erase(ipuc_dev, size)
12+
deactivate flash_cache_ipuc_dev
13+
suitfu -> flash_cache_ipuc_dev ++ : write(ipuc_dev, offset, size)
14+
deactivate flash_cache_ipuc_dev
15+
16+
deactivate suitfu
17+
18+
rnote over flash_cache_ipuc_dev
19+
Cache IPUCs are never released.
20+
end note
21+
22+
@enduml
30.4 KB
Loading
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
@startuml
2+
autonumber
3+
participant suitfu
4+
participant suit_dfu_cache
5+
participant flash_ipuc
6+
participant flash_ipuc_dev
7+
8+
--> suitfu ++ : suitfu_mgmt_suit_cache_raw_upload(id)
9+
suitfu -> flash_ipuc ++ : flash_image_ipuc_create(id)
10+
flash_ipuc -> flash_ipuc_dev ** : get_free_dev()
11+
flash_ipuc -> devicetree ++ : << find dfu_target_id >>
12+
deactivate devicetree
13+
deactivate flash_ipuc
14+
15+
suitfu -> flash_ipuc_dev ++ : erase(ipuc_dev, size)
16+
deactivate flash_ipuc_dev
17+
18+
suitfu -> flash_ipuc_dev ++ : write(ipuc_dev, offset, size)
19+
deactivate flash_ipuc_dev
20+
21+
suitfu -> flash_ipuc ++ : flash_image_ipuc_release(ipuc_dev)
22+
23+
flash_ipuc -> flash_ipuc_dev ++ : write(ipuc_dev, 0, 0)
24+
deactivate flash_ipuc_dev
25+
26+
flash_ipuc -> flash_ipuc_dev : release()
27+
destroy flash_ipuc_dev
28+
deactivate flash_ipuc
29+
30+
deactivate suitfu
31+
32+
33+
@enduml

doc/nrf/app_dev/device_guides/nrf54h/ug_nrf54h20_suit_dfu.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@ For a list of available SUIT samples, see the :ref:`suit_samples` page.
3737
ug_nrf54h20_suit_soc_binaries
3838
ug_nrf54h20_suit_recovery
3939
ug_nrf54h20_suit_sdfw_sdrfw_update
40+
ug_nrf54h20_suit_ipuc

0 commit comments

Comments
 (0)