Add FWU documentation

Adds documentation to describe FWU support. Gives an overall
design description and explains the platform configuration
model.

Signed-off-by: Julian Hall <julian.hall@arm.com>
Change-Id: Ib7b362ec645c7afca198f4b5138a249c17bc5056
diff --git a/docs/services/uml/FwStoreClassDiagram.puml b/docs/services/uml/FwStoreClassDiagram.puml
new file mode 100644
index 0000000..228c3db
--- /dev/null
+++ b/docs/services/uml/FwStoreClassDiagram.puml
@@ -0,0 +1,104 @@
+'-------------------------------------------------------------------------------
+' Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
+'
+' SPDX-License-Identifier: BSD-3-Clause
+'
+'-------------------------------------------------------------------------------
+
+@startuml
+
+ class fw_store
+class bank_tracker
+class metadata_manager
+class metadata_serializer
+class installer_index
+class volume_index
+class installer
+class volume
+
+class bank_tracker {
+	+accept()
+	+copy_accept()
+	+set_no_content()
+	+set_holds_content()
+	+set_holds_acceped_content()
+	+is_content()
+	+is_accepted()
+	+is_all_accepted()
+}
+
+class fw_store {
+	+synchronize()
+	+begin_install()
+	+cancel_install()
+	+finalize_install()
+	+select_installer()
+	+write_image()
+	+commit_image()
+	+notify_accepted()
+	+is_accepted()
+	+is_trial()
+	+commit_to_update()
+	+revert_to_previous()
+	+export()
+}
+
+class metadata_manager {
+	+check_and_repair()
+	+update()
+	+get_active_indices()
+	+preload_bank_tracker()
+}
+
+class metadata_serializer {
+	+serialize()
+	+size()
+	+max_size()
+	+deserialize_bank_info()
+	+deserialize_active_indices()
+}
+
+class installer_index {
+	+register()
+	+find()
+	+get()
+	+get_location_ids()
+}
+
+class installer {
+	+begin()
+	+finalize()
+	+abort()
+	+open()
+	+commit()
+	+write()
+	+enumerate()
+}
+
+class volume_index {
+	+add()
+	+find()
+}
+
+class volume {
+	+open()
+	+close()
+	+seek()
+	+size()
+	+read()
+	+write()
+	+erase()
+	+get_storage_ids()
+}
+
+fw_store -> metadata_manager
+fw_store -> bank_tracker
+fw_store -> installer_index
+fw_store -> volume_index
+metadata_manager -> metadata_serializer
+installer_index -> "*" installer
+volume_index -> "*" volume
+metadata_manager -> "2" volume
+installer ..> volume
+
+@enduml
diff --git a/docs/services/uml/UpdateAgentClassDiagram.puml b/docs/services/uml/UpdateAgentClassDiagram.puml
new file mode 100644
index 0000000..0dad627
--- /dev/null
+++ b/docs/services/uml/UpdateAgentClassDiagram.puml
@@ -0,0 +1,100 @@
+'-------------------------------------------------------------------------------
+' Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
+'
+' SPDX-License-Identifier: BSD-3-Clause
+'
+'-------------------------------------------------------------------------------
+
+@startuml
+
+class fw_directory
+class fw_inspector
+class img_dir_serializer
+class stream_manager
+class update_agent
+class fw_store
+class installer
+
+class update_agent {
+	+begin_staging()
+	+end_staging()
+	+cancel_staging()
+	+accept()
+	+select_previous()
+  	+open()
+	+commit()
+	+read_stream()
+	+write_stream()
+}
+
+class fw_directory {
+	+set_boot_info()
+	+add_image_info()
+	+find_image_info()
+	+get_image_info()
+	+num_images()
+}
+
+class fw_inspector {
+	+inspect
+}
+
+class img_dir_serializer {
+	+serialize()
+	+get_len()
+}
+
+class stream_manager {
+	+open_buffer_stream()
+	+open_install_stream()
+	+close_stream()
+	+cancel_streams()
+	+is_open_streams()
+	+read()
+	+write()
+}
+
+class fw_store {
+	+synchronize()
+	+begin_install()
+	+cancel_install()
+	+finalize_install()
+	+select_installer()
+	+write_image()
+	+commit_image()
+	+notify_accepted()
+	+is_accepted()
+	+is_trial()
+	+commit_to_update()
+	+revert_to_previous()
+	+export()
+}
+
+class installer {
+	+begin()
+	+finalize()
+	+abort()
+	+open()
+	+commit()
+	+write()
+	+enumerate()
+}
+
+class installer_index {
+	+register()
+	+find()
+	+get()
+	+get_location_ids()
+}
+
+update_agent -> fw_store
+update_agent -> fw_directory
+update_agent -> fw_inspector
+update_agent -> stream_manager
+update_agent -> img_dir_serializer
+img_dir_serializer ..> fw_directory
+fw_inspector -> installer_index
+fw_inspector ..> installer
+stream_manager ..> installer
+
+@enduml