diff --git a/meta-arm-bsp/documentation/corstone1000-a320/topics/tests.md b/meta-arm-bsp/documentation/corstone1000-a320/topics/tests.md index 90cd87c5..c22ff6db 100644 --- a/meta-arm-bsp/documentation/corstone1000-a320/topics/tests.md +++ b/meta-arm-bsp/documentation/corstone1000-a320/topics/tests.md @@ -192,20 +192,11 @@ The following payloads can be individually updated: ### Generate capsules {.reference} -[EDK II's]($edk2_repository) `GenerateCapsule` tool is used to generate capsules and is built automatically -for the host machine during the firmware image building process. -The tool can be found at `${WORKSPACE}/build/tmp/sysroots-components/aarch64/edk2-basetools-native/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule`. +Capsules are generated by running the `image_uefi_capsule` task for +`corstone1000-flash-firmware-image`. The task uses EDK II's `GenerateCapsule` +tool and creates the capsule metadata JSON automatically from the recipe settings. -:::note -The `aarch64` part of this path depends on the build host architecture -and can be different on another host. -::: - -A JSON file containing metadata about the capsule payloads needs to be created using the script -found at `${WORKSPACE}/meta-arm/meta-arm/scripts/generate_capsule_json_multiple.py`. -This JSON file is required by EDK II's `GenerateCapsule` tool to generate the capsule. - -The capsule's default metadata passed can be found in the `${WORKSPACE}/meta-arm/meta-arm-bsp/recipes-bsp/images/corstone1000-flash-firmware-image.bb` +The capsule's default metadata can be found in the `${WORKSPACE}/meta-arm/meta-arm-bsp/recipes-bsp/images/corstone1000-flash-firmware-image.bb` and `${WORKSPACE}/meta-arm/kas/corstone1000-image-configuration.yml` files. #### Valid full capsule {.reference} @@ -222,116 +213,39 @@ To generate a capsule that updates only a single component, explicitly set the f The partial capsule is also valid, but sets the firmware version to 7 only for the BL2 component, indicating that no other components should be updated. -Use the following commands to generate the `capsule_config.json` file, which is required by the EDK2 tool for capsule creation: - -``` -cd ${WORKSPACE} - -python3 meta-arm/meta-arm/scripts/generate_capsule_json_multiple.py \ ---selected_components DUMMY_START BL2 DUMMY_END \ ---components DUMMY_START BL2 TFM_S FIP INITRAMFS DUMMY_END \ ---fw_versions 0 7 0 0 0 0 \ ---guids \ -6f784cbf-7938-5c23-8d6e-24d2f1410fa9 \ -${BL2_GUID} ${TFM_S_GUID} ${FIP_GUID} ${INITRAMFS_GUID} \ -b57e432b-a250-5c73-93e3-90205e64baba \ ---hardware_instances 1 1 1 1 1 1 \ ---lowest_supported_versions 5 5 5 5 5 5 \ ---monotonic_counts 1 1 1 1 1 1 \ ---payloads \ -build/tmp/work/corstone1000_a320_fvp-poky-linux-musl/corstone1000-flash-firmware-image/1.0/sources/corstone1000-flash-firmware-image-1.0/dummy.bin \ -build/tmp/deploy/images/corstone1000-a320-fvp/trusted-firmware-m/bl2_signed.bin \ -build/tmp/deploy/images/corstone1000-a320-fvp/trusted-firmware-m/tfm_s_signed.bin \ -build/tmp/deploy/images/corstone1000-a320-fvp/signed_fip.bin \ -build/tmp/deploy/images/corstone1000-a320-fvp/Image.gz-initramfs-corstone1000-a320-fvp.bin \ -build/tmp/work/corstone1000_a320_fvp-poky-linux-musl/corstone1000-flash-firmware-image/1.0/sources/corstone1000-flash-firmware-image-1.0/dummy.bin \ ---update_image_indexes 5 1 2 3 4 6 \ ---private_keys \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ ---certificates \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ ---output capsule_config.json -``` - Run the command below to generate the partial capsule: ``` -./build/tmp/sysroots-components/aarch64/edk2-basetools-native/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule \ --e \ --j capsule_config.json \ ---capflag PersistAcrossReset \ --o corstone1000-a320-fvp-partial-v7.uefi.capsule +cd ${WORKSPACE} +kas shell meta-arm/kas/corstone1000-a320-fvp.yml:meta-arm/ci/debug.yml -c ' + echo "CAPSULE_VERSION = \"7\"" >> conf/local.conf + echo "CAPSULE_LOWEST_SUPPORTED_VERSION = \"7\"" >> conf/local.conf + echo "CAPSULE_SELECTED_COMPONENTS = \"BL2\"" >> conf/local.conf + bitbake corstone1000-flash-firmware-image -c image_uefi_capsule +' ``` -The partial capsule will be located in the `${WORKSPACE}` directory. +The partial capsule will be located at +`${WORKSPACE}/build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000-a320-fvp-v7.uefi.capsule`. -#### Invalid capsule {.reference} +#### Rollback capsule {.reference} Generate a capsule with firmware version metadata for all payloads set lower than that of a valid capsule. The valid capsule has a default firmware version of 6 for all payloads, while the simulated invalid capsule has the firmware version set to 5 for all payloads. -Use the following commands to generate the `capsule_config.json` file, which is required by the EDK2 tool for capsule creation: +Run the command below to generate the rollback capsule: ``` cd ${WORKSPACE} - -python3 meta-arm/meta-arm/scripts/generate_capsule_json_multiple.py \ ---selected_components DUMMY_START BL2 TFM_S FIP INITRAMFS DUMMY_END \ ---components DUMMY_START BL2 TFM_S FIP INITRAMFS DUMMY_END \ ---fw_versions 5 5 5 5 5 5 \ ---guids \ -6f784cbf-7938-5c23-8d6e-24d2f1410fa9 \ -${BL2_GUID} ${TFM_S_GUID} ${FIP_GUID} ${INITRAMFS_GUID} \ -b57e432b-a250-5c73-93e3-90205e64baba \ ---hardware_instances 1 1 1 1 1 1 \ ---lowest_supported_versions 5 5 5 5 5 5 \ ---monotonic_counts 1 1 1 1 1 1 \ ---payloads \ -build/tmp/work/corstone1000_a320_fvp-poky-linux-musl/corstone1000-flash-firmware-image/1.0/sources/corstone1000-flash-firmware-image-1.0/dummy.bin \ -build/tmp/deploy/images/corstone1000-a320-fvp/trusted-firmware-m/bl2_signed.bin \ -build/tmp/deploy/images/corstone1000-a320-fvp/trusted-firmware-m/tfm_s_signed.bin \ -build/tmp/deploy/images/corstone1000-a320-fvp/signed_fip.bin \ -build/tmp/deploy/images/corstone1000-a320-fvp/Image.gz-initramfs-corstone1000-a320-fvp.bin \ -build/tmp/work/corstone1000_a320_fvp-poky-linux-musl/corstone1000-flash-firmware-image/1.0/sources/corstone1000-flash-firmware-image-1.0/dummy.bin \ ---update_image_indexes 5 1 2 3 4 6 \ ---private_keys \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_key.key \ ---certificates \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ -build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000_capsule_cert.crt \ ---output capsule_config.json +kas shell meta-arm/kas/corstone1000-a320-fvp.yml:meta-arm/ci/debug.yml -c ' + echo "CAPSULE_VERSION = \"5\"" >> conf/local.conf + echo "CAPSULE_LOWEST_SUPPORTED_VERSION = \"5\"" >> conf/local.conf + bitbake corstone1000-flash-firmware-image -c image_uefi_capsule +' ``` -Run the command below to generate the invalid capsule: - -``` -./build/tmp/sysroots-components/aarch64/edk2-basetools-native/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule \ --e \ --j capsule_config.json \ ---capflag PersistAcrossReset \ --o corstone1000-a320-fvp-v5.uefi.capsule -``` - -The invalid capsule will be located in the `${WORKSPACE}` directory. +The rollback capsule will be located at +`${WORKSPACE}/build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000-a320-fvp-v5.uefi.capsule`. ### Transfer capsules to target {.reference} @@ -369,8 +283,8 @@ as opposed to the on-disk method (delivery of capsules using a file on a mass st ``` sudo cp ${WORKSPACE}/build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000-a320-fvp-v6.uefi.capsule /mnt/ir-acs-live-image-generic-arm64/ - sudo cp ${WORKSPACE}/corstone1000-a320-fvp-v5.uefi.capsule /mnt/ir-acs-live-image-generic-arm64/ - sudo cp ${WORKSPACE}/corstone1000-a320-fvp-partial-v7.uefi.capsule /mnt/ir-acs-live-image-generic-arm64/ + sudo cp ${WORKSPACE}/build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000-a320-fvp-v5.uefi.capsule /mnt/ir-acs-live-image-generic-arm64/ + sudo cp ${WORKSPACE}/build/tmp/deploy/images/corstone1000-a320-fvp/corstone1000-a320-fvp-v7.uefi.capsule /mnt/ir-acs-live-image-generic-arm64/ sync ``` @@ -401,7 +315,7 @@ To run the test: cd ${WORKSPACE} && tmux ``` - 2. Run the FVP within `tmux` with the IR prebuilt image which now also contains the two capsules: + 2. Run the FVP within `tmux` with the IR prebuilt image which now also contains the three capsules: ``` kas shell meta-arm/kas/corstone1000-a320-fvp.yml:meta-arm/ci/debug.yml \ @@ -526,7 +440,7 @@ Do not terminate FVP between the positive full capsule update and partial capsul #### Positive partial capsule update {.reference} -Follow the steps for the [Positive full capsule update test], ensuring you use `corstone1000-a320-fvp-partial-v7.uefi.capsule` instead of `corstone1000-a320-fvp-v6.uefi.capsule`. +Follow the steps for the [Positive full capsule update test], ensuring you use `corstone1000-a320-fvp-v7.uefi.capsule` instead of `corstone1000-a320-fvp-v6.uefi.capsule`. Once the system has fully booted again, read [Verifying firmware versions with ESRT] to confirm that the firmware version reflects the updated capsule. diff --git a/meta-arm-bsp/documentation/corstone1000/user-guide.rst b/meta-arm-bsp/documentation/corstone1000/user-guide.rst index 72dd37b8..36c6ae35 100644 --- a/meta-arm-bsp/documentation/corstone1000/user-guide.rst +++ b/meta-arm-bsp/documentation/corstone1000/user-guide.rst @@ -942,20 +942,11 @@ The following payloads can be individually updated: Generate Capsules ***************** -`EDK II's `__ ``GenerateCapsule`` tool is used to generate capsules and is built automatically -for the host machine during the firmware image building process. -The tool can be found at ``${WORKSPACE}/build/tmp/sysroots-components/aarch64/edk2-basetools-native/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule``. +Capsules are generated by running the ``image_uefi_capsule`` task for +``corstone1000-flash-firmware-image``. The task uses EDK II's ``GenerateCapsule`` +tool and creates the capsule metadata JSON automatically from the recipe settings. -.. note:: - - The ``aarch64`` part of this path depends on the build host architecture - and can be different on another host. - -A JSON file containing metadata about the capsule payloads needs to be created using the script -found at ``${WORKSPACE}/meta-arm/meta-arm/scripts/generate_capsule_json_multiple.py``. -This JSON file is required by EDK II's ``GenerateCapsule`` tool to generate the capsule. - -The capsule's default metadata passed can be found in the ``${WORKSPACE}/meta-arm/meta-arm-bsp/recipes-bsp/images/corstone1000-flash-firmware-image.bb`` +The capsule's default metadata can be found in the ``${WORKSPACE}/meta-arm/meta-arm-bsp/recipes-bsp/images/corstone1000-flash-firmware-image.bb`` and ``${WORKSPACE}/meta-arm/kas/corstone1000-image-configuration.yml`` files. Valid Full Capsule @@ -974,118 +965,40 @@ To generate a capsule that updates only a single component, explicitly set the f The **partial capsule** is also valid, but sets the firmware version to **7** **only** for the **BL2** component, indicating that no other components should be updated. -Use the following commands to generate the `capsule_config.json` file, which is required by the EDK2 tool for capsule creation: - -.. code-block:: console - - cd ${WORKSPACE} - - python3 meta-arm/meta-arm/scripts/generate_capsule_json_multiple.py \ - --selected_components DUMMY_START BL2 DUMMY_END \ - --components DUMMY_START BL2 TFM_S FIP INITRAMFS DUMMY_END \ - --fw_versions 0 7 0 0 0 0 \ - --guids \ - 6f784cbf-7938-5c23-8d6e-24d2f1410fa9 \ - ${BL2_GUID} ${TFM_S_GUID} ${FIP_GUID} ${INITRAMFS_GUID} \ - b57e432b-a250-5c73-93e3-90205e64baba \ - --hardware_instances 1 1 1 1 1 1 \ - --lowest_supported_versions 5 5 5 5 5 5 \ - --monotonic_counts 1 1 1 1 1 1 \ - --payloads \ - build/tmp/work/corstone1000_${TARGET}-poky-linux-musl/corstone1000-flash-firmware-image/1.0/sources/corstone1000-flash-firmware-image-1.0/dummy.bin \ - build/tmp/deploy/images/corstone1000-${TARGET}/trusted-firmware-m/bl2_signed.bin \ - build/tmp/deploy/images/corstone1000-${TARGET}/trusted-firmware-m/tfm_s_signed.bin \ - build/tmp/deploy/images/corstone1000-${TARGET}/signed_fip.bin \ - build/tmp/deploy/images/corstone1000-${TARGET}/Image.gz-initramfs-corstone1000-${TARGET}.bin \ - build/tmp/work/corstone1000_${TARGET}-poky-linux-musl/corstone1000-flash-firmware-image/1.0/sources/corstone1000-flash-firmware-image-1.0/dummy.bin \ - --update_image_indexes 5 1 2 3 4 6 \ - --private_keys \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - --certificates \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - --output capsule_config.json - Run the command below to generate the partial capsule: .. code-block:: console - ./build/tmp/sysroots-components/aarch64/edk2-basetools-native/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule \ - -e \ - -j capsule_config.json \ - --capflag PersistAcrossReset \ - -o corstone1000-${TARGET}-partial-v7.uefi.capsule + cd ${WORKSPACE} + kas shell meta-arm/kas/corstone1000-${TARGET}.yml:meta-arm/ci/debug.yml -c ' + echo "CAPSULE_VERSION = \"7\"" >> conf/local.conf + echo "CAPSULE_LOWEST_SUPPORTED_VERSION = \"7\"" >> conf/local.conf + echo "CAPSULE_SELECTED_COMPONENTS = \"BL2\"" >> conf/local.conf + bitbake corstone1000-flash-firmware-image -c image_uefi_capsule + ' -The partial capsule will be located in the ``${WORKSPACE}`` directory. +The partial capsule will be located at +``${WORKSPACE}/build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000-${TARGET}-v7.uefi.capsule``. -Invalid Capsule -=============== +Rollback Capsule +================ Generate a capsule with firmware version metadata for all payloads set lower than that of a valid capsule. The valid capsule has a default firmware version of 6 for all payloads, while the simulated invalid capsule has the firmware version set to 5 for all payloads. -Use the following commands to generate the `capsule_config.json` file, which is required by the EDK2 tool for capsule creation: +Run the command below to generate the rollback capsule: .. code-block:: console cd ${WORKSPACE} + kas shell meta-arm/kas/corstone1000-${TARGET}.yml:meta-arm/ci/debug.yml -c ' + echo "CAPSULE_VERSION = \"5\"" >> conf/local.conf + echo "CAPSULE_LOWEST_SUPPORTED_VERSION = \"5\"" >> conf/local.conf + bitbake corstone1000-flash-firmware-image -c image_uefi_capsule + ' - python3 meta-arm/meta-arm/scripts/generate_capsule_json_multiple.py \ - --selected_components DUMMY_START BL2 TFM_S FIP INITRAMFS DUMMY_END \ - --components DUMMY_START BL2 TFM_S FIP INITRAMFS DUMMY_END \ - --fw_versions 5 5 5 5 5 5 \ - --guids \ - 6f784cbf-7938-5c23-8d6e-24d2f1410fa9 \ - ${BL2_GUID} ${TFM_S_GUID} ${FIP_GUID} ${INITRAMFS_GUID} \ - b57e432b-a250-5c73-93e3-90205e64baba \ - --hardware_instances 1 1 1 1 1 1 \ - --lowest_supported_versions 5 5 5 5 5 5 \ - --monotonic_counts 1 1 1 1 1 1 \ - --payloads \ - build/tmp/work/corstone1000_${TARGET}-poky-linux-musl/corstone1000-flash-firmware-image/1.0/sources/corstone1000-flash-firmware-image-1.0/dummy.bin \ - build/tmp/deploy/images/corstone1000-${TARGET}/trusted-firmware-m/bl2_signed.bin \ - build/tmp/deploy/images/corstone1000-${TARGET}/trusted-firmware-m/tfm_s_signed.bin \ - build/tmp/deploy/images/corstone1000-${TARGET}/signed_fip.bin \ - build/tmp/deploy/images/corstone1000-${TARGET}/Image.gz-initramfs-corstone1000-${TARGET}.bin \ - build/tmp/work/corstone1000_${TARGET}-poky-linux-musl/corstone1000-flash-firmware-image/1.0/sources/corstone1000-flash-firmware-image-1.0/dummy.bin \ - --update_image_indexes 5 1 2 3 4 6 \ - --private_keys \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_key.key \ - --certificates \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000_capsule_cert.crt \ - --output capsule_config.json - - -Run the command below to generate the invalid capsule: - -.. code-block:: console - - ./build/tmp/sysroots-components/aarch64/edk2-basetools-native/usr/bin/edk2-BaseTools/BinWrappers/PosixLike/GenerateCapsule \ - -e \ - -j capsule_config.json \ - --capflag PersistAcrossReset \ - -o corstone1000-${TARGET}-v5.uefi.capsule - -The invalid capsule will be located in the ``${WORKSPACE}`` directory. +The rollback capsule will be located at +``${WORKSPACE}/build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000-${TARGET}-v5.uefi.capsule``. *************************** Transfer Capsules to Target @@ -1094,20 +1007,6 @@ Transfer Capsules to Target The capsule delivery process described below is the direct method (usage of capsules from the ACS image) as opposed to the on-disk method (delivery of capsules using a file on a mass storage device). -MPS3 -==== - -#. Prepare a USB drive as explained in `this `_ section. - -#. Copy the capsule files to the root directory of the ``BOOT`` partition in the USB drive. - - .. code-block:: console - - cp ${WORKSPACE}/build/tmp/deploy/images/corstone1000-mps3/corstone1000-mps3-v6.uefi.capsule /dev/sdc/BOOT/ - cp ${WORKSPACE}/corstone1000-mps3-v5.uefi.capsule /dev/sdc/EFI/BOOT/ - cp ${WORKSPACE}/corstone1000-mps3-partial-v7.uefi.capsule /dev/sdc/EFI/BOOT/ - sync - .. note:: The staging steps below are shared between ``mps3`` and ``fvp``. @@ -1134,10 +1033,10 @@ MPS3 cd ${WORKSPACE} wic cp ${WORKSPACE}/build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000-${TARGET}-v6.uefi.capsule \ ${ACS_STAGED_IMAGE}:1/corstone1000-${TARGET}-v6.uefi.capsule - wic cp ${WORKSPACE}/corstone1000-${TARGET}-v5.uefi.capsule \ + wic cp ${WORKSPACE}/build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000-${TARGET}-v5.uefi.capsule \ ${ACS_STAGED_IMAGE}:1/corstone1000-${TARGET}-v5.uefi.capsule - wic cp ${WORKSPACE}/corstone1000-${TARGET}-partial-v7.uefi.capsule \ - ${ACS_STAGED_IMAGE}:1/corstone1000-${TARGET}-partial-v7.uefi.capsule + wic cp ${WORKSPACE}/build/tmp/deploy/images/corstone1000-${TARGET}/corstone1000-${TARGET}-v7.uefi.capsule \ + ${ACS_STAGED_IMAGE}:1/corstone1000-${TARGET}-v7.uefi.capsule .. important:: @@ -1145,7 +1044,7 @@ MPS3 as doing so might inadvertently trigger the on-disk update method. MPS3 -=== +==== #. Write ``${ACS_STAGED_IMAGE}`` to the ACS USB drive by following the `MPS3 ACS image steps `_ and replacing @@ -1173,7 +1072,7 @@ Positive Full Capsule Update Test - MPS3: - #. Plug the prepared USB drive which has the IR prebuilt image and two capsules to the MPS3. + #. Plug the prepared USB drive which has the IR prebuilt image and three capsules to the MPS3. #. Power cycle the MPS3. - FVP: @@ -1184,7 +1083,7 @@ Positive Full Capsule Update Test cd ${WORKSPACE} && tmux - #. Run the FVP within ``tmux`` with the IR prebuilt image which now also contains the two capsules: + #. Run the FVP within ``tmux`` with the IR prebuilt image which now also contains the three capsules: .. code-block:: console @@ -1329,7 +1228,7 @@ Positive Partial Capsule Update Test ==================================== Follow the steps for the `positive full capsule update test `__ ensuring you use -``corstone1000-${TARGET}-partial-v7.uefi.capsule`` instead of ``corstone1000-${TARGET}-v6.uefi.capsule``. +``corstone1000-${TARGET}-v7.uefi.capsule`` instead of ``corstone1000-${TARGET}-v6.uefi.capsule``. Once the system has fully booted again, `read the ESRT `__ to confirm that the firmware version reflects the updated capsule.