From 5114e4c7c255ebf37b510272c6365c53895dd2ce Mon Sep 17 00:00:00 2001 From: Chun-Chieh Li Date: Tue, 13 Jul 2021 10:48:19 +0800 Subject: [PATCH] M2354: Support PSA Firmware Update 1. Change from single image boot to multiple image boot 2. SDH is configured to Secure for placing update firmware. It becomes inaccessible to Mbed. 3. Post-build script supports both multiple image boot and single image boot 4. Update readme to reflect above change 5. Increase forced_reset_timeout due to longer booting time for Greentea test --- .../COMPONENT_TFM_S_FW/CMakeLists.txt | 29 ++- .../COMPONENT_TFM_S_FW/README.md | 75 ++++-- .../COMPONENT_TFM_S_FW/bl2.bin | Bin 28600 -> 39048 bytes .../partition/flash_layout.h | 156 ++++++++++-- .../partition/region_defs.h | 3 +- ...sed.h => signing_layout_ns_preprocessed.h} | 2 +- .../partition/signing_layout_s_preprocessed.h | 25 ++ .../nuvoton_m2354-root-rsa-3072.md | 2 +- .../nuvoton_m2354-root-rsa-3072.pem | 2 +- .../nuvoton_m2354-root-rsa-3072_1.pem | 39 +++ .../COMPONENT_TFM_S_FW/tfm_s.bin | Bin 323872 -> 323872 bytes .../TARGET_M2354/device/partition_M2354_mem.h | 16 +- .../device/partition_M2354_mem.icf.h | 4 +- targets/TARGET_NUVOTON/scripts/NUVOTON.py | 226 +++++++++++++----- .../scripts/mbed_set_post_build_nuvoton.cmake | 45 +++- targets/targets.json | 2 +- tools/targets/NU_M2354.py | 207 +++++++++++----- tools/targets/nuvoton_m2354-root-rsa-3072.md | 2 +- tools/targets/nuvoton_m2354-root-rsa-3072.pem | 2 +- .../targets/nuvoton_m2354-root-rsa-3072_1.pem | 39 +++ 20 files changed, 676 insertions(+), 200 deletions(-) rename targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/{signing_layout_preprocessed.h => signing_layout_ns_preprocessed.h} (94%) create mode 100644 targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_s_preprocessed.h create mode 100644 targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072_1.pem create mode 100644 tools/targets/nuvoton_m2354-root-rsa-3072_1.pem diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/CMakeLists.txt b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/CMakeLists.txt index 03127cc5a5d..c0b473132b3 100644 --- a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/CMakeLists.txt +++ b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/CMakeLists.txt @@ -8,15 +8,28 @@ target_link_libraries(mbed-m2354-tfm ${CMAKE_CURRENT_SOURCE_DIR}/s_veneers.o ) -mbed_post_build_nuvoton_tfm_sign_image_tgt( - NU_M2354 - ${CMAKE_CURRENT_SOURCE_DIR} - nuvoton_m2354-root-rsa-3072.pem -) - +# Must align with TF-M import assets set(bl2 true) -set(mcuboot_image_number 1) +set(mcuboot_image_number 2) set(region_defs_h_path "${CMAKE_CURRENT_SOURCE_DIR}/partition/region_defs.h") +set(update_stage_sdh true) +set(update_stage_flash false) + +if(mcuboot_image_number EQUAL 2) + mbed_post_build_nuvoton_tfm_sign_image( + NU_M2354 + ${CMAKE_CURRENT_SOURCE_DIR} + nuvoton_m2354-root-rsa-3072.pem + nuvoton_m2354-root-rsa-3072_1.pem + ) +else() + mbed_post_build_nuvoton_tfm_sign_image( + NU_M2354 + ${CMAKE_CURRENT_SOURCE_DIR} + nuvoton_m2354-root-rsa-3072.pem + NOTFOUND + ) +endif() target_compile_definitions(mbed-m2354-tfm INTERFACE @@ -24,4 +37,6 @@ target_compile_definitions(mbed-m2354-tfm NU_TFM_S_MCUBOOT_IMAGE_NUMBER=${mcuboot_image_number} # TODO: Fix escape sequence in NU_TFM_S_REGION_DEFS_H_PATH #NU_TFM_S_REGION_DEFS_H_PATH=\"${region_defs_h_path}\" + NU_TFM_S_UPDATE_STAGE_SDH=$,1,0> + NU_TFM_S_UPDATE_STAGE_FLASH=$,1,0> ) diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/README.md b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/README.md index ba0f1507d91..542bd75b445 100644 --- a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/README.md +++ b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/README.md @@ -1,16 +1,16 @@ -# Rebuild TF-M and integrate with Mbed on M2354 +# Rebuild TF-M and integrate with Mbed for M2354 -This document guides how to rebuild TF-M and integrate with Mbed on M2354. +This document guides how to rebuild TF-M and integrate with Mbed for M2354. ### Downloading TF-M source The M2354 port in TF-M must patch to enable TF-M integration with Mbed. -For TF-M 1.3/Mbed integration on M2354, the [mainstream TF-M](https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git) is patched as follows: +For TF-M 1.3/Mbed integration for M2354, the [mainstream TF-M](https://git.trustedfirmware.org/TF-M/trusted-firmware-m.git) is patched as follows: - Apply Mbed-enabled patch to `nuvoton/m2354` TF-M target. Run the following command to fetch and switch to the intended version: -```sh -git clone https://github.com/OpenNuvoton/trusted-firmware-m -b nuvoton_mbed_m2354_tfm-1.3 +``` +$ git clone https://github.com/OpenNuvoton/trusted-firmware-m -b nuvoton_mbed_m2354_tfm-1.3 ``` ## Customizing TF-M @@ -36,6 +36,7 @@ In TF-M, by default, the M2354 hardware is partitioned as follows: - **PDMA1**: Configured to nonsecure for Mbed asynchronous transfer. - **CRYPTO**: Configured to secure. Inaccessible to Mbed. - **TRNG**: Hardwired to secure. Accessible to Mbed indirectly through PSA Cryptography API. + - **SDH**: Configured to secure to enable PSA Firmware Update. Inaccessible to Mbed. ### Defining Flash for TF-M/Mbed @@ -75,14 +76,22 @@ To define memory spec of SRAM for TF-M/Mbed, search/change the line: Navigate [TF-M](https://www.trustedfirmware.org/projects/tf-m/). Then go through **DOCS** → **Getting Started Guides** → **Software requirements** for TF-M build environment setup. +**NOTE**: **GNU Arm Embedded Toolchain 9 2020-q2-update** and earlier built code **FAILS** to run with `-Os`. Avoid these toolchain versions. Check [their bug report](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95646). + **NOTE**: **GNU Arm Embedded Toolchain 10-2020-q4-major** built code **FAILS** to run. Avoid this toolchain version. Check [its bug report](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99157). -### Compile +### Default relevant build configurations + +- Enabled BL2 (MCUboot) +- Enabled multiple image boot +- Enabled SDH (SD card) as update staging area for PSA Firmware Update + +### Compiling -To compile TF-M on M2354, run: +To compile TF-M for M2354, run: -```sh -cmake -S . \ +``` +$ cmake -S . \ -B cmake_build \ -DTFM_PLATFORM=nuvoton/m2354 \ -DTFM_TOOLCHAIN_FILE=toolchain_GNUARM.cmake \ @@ -93,8 +102,8 @@ cmake -S . \ Then: -```sh -cmake --build cmake_build -- install +``` +$ cmake --build cmake_build -- install ``` ## Integrating with Mbed @@ -111,21 +120,41 @@ The following TF-M exported stuffs must update into Mbed: - partition/: Flash layout for image signing and concatenating in post-build process - **NOTE**: On import, `signing_layout_s_ns.o` is renamed to `signing_layout_preprocessed.h` for the following reasons: - - Post-build script checks file name with `_s`/`_ns` to resolve `sw_type` as `SPE`/`NSPE` respectively. - To recognize as `NSPE_SPE`, don't use `_s_ns`/`_ns_s` file name to avoid mis-recognized. - - Use `.h` instead of `.c` as file extension name. - This is to enable custom TF-M build where the locatioin of this directory can change elsewhere. - In Greentea build process, `.c` file isn't but`.h` file is copied into `BUILD` directory, so that post-build script can still access the file. + **NOTE**: On import, `signing_layout_*.o` are renamed to `signing_layout_*.h`. + This is to use `.h` instead of `.c`/`.o` as file extension name and avoid adding into compile/link list. + + **NOTE**: On import for single image boot, `signing_layout_s_ns.o` is renamed to `signing_layout_preprocessed.h`. + Post-build script checks file name with `_s`/`_ns` to resolve `sw_type` as `SPE`/`NSPE` respectively. + To recognize as `NSPE_SPE`, don't use `_s_ns`/`_ns_s` file name to avoid mis-recognized. - [signing_key/](signing_key/nuvoton_m2354-root-rsa-3072.md) -Below summarizes the copy paths from TF-M into Mbed: +Below summarize the copy paths from TF-M into Mbed: -- trusted-firmware-m/cmake_build/bin/bl2.bin → bl2.bin -- trusted-firmware-m/cmake_build/install/export/tfm/lib/s_veneers.o → s_veneers.o -- trusted-firmware-m/cmake_build/bin/tfm_s.bin → tfm_s.bin +- trusted-firmware-m/cmake_build/install/outputs/NUVOTON/M2354/bl2.bin → bl2.bin +- trusted-firmware-m/cmake_build/install/outputs/NUVOTON/M2354/tfm_s.bin → tfm_s.bin +- trusted-firmware-m/cmake_build/install/interface/lib/s_veneers.o → s_veneers.o - trusted-firmware-m/platform/ext/target/nuvoton/m2354/partition/flash_layout.h → partition/flash_layout.h - trusted-firmware-m/platform/ext/target/nuvoton/m2354/partition/region_defs.h → partition/region_defs.h -- trusted-firmware-m/cmake_build/bl2/ext/mcuboot/CMakeFiles/signing_layout_s.dir/signing_layout_s_ns.o → partition/signing_layout_preprocessed.h -- trusted-firmware-m/bl2/ext/mcuboot/root-RSA-3072.pem → signing_key/nuvoton_m2354-root-rsa-3072.pem +- trusted-firmware-m/cmake_build/install/image_signing/layout_files/signing_layout_s.o → partition/signing_layout_s_preprocessed.h +- trusted-firmware-m/cmake_build/install/image_signing/layout_files/signing_layout_ns.o → partition/signing_layout_ns_preprocessed.h +- trusted-firmware-m/cmake_build/install/image_signing/keys/root-RSA-3072.pem → signing_key/nuvoton_m2354-root-rsa-3072.pem +- trusted-firmware-m/cmake_build/install/image_signing/keys/root-RSA-3072_1.pem → signing_key/nuvoton_m2354-root-rsa-3072_1.pem + +**NOTE**: `trusted-firmware-m/cmake_build/install/image_signing/keys/root-RSA-3072.pem` can be missing due to TF-M build tool issue. +Try to get it from `trusted-firmware-m/bl2/ext/mcuboot/root-RSA-3072.pem` instead if it is just the original source. + +## PSA Firmware Update + +### Requirement + +- SD card: Used for update staging area according to above TF-M build configurations. + +### Update binary files + +After finishing Mbed build, you will find the following files under build directory. +They are to write to update staging area through PSA Firmware Update API for firmware upgrade. + +- `tfm_s_update.bin`: TF-M secure binary file for update separately when multiple image boot is enabled +- `_update.bin`: Mbed non-secure binary file for update separately when multiple image boot is enabled or + combined TF-M secure+Mbed non-secure binary file for update together when single image boot is enabled diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/bl2.bin b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/bl2.bin index a80002a1625f2174f05196d2cd5e106ced3b5dc5..336b4357d58eb912879a8a5e92565ace568d40e7 100644 GIT binary patch delta 27335 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 delta 16640 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 \ FLASH_NS_PARTITION_SIZE) ? \ FLASH_S_PARTITION_SIZE : \ @@ -50,34 +81,56 @@ /* Sector size of the flash hardware; same as FLASH0_SECTOR_SIZE */ #define FLASH_AREA_IMAGE_SECTOR_SIZE (0x800) /* 2 KB */ /* Same as FLASH0_SIZE */ -#define FLASH_TOTAL_SIZE (0x00100000) /* 512 KB */ +#define FLASH_TOTAL_SIZE (0x00100000) /* 1024 KB */ /* Flash layout info for BL2 bootloader */ /* Same as FLASH0_BASE_S */ #define FLASH_BASE_ADDRESS (0x00000000) +#if NU_UPDATE_STAGE_SDH +#define SDH_FLASH_DEVICE_ID (FLASH_DEVICE_ID + 1) +#define SDH_FLASH_DEV_NAME Driver_SDH_FLASH0 +#define SDH_FLASH_BASE_ADDRESS (0x00000000) +#endif + /* Offset and size definitions of the flash partitions that are handled by the * bootloader. The image swapping is done between IMAGE_PRIMARY and * IMAGE_SECONDARY, SCRATCH is used as a temporary storage during image * swapping. */ #define FLASH_AREA_BL2_OFFSET (0x0) -#define FLASH_AREA_BL2_SIZE (0x10000) /* 64 KB */ +#define FLASH_AREA_BL2_SIZE (0xC000) /* 48 KB */ #if !defined(MCUBOOT_IMAGE_NUMBER) || (MCUBOOT_IMAGE_NUMBER == 1) /* Secure + Non-secure image primary slot */ #define FLASH_AREA_0_ID (1) -#define FLASH_AREA_0_OFFSET (FLASH_AREA_BL2_OFFSET + FLASH_AREA_BL2_SIZE + 0x10000) /* 0x10000 */ -#define FLASH_AREA_0_SIZE (FLASH_S_PARTITION_SIZE + FLASH_NS_PARTITION_SIZE) /* 480 KB */ +#define FLASH_AREA_0_OFFSET (FLASH_AREA_BL2_OFFSET + FLASH_AREA_BL2_SIZE + 0x14000) /* Reserved for storage */ +#define FLASH_AREA_0_SIZE (FLASH_S_PARTITION_SIZE + FLASH_NS_PARTITION_SIZE) /* Secure + Non-secure secondary slot */ +#if NU_UPDATE_STAGE_SDH #define FLASH_AREA_2_ID (FLASH_AREA_0_ID + 1) -#define FLASH_AREA_2_OFFSET (0x100000) -#define FLASH_AREA_2_SIZE (0x800) +#define FLASH_AREA_2_OFFSET (0x0) +#define FLASH_AREA_2_SIZE (FLASH_S_PARTITION_SIZE + FLASH_NS_PARTITION_SIZE) +#define FLASH_DEVICE_ID_2 SDH_FLASH_DEVICE_ID +#define FLASH_DEV_NAME_2 SDH_FLASH_DEV_NAME +#else +#define FLASH_AREA_2_ID (FLASH_AREA_0_ID + 1) +#define FLASH_AREA_2_OFFSET (FLASH_AREA_0_OFFSET + FLASH_AREA_0_SIZE) +#define FLASH_AREA_2_SIZE (FLASH_S_PARTITION_SIZE + FLASH_NS_PARTITION_SIZE) +#endif /* Scratch area */ +#if NU_UPDATE_STAGE_SDH +#define FLASH_AREA_SCRATCH_ID (FLASH_AREA_2_ID + 1) +#define FLASH_AREA_SCRATCH_OFFSET (0x200000) +#define FLASH_AREA_SCRATCH_SIZE (0x1000) +#define FLASH_DEVICE_ID_SCRATCH SDH_FLASH_DEVICE_ID +#define FLASH_DEV_NAME_SCRATCH SDH_FLASH_DEV_NAME +#else #define FLASH_AREA_SCRATCH_ID (FLASH_AREA_2_ID + 1) -#define FLASH_AREA_SCRATCH_OFFSET (0x100800) -#define FLASH_AREA_SCRATCH_SIZE (0x800) +#define FLASH_AREA_SCRATCH_OFFSET (FLASH_AREA_2_OFFSET + FLASH_AREA_2_SIZE) +#define FLASH_AREA_SCRATCH_SIZE (0x1000) +#endif /* The maximum number of status entries supported by the bootloader. */ #define MCUBOOT_STATUS_MAX_ENTRIES ((FLASH_S_PARTITION_SIZE + \ @@ -88,24 +141,79 @@ #define MCUBOOT_MAX_IMG_SECTORS ((FLASH_S_PARTITION_SIZE + \ FLASH_NS_PARTITION_SIZE) / \ FLASH_AREA_IMAGE_SECTOR_SIZE) +#elif (MCUBOOT_IMAGE_NUMBER == 2) +/* Secure image primary slot */ +#define FLASH_AREA_0_ID (1) +#define FLASH_AREA_0_OFFSET (FLASH_AREA_BL2_OFFSET + FLASH_AREA_BL2_SIZE + 0x14000) /* Reserved for storage */ +#define FLASH_AREA_0_SIZE (FLASH_S_PARTITION_SIZE) +/* Non-secure image primary slot */ +#define FLASH_AREA_1_ID (FLASH_AREA_0_ID + 1) +#define FLASH_AREA_1_OFFSET (FLASH_AREA_0_OFFSET + FLASH_AREA_0_SIZE) +#define FLASH_AREA_1_SIZE (FLASH_NS_PARTITION_SIZE) +/* Secure image secondary slot */ +#if NU_UPDATE_STAGE_SDH +#define FLASH_AREA_2_ID (FLASH_AREA_1_ID + 1) +#define FLASH_AREA_2_OFFSET (0x0) +#define FLASH_AREA_2_SIZE (FLASH_S_PARTITION_SIZE) +#define FLASH_DEVICE_ID_2 SDH_FLASH_DEVICE_ID +#define FLASH_DEV_NAME_2 SDH_FLASH_DEV_NAME #else -#error "Only MCUBOOT_IMAGE_NUMBER 1 are supported!" +#define FLASH_AREA_2_ID (FLASH_AREA_1_ID + 1) +#define FLASH_AREA_2_OFFSET (FLASH_AREA_1_OFFSET + FLASH_AREA_1_SIZE) +#define FLASH_AREA_2_SIZE (FLASH_S_PARTITION_SIZE) +#endif + +/* Non-secure image secondary slot */ +#if NU_UPDATE_STAGE_SDH +#define FLASH_AREA_3_ID (FLASH_AREA_2_ID + 1) +#define FLASH_AREA_3_OFFSET (0x100000) +#define FLASH_AREA_3_SIZE (FLASH_NS_PARTITION_SIZE) +#define FLASH_DEVICE_ID_3 SDH_FLASH_DEVICE_ID +#define FLASH_DEV_NAME_3 SDH_FLASH_DEV_NAME +#else +#define FLASH_AREA_3_ID (FLASH_AREA_2_ID + 1) +#define FLASH_AREA_3_OFFSET (FLASH_AREA_2_OFFSET + FLASH_AREA_2_SIZE) +#define FLASH_AREA_3_SIZE (FLASH_NS_PARTITION_SIZE) +#endif + +/* Scratch area */ +#if NU_UPDATE_STAGE_SDH +#define FLASH_AREA_SCRATCH_ID (FLASH_AREA_3_ID + 1) +#define FLASH_AREA_SCRATCH_OFFSET (0x200000) +#define FLASH_AREA_SCRATCH_SIZE (0x1000) +#define FLASH_DEVICE_ID_SCRATCH SDH_FLASH_DEVICE_ID +#define FLASH_DEV_NAME_SCRATCH SDH_FLASH_DEV_NAME +#else +#define FLASH_AREA_SCRATCH_ID (FLASH_AREA_3_ID + 1) +#define FLASH_AREA_SCRATCH_OFFSET (FLASH_AREA_3_OFFSET + FLASH_AREA_3_SIZE) +#define FLASH_AREA_SCRATCH_SIZE (0x1000) +#endif + +/* The maximum number of status entries supported by the bootloader. */ +#define MCUBOOT_STATUS_MAX_ENTRIES (FLASH_MAX_PARTITION_SIZE / \ + FLASH_AREA_SCRATCH_SIZE) + +/* Maximum number of image sectors supported by the bootloader. */ +#define MCUBOOT_MAX_IMG_SECTORS (FLASH_MAX_PARTITION_SIZE / \ + FLASH_AREA_IMAGE_SECTOR_SIZE) +#else /* MCUBOOT_IMAGE_NUMBER > 2 */ +#error "Only MCUBOOT_IMAGE_NUMBER 1 and 2 are supported!" #endif /* MCUBOOT_IMAGE_NUMBER */ /* Protected Storage (PS) Service definitions */ -#define FLASH_PS_AREA_OFFSET (0x10000) -#define FLASH_PS_AREA_SIZE (0x8000) +#define FLASH_PS_AREA_OFFSET (FLASH_AREA_BL2_OFFSET + FLASH_AREA_BL2_SIZE) +#define FLASH_PS_AREA_SIZE (0xE000) /* Internal Trusted Storage (ITS) Service definitions */ #define FLASH_ITS_AREA_OFFSET (FLASH_PS_AREA_OFFSET + \ FLASH_PS_AREA_SIZE) -#define FLASH_ITS_AREA_SIZE (0x7000) +#define FLASH_ITS_AREA_SIZE (0x5000) /* NV Counters definitions */ #define FLASH_NV_COUNTERS_AREA_OFFSET (FLASH_ITS_AREA_OFFSET + \ FLASH_ITS_AREA_SIZE) -#define FLASH_NV_COUNTERS_AREA_SIZE (FLASH_AREA_IMAGE_SECTOR_SIZE) +#define FLASH_NV_COUNTERS_AREA_SIZE (0x1000) /* Offset and size definition in flash area used by assemble.py */ #define SECURE_IMAGE_OFFSET (0x0) diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/region_defs.h b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/region_defs.h index 219d89a01ba..a1441a8dc22 100644 --- a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/region_defs.h +++ b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/region_defs.h @@ -1,5 +1,4 @@ /* - * @copyright SPDX-License-Identifier: Apache-2.0 * Copyright (c) 2017-2020 Arm Limited. All rights reserved. * Copyright (c) 2020 Nuvoton Technology Corp. All rights reserved. * @@ -98,7 +97,7 @@ #define S_CODE_LIMIT (S_CODE_START + S_CODE_SIZE - 1) #define S_DATA_START (S_RAM_ALIAS(0x0)) -#define S_DATA_SIZE (80 * 1024) +#define S_DATA_SIZE (96 * 1024) #define S_DATA_LIMIT (S_DATA_START + S_DATA_SIZE - 1) /* CMSE Veneers region */ diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_preprocessed.h b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_ns_preprocessed.h similarity index 94% rename from targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_preprocessed.h rename to targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_ns_preprocessed.h index a0c3875886f..4a65869849f 100644 --- a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_preprocessed.h +++ b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_ns_preprocessed.h @@ -21,5 +21,5 @@ enum image_attributes { RE_SECURE_IMAGE_MAX_SIZE = (0x50000), RE_NON_SECURE_IMAGE_OFFSET = ((0x0) + (0x50000)), RE_NON_SECURE_IMAGE_MAX_SIZE = (0x90000), - RE_SIGN_BIN_SIZE = ((0x50000) + (0x90000)), + RE_SIGN_BIN_SIZE = ((0x90000)), }; diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_s_preprocessed.h b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_s_preprocessed.h new file mode 100644 index 00000000000..76ed1a9ebcb --- /dev/null +++ b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/partition/signing_layout_s_preprocessed.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2020 Arm Limited + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +enum image_attributes { + RE_SECURE_IMAGE_OFFSET = (0x0), + RE_SECURE_IMAGE_MAX_SIZE = (0x50000), + RE_NON_SECURE_IMAGE_OFFSET = ((0x0) + (0x50000)), + RE_NON_SECURE_IMAGE_MAX_SIZE = (0x90000), + RE_SIGN_BIN_SIZE = ((0x50000)), +}; diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072.md b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072.md index 0ca0675c49a..5462c73e189 100644 --- a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072.md +++ b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072.md @@ -2,7 +2,7 @@ A default RSA key pair is given to the Nuvoton M2354 target. -Public key was pre-compiled to `targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/bl2.bin` and private key is in `nuvoton_m2354-root-rsa-3072.pem` for Secure image and Non-Secure image together. +Public key was pre-compiled to `targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/bl2.bin` and private key is in `nuvoton_m2354-root-rsa-3072.pem` for Secure image and `nuvoton_m2354-root-rsa-3072_1.pem` for Non-Secure image. DO NOT use them in production code, they are exclusively for testing! diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072.pem b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072.pem index 23288bc1010..8f58c69c8a4 100644 --- a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072.pem +++ b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072.pem @@ -36,4 +36,4 @@ EMn0f1R8hW6ttJKHCiYCjeFP9u71ZoJe25oolpqfFHQbbocCgcAuBR4w3Qmnbscm AfjzZ8DByZa0caiSiFIMlgNZXdh7N3BUNNbIQk98Wd91gBlWDAiFEhrJKFPpRkmv FySATPYcq0lcrjJb3IW2GDK4uo/jb4Nb7Cfog95W6T76XcSKHS5O8k1aI4kFPRsr 1wGZw64OkA8VXVaCaEBQ4brZ1YKB3mx4/tDqwn0I6bqkGRX3RJg= ------END RSA PRIVATE KEY----- +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072_1.pem b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072_1.pem new file mode 100644 index 00000000000..40250b3a920 --- /dev/null +++ b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/signing_key/nuvoton_m2354-root-rsa-3072_1.pem @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/tfm_s.bin b/targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/tfm_s.bin index 787bd0378babe5bab25df657213a54db42fcb2b2..ad65b0e296c38a0bda41bbdcc22d482e12f6ee30 100644 GIT binary patch delta 119171 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 z%0A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 delta 102661 zcmce<30PCt)<3+@NdjR|QBXseGBD!+qE9G0}Q2XoonS_I8S~C4mI;{q{+4=QLwJ{@qEw_x*oPZ)VakkWU}#*Vb1e!2foI)8y;k{8R1bj(xP)7 zdfV^rdbgP?=bS}`b#k)m7|}Qx6oIfgn`jKQG=xbM(a>P|n?w^onverXbF2mcaB~z* z3H*y{lof{)hNyVr9OsETB?o?Jaa5z6MAs87agcWv#VUU7LRo!fktT&CJHPTab2RJx zaF&!el9ZkkdKF(*zY=xG7-lCa$xs)|W3cVCbmhUA{zN)u*y17+6U}Re(^;zbxMJ;c> zks)8DHJ6%anExq4tWKiwG|Kc}#P2mJhlP;HfeEK0Qw|&BTe4Bylb+;p;d~7Fyh%Sf zkJmS835A+GBg`36=x&cGKFc1d&nCHM;#}mBSsY}b<6NX3QH|%6o-c`u{W>B`)~YvO zR;8F_j#B<*V^4d8nUa~|(U4GGM7BO*tLY!=O5;^qociFDOX76%Z=#OO=RXi-`VZpw zm<|{(*tBYzBNWA*w|^{BrXRyc^pM&_IrK2gob3F(!xZ0xwP*3NdcC>))YDEP)P{^q zk7{Jc5@)2;2{Mcm{z|6f)$hLUvB*U*z>keJ93hTU9V zWWMPEli5^iGQ>tkCad;vhm5k;Rr(UPlKY^bnC2>f%Cy{+68UgJvRrAH6{}HgP&J>l zG;wvD69qdPCvk<`cijD)m2)(%t&6lO2qTnmk)(p_M^YOJ}aL2gA+yPXEZSsFdSzHJfNqVVWP=$|T#t75H zb4I3J*v=)ZRq|3!WjZ2mDpa;IR@BSh;ZT`pL79lQTAaxdXM8(@tPk4{7P4n*3Q4O% zxDeL22eXF^*lIIz=m_S`!v2UcG2yL~6Roi)xqV>n3rA%kY5CM4{2Y;*(W7-9XN_e> z(S##X!eIxin`W#4^y>m6SEVlH!sM~0slvAK{+2-yvW|RY*lhTRA=MNgdCdE}GmUI9 z)Nw^7$l&qAoPwN=E8-Fje=+ru-xE2?w8N-uElNDCI>8CXzqITyu4rXPoK{VXL(V@I zn~JzTaa4AX0(-O}#`LN&wDq!TVd6n!Nz1FoS*`4t%c@r;3>_izbc=~K2;4O8Auh(S zz;qmc6_I@+7n|-iJqc3xM4sUK#Lh0*P8BM7K6{XRpdco)h6Z^U`<&4h8 zSXa~+qiTPN+gAAZ{Kt()cJry0+vm=QYii`pjkC5OcA+)OmkCUGt| zR3sXVY$BUi5&P~{D%-8xE3qFGoEG*+<`23rf+dUbt--e(AC2Goy@)tXUypBjgwV4` zdVEH!KgFLG8Pda$V!B5jiF&0_;Xf9}Y9XB->AhQRspTZ&U$#fenT#{GSIg~!rAMwM zg!CXU*N2i`CU0o(vj!Iv8RAGHbGbBA0!bw!jbXNomCUF`@sGvll#|SBcIT-GA}37d zu-2x~9N@E&c2!L5i|U5>;p-2n*->xA4_d`!rne@LN4PPjLB?zL(L|P+)Y>=csPZU@ zO<1DxsbdpFRUEJUID%}k7(I5GUTv6>NHXoVh?RNeWWX1;;+0R8GXwr<+qCjT`A1?J z`Br3fX(X1+Nc;(-v9s|b4&zMYYNO(e-@VVTA*)UvN5_d)y{M|>5=br~nZMiaB7;qy z&^}U?SVwehCHJDLkXw0g zT}GF^2Y63yjY?XjOiWruhO7UnRwaF=N=TCNS!Nk|-sqN?zYoke*i4D)m5UP9daZok}{pGC7ed9tk#=}^ViM*YBwgy`q6IU zG@mJTm0Sr&w2ErE;CHX+>ZLQbd7^t0ikD%SHRs(}`Rim`PI*Qc$)J^4(AgW%W#t*+ zf%qyKx6G+8ξ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 U5PbhCh<_o7f9gX@{@TC)18&1jJpcdz diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/device/partition_M2354_mem.h b/targets/TARGET_NUVOTON/TARGET_M2354/device/partition_M2354_mem.h index b858b26ec3a..7955907c211 100644 --- a/targets/TARGET_NUVOTON/TARGET_M2354/device/partition_M2354_mem.h +++ b/targets/TARGET_NUVOTON/TARGET_M2354/device/partition_M2354_mem.h @@ -39,11 +39,19 @@ * If not, NU_TFM_S_BL2 and friends must update manually. */ #ifndef NU_TFM_S_BL2 -#define NU_TFM_S_BL2 1 +#define NU_TFM_S_BL2 1 #endif #ifndef NU_TFM_S_MCUBOOT_IMAGE_NUMBER -#define NU_TFM_S_MCUBOOT_IMAGE_NUMBER 1 +#define NU_TFM_S_MCUBOOT_IMAGE_NUMBER 2 +#endif + +#ifndef NU_TFM_S_UPDATE_STAGE_SDH +#define NU_TFM_S_UPDATE_STAGE_SDH 1 +#endif + +#ifndef NU_TFM_S_UPDATE_STAGE_FLASH +#define NU_TFM_S_UPDATE_STAGE_FLASH 0 #endif #ifndef NU_TFM_S_REGION_DEFS_H_PATH @@ -57,10 +65,14 @@ #endif #define MCUBOOT_IMAGE_NUMBER NU_TFM_S_MCUBOOT_IMAGE_NUMBER #include NU_TFM_S_REGION_DEFS_H_PATH +#define NU_UPDATE_STAGE_SDH NU_TFM_S_UPDATE_STAGE_SDH +#define NU_UPDATE_STAGE_FLASH NU_TFM_S_UPDATE_STAGE_FLASH /* Avoid polluting name space, esp. BL2 */ #undef BL2 #undef MCUBOOT_IMAGE_NUMBER +#undef NU_UPDATE_STAGE_SDH +#undef NU_UPDATE_STAGE_FLASH /* Resolve MBED_ROM_START and friends * diff --git a/targets/TARGET_NUVOTON/TARGET_M2354/device/partition_M2354_mem.icf.h b/targets/TARGET_NUVOTON/TARGET_M2354/device/partition_M2354_mem.icf.h index 77b66303c6c..c9602f65cfc 100644 --- a/targets/TARGET_NUVOTON/TARGET_M2354/device/partition_M2354_mem.icf.h +++ b/targets/TARGET_NUVOTON/TARGET_M2354/device/partition_M2354_mem.icf.h @@ -36,10 +36,10 @@ define symbol MBED_ROM_START_ORIDE = 0x10070400; define symbol MBED_ROM_SIZE_ORIDE = 0x8F400; /* Resolve non-secure RAM start */ -define symbol MBED_RAM_START_ORIDE = 0x30014000; +define symbol MBED_RAM_START_ORIDE = 0x30018000; /* Resolve non-secure RAM size */ -define symbol MBED_RAM_SIZE_ORIDE = 0x2C000; +define symbol MBED_RAM_SIZE_ORIDE = 0x28000; /* Mbed build tool passes just APPLICATION_xxx macros to C/C++ files and just * MBED_APP_xxx macros to linker files even though they mean the same thing. diff --git a/targets/TARGET_NUVOTON/scripts/NUVOTON.py b/targets/TARGET_NUVOTON/scripts/NUVOTON.py index 0b094a1d2fc..5205826a35c 100644 --- a/targets/TARGET_NUVOTON/scripts/NUVOTON.py +++ b/targets/TARGET_NUVOTON/scripts/NUVOTON.py @@ -23,12 +23,12 @@ import shutil import argparse from intelhex import IntelHex +from datetime import datetime SCRIPT_DIR = dirname(abspath(__file__)) MBED_OS_ROOT = abspath(path_join(SCRIPT_DIR, os.pardir, os.pardir, os.pardir)) -def tfm_sign_image_tgt(tfm_import_path, signing_key, non_secure_bin): - +def tfm_sign_image(tfm_import_path, signing_key, signing_key_1, non_secure_bin): SECURE_ROOT = abspath(tfm_import_path) secure_bin = path_join(SECURE_ROOT, 'tfm_s.bin') @@ -45,13 +45,8 @@ def tfm_sign_image_tgt(tfm_import_path, signing_key, non_secure_bin): flash_layout = path_join(SECURE_ROOT, 'partition', 'flash_layout.h') bl2_bin = path_join(SECURE_ROOT, 'bl2.bin') - image_macros_s_ns = path_join(SECURE_ROOT, 'partition', 'signing_layout_preprocessed.h') + s_bin_basename = splitext(basename(secure_bin))[0] ns_bin_basename = splitext(basename(non_secure_bin))[0] - concatenated_bin = abspath(path_join(tempdir, 'tfm_' + ns_bin_basename + ".bin")) - signed_bin = abspath(path_join(tempdir, 'tfm_' + ns_bin_basename + '_signed' + ".bin")) - signed_nopad_bin = abspath(path_join(tempdir, 'tfm_' + ns_bin_basename + '_signed_nopad' + ".bin")) - - assert os.path.isfile(image_macros_s_ns) signing_key = path_join(SECURE_ROOT, 'signing_key', signing_key) assert os.path.isfile(signing_key) @@ -59,41 +54,29 @@ def tfm_sign_image_tgt(tfm_import_path, signing_key, non_secure_bin): # Find Python 3 command name across platforms python3_cmd = "python3" if shutil.which("python3") is not None else "python" - #1. Concatenate secure TFM and non-secure mbed binaries - cmd = [ - python3_cmd, - path_join(MBED_OS_ROOT, "tools", "psa", "tfm", "bin_utils", "assemble.py"), - "--layout", - image_macros_s_ns, - "-s", - secure_bin, - "-n", - non_secure_bin, - "-o", - concatenated_bin, - ] - - retcode = run_cmd(cmd, MBED_OS_ROOT) - if retcode: - raise Exception("Unable to concatenate " + "TF-M Secure/Mbed Non-secure" + - " binaries, Error code: " + str(retcode)) - return + img_ver_major = 1 + img_ver_minor = 3 + img_ver_revision = 0 + img_ver_build = 0 - #2.1 Run wrapper to sign the concatenated binary with padding ("--pad"), so upgradeable by mcuboot - cmd = [ + # wrapper.py command template + cmd_wrapper = [ python3_cmd, - path_join(MBED_OS_ROOT, "tools", "psa","tfm", "bin_utils", "wrapper.py"), + path_join(MBED_OS_ROOT, "tools", "psa", "tfm", "bin_utils", "wrapper.py"), "-v", - '1.2.0', + "{}.{}.{}+{}".format(img_ver_major, img_ver_minor, img_ver_revision, img_ver_build), "-k", - signing_key, + "SIGNING_KEY_PATH", "--layout", - image_macros_s_ns, + "IMAGE_MACRO_PATH", "--public-key-format", 'full', "--align", '1', - "--pad", + # Reasons for removing padding and boot magic option "--pad": + # 1. PSA FWU API psa_fwu_install() will be responsible for writing boot magic to enable upgradeable. + # 2. The image size gets smaller instead of slot size. + #"--pad", "--pad-header", "-H", '0x400', @@ -101,35 +84,142 @@ def tfm_sign_image_tgt(tfm_import_path, signing_key, non_secure_bin): "-s", 'auto', "-d", - '(0,0.0.0+0)', - concatenated_bin, - signed_bin, + '(IMAGE_ID,MAJOR.MINOR.REVISION+BUILD)', + "RAW_BIN_PATH", + "SIGNED_BIN_PATH", ] - - retcode = run_cmd(cmd, MBED_OS_ROOT) - if retcode: - raise Exception("Unable to sign " + "concatenated" + + pos_wrapper_signing_key = cmd_wrapper.index("-k") + 1 + pos_wrapper_layout = cmd_wrapper.index("--layout") + 1 + pos_wrapper_dependency = cmd_wrapper.index("-d") + 1 + pos_wrapper_raw_bin = len(cmd_wrapper) - 2 + pos_wrapper_signed_bin = len(cmd_wrapper) - 1 + + # assemble.py command template + cmd_assemble = [ + python3_cmd, + path_join(MBED_OS_ROOT, "tools", "psa", "tfm", "bin_utils", "assemble.py"), + "--layout", + "IMAGE_MACRO_PATH", + "-s", + "SECURE_BIN_PATH", + "-n", + "NONSECURE_BIN_PATH", + "-o", + "CONCATENATED_BIN_PATH", + ] + pos_assemble_layout = cmd_assemble.index("--layout") + 1 + pos_assemble_secure_bin = cmd_assemble.index("-s") + 1 + pos_assemble_nonsecure_bin = cmd_assemble.index("-n") + 1 + pos_assemble_concat_bin = cmd_assemble.index("-o") + 1 + + # If second signing key is passed down, go signing separately; otherwise, go signing together. + if signing_key_1 is not None: + signing_key_1 = path_join(SECURE_ROOT, 'signing_key', signing_key_1) + assert os.path.isfile(signing_key_1) + + image_macros_s = path_join(SECURE_ROOT, 'partition', 'signing_layout_s_preprocessed.h') + image_macros_ns = path_join(SECURE_ROOT, 'partition', 'signing_layout_ns_preprocessed.h') + assert os.path.isfile(image_macros_s) + assert os.path.isfile(image_macros_ns) + + s_signed_bin = abspath(path_join(tempdir, 'tfm_s_signed' + '.bin')) + ns_signed_bin = abspath(path_join(tempdir, 'tfm_' + ns_bin_basename + '_signed' + '.bin')) + signed_concat_bin = abspath(path_join(tempdir, 'tfm_s_signed_' + ns_bin_basename + '_signed_concat' + '.bin')) + s_update_bin = abspath(path_join(build_dir, s_bin_basename + '_update' + '.bin')) + ns_update_bin = abspath(path_join(build_dir, ns_bin_basename + '_update' + '.bin')) + + #1. Run wrapper to sign the secure TF-M binary + cmd_wrapper[pos_wrapper_signing_key] = signing_key + cmd_wrapper[pos_wrapper_layout] = image_macros_s + cmd_wrapper[pos_wrapper_dependency] = '(1,0.0.0+0)' # Minimum version of non-secure image required for upgrading to the secure image + cmd_wrapper[pos_wrapper_raw_bin] = secure_bin + cmd_wrapper[pos_wrapper_signed_bin] = s_signed_bin + + retcode = run_cmd(cmd_wrapper, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to sign " + "TF-M Secure" + " binary, Error code: " + str(retcode)) - return + return + + #2. Run wrapper to sign the non-secure mbed binary + cmd_wrapper[pos_wrapper_signing_key] = signing_key_1 + cmd_wrapper[pos_wrapper_layout] = image_macros_ns + cmd_wrapper[pos_wrapper_dependency] = '(0,0.0.0+0)' # Minimum version of secure image required for upgrading to the non-secure image + cmd_wrapper[pos_wrapper_raw_bin] = non_secure_bin + cmd_wrapper[pos_wrapper_signed_bin] = ns_signed_bin + + retcode = run_cmd(cmd_wrapper, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to sign " + "TF-M Secure" + + " binary, Error code: " + str(retcode)) + return - #2.2. Re-run above but without padding ("--pad"), so non-upgradeable by mcuboot - cmd.remove("--pad") - cmd.pop() - cmd.append(signed_nopad_bin) + #3. Concatenate signed secure TF-M binary and signed non-secure mbed binary + cmd_assemble[pos_assemble_layout] = image_macros_s + cmd_assemble[pos_assemble_secure_bin] = s_signed_bin + cmd_assemble[pos_assemble_nonsecure_bin] = ns_signed_bin + cmd_assemble[pos_assemble_concat_bin] = signed_concat_bin - retcode = run_cmd(cmd, MBED_OS_ROOT) - if retcode: - raise Exception("Unable to sign " + "concatenated" + + retcode = run_cmd(cmd_assemble, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to concatenate " + "Secure TF-M (signed)/Non-secure Mbed (signed)" + + " binaries, Error code: " + str(retcode)) + return + + #4. Concatenate MCUboot and concatenated signed secure TF-M binary/signed non-secure mbed binary + flash_area_0_offset = find_flash_area_0_offset(flash_layout) + out_ih = IntelHex() + out_ih.loadbin(bl2_bin) + out_ih.loadbin(signed_concat_bin, flash_area_0_offset) + out_ih.tofile(splitext(non_secure_bin)[0] + ".hex", 'hex') + out_ih.tobinfile(non_secure_bin) + + # Generate firmware update file for PSA Firmware Update + shutil.copy(s_signed_bin, s_update_bin) + shutil.copy(ns_signed_bin, ns_update_bin) + else: + image_macros_s_ns = path_join(SECURE_ROOT, 'partition', 'signing_layout_preprocessed.h') + assert os.path.isfile(image_macros_s_ns) + + concat_bin = abspath(path_join(tempdir, 'tfm_s_' + ns_bin_basename + ".bin")) + concat_signed_bin = abspath(path_join(tempdir, 'tfm_s_' + ns_bin_basename + '_signed' + ".bin")) + update_bin = abspath(path_join(build_dir, ns_bin_basename + '_update' + '.bin')) + + #1. Concatenate secure TFM and non-secure mbed binaries + cmd_assemble[pos_assemble_layout] = image_macros_s_ns + cmd_assemble[pos_assemble_secure_bin] = secure_bin + cmd_assemble[pos_assemble_nonsecure_bin] = non_secure_bin + cmd_assemble[pos_assemble_concat_bin] = concat_bin + + retcode = run_cmd(cmd_assemble, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to concatenate " + "Secure TF-M/Non-secure Mbed" + + " binaries, Error code: " + str(retcode)) + return + + #2. Run wrapper to sign the concatenated binary + cmd_wrapper[pos_wrapper_signing_key] = signing_key + cmd_wrapper[pos_wrapper_layout] = image_macros_s_ns + cmd_wrapper[pos_wrapper_dependency] = '(1,0.0.0+0)' # No effect for single image boot + cmd_wrapper[pos_wrapper_raw_bin] = concat_bin + cmd_wrapper[pos_wrapper_signed_bin] = concat_signed_bin + + retcode = run_cmd(cmd_wrapper, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to sign " + "concatenated" + " binary, Error code: " + str(retcode)) - return + return - #3. Concatenate mcuboot and signed binary and overwrite mbed built bin/hex file - flash_area_0_offset = find_flash_area_0_offset(flash_layout) - out_ih = IntelHex() - out_ih.loadbin(bl2_bin) - out_ih.loadbin(signed_nopad_bin, flash_area_0_offset) - out_ih.tofile(splitext(non_secure_bin)[0] + ".hex", 'hex') - out_ih.tobinfile(non_secure_bin) + #3. Concatenate MCUboot and signed binary + flash_area_0_offset = find_flash_area_0_offset(flash_layout) + out_ih = IntelHex() + out_ih.loadbin(bl2_bin) + out_ih.loadbin(concat_signed_bin, flash_area_0_offset) + out_ih.tofile(splitext(non_secure_bin)[0] + ".hex", 'hex') + out_ih.tobinfile(non_secure_bin) + + # Generate firmware update file for PSA Firmware Update + shutil.copy(concat_signed_bin, update_bin) def find_flash_area_0_offset(configFile): # Compiled regular expressions @@ -208,33 +298,39 @@ def parse_args(): subparsers = parser.add_subparsers(description="The action to perform") - parser_tfm_sign_image_tgt = subparsers.add_parser( - "tfm_sign_image_tgt", - help="Sign secure and non-secure images together" + parser_tfm_sign_image = subparsers.add_parser( + "tfm_sign_image", + help="Sign secure and non-secure images" ) - parser_tfm_sign_image_tgt.add_argument( + parser_tfm_sign_image.add_argument( "--tfm-import-path", help="Path containing the TF-M bootloader, layouts and signing keys", required=True ) - parser_tfm_sign_image_tgt.add_argument( + parser_tfm_sign_image.add_argument( "--signing_key", help="File name of key for signing secure binary or secure/non-secure binaries together", required=True ) - parser_tfm_sign_image_tgt.add_argument( + parser_tfm_sign_image.add_argument( + "--signing_key_1", + help="File name of key for signing non-secure binary", + required=False + ) + + parser_tfm_sign_image.add_argument( "--non-secure-bin", help="Path to the non-secure binary", required=True ) - parser_tfm_sign_image_tgt.set_defaults(func=tfm_sign_image_tgt) + parser_tfm_sign_image.set_defaults(func=tfm_sign_image) return parser.parse_args() if __name__ == "__main__": args = parse_args() - args.func(args.tfm_import_path, args.signing_key, args.non_secure_bin) + args.func(args.tfm_import_path, args.signing_key, args.signing_key_1, args.non_secure_bin) diff --git a/targets/TARGET_NUVOTON/scripts/mbed_set_post_build_nuvoton.cmake b/targets/TARGET_NUVOTON/scripts/mbed_set_post_build_nuvoton.cmake index 9f7a3cb9c9c..dfeae9c56db 100644 --- a/targets/TARGET_NUVOTON/scripts/mbed_set_post_build_nuvoton.cmake +++ b/targets/TARGET_NUVOTON/scripts/mbed_set_post_build_nuvoton.cmake @@ -6,27 +6,46 @@ include(${MBED_PATH}/tools/cmake/mbed_set_post_build.cmake) # # Sign TF-M secure and non-secure images and combine them with the bootloader # -macro(mbed_post_build_nuvoton_tfm_sign_image_tgt +macro(mbed_post_build_nuvoton_tfm_sign_image nuvoton_target tfm_import_path signing_key + signing_key_1 ) if("${nuvoton_target}" STREQUAL "${MBED_TARGET}") function(mbed_post_build_function target) find_package(Python3) - add_custom_command( - TARGET - ${target} - POST_BUILD - COMMAND - ${Python3_EXECUTABLE} - ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/NUVOTON.py - tfm_sign_image_tgt - --tfm-import-path ${tfm_import_path} - --signing_key ${signing_key} - --non-secure-bin $/$.bin - ) + # NOTE: Macro arguments are not variables and cannot pass to if(). + set(signing_key_1_ ${signing_key_1}) + if(signing_key_1_) + add_custom_command( + TARGET + ${target} + POST_BUILD + COMMAND + ${Python3_EXECUTABLE} + ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/NUVOTON.py + tfm_sign_image + --tfm-import-path ${tfm_import_path} + --signing_key ${signing_key} + --signing_key_1 ${signing_key_1} + --non-secure-bin $/$.bin + ) + else() + add_custom_command( + TARGET + ${target} + POST_BUILD + COMMAND + ${Python3_EXECUTABLE} + ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/NUVOTON.py + tfm_sign_image + --tfm-import-path ${tfm_import_path} + --signing_key ${signing_key} + --non-secure-bin $/$.bin + ) + endif() endfunction() endif() endmacro() diff --git a/targets/targets.json b/targets/targets.json index 55d9c35a592..aaeedc7d9f2 100644 --- a/targets/targets.json +++ b/targets/targets.json @@ -7099,7 +7099,7 @@ ] ], "bootloader_supported": true, - "forced_reset_timeout": 3 + "forced_reset_timeout": 5 }, "NU_M2354": { "inherits": [ diff --git a/tools/targets/NU_M2354.py b/tools/targets/NU_M2354.py index 66732d9f805..356003f4a2e 100644 --- a/tools/targets/NU_M2354.py +++ b/tools/targets/NU_M2354.py @@ -22,9 +22,12 @@ import subprocess import shutil from intelhex import IntelHex +from datetime import datetime + SCRIPT_DIR = dirname(abspath(__file__)) MBED_OS_ROOT = abspath(path_join(SCRIPT_DIR, os.pardir, os.pardir)) +SECURE_ROOT = path_join(MBED_OS_ROOT, 'targets', 'TARGET_NUVOTON', 'TARGET_M2354', 'TARGET_TFM', 'TARGET_NU_M2354', 'COMPONENT_TFM_S_FW') def m2354_tfm_bin(t_self, non_secure_image, secure_bin): @@ -34,8 +37,6 @@ def m2354_tfm_bin(t_self, non_secure_image, secure_bin): secure_bin = abspath(secure_bin) non_secure_image = abspath(non_secure_image) - SECURE_ROOT = abspath(dirname(secure_bin)) - build_dir = dirname(non_secure_image) tempdir = path_join(build_dir, 'temp') if not isdir(tempdir): @@ -44,11 +45,8 @@ def m2354_tfm_bin(t_self, non_secure_image, secure_bin): flash_layout = path_join(SECURE_ROOT, 'partition', 'flash_layout.h') bl2_bin = path_join(SECURE_ROOT, 'bl2.bin') - image_macros_s_ns = path_join(SECURE_ROOT, 'partition', 'signing_layout_preprocessed.h') + s_bin_basename = splitext(basename(secure_bin))[0] ns_bin_basename, output_ext = splitext(basename(non_secure_image)) - concatenated_bin = abspath(path_join(tempdir, 'tfm_' + ns_bin_basename + ".bin")) - signed_bin = abspath(path_join(tempdir, 'tfm_' + ns_bin_basename + '_signed' + ".bin")) - signed_nopad_bin = abspath(path_join(tempdir, 'tfm_' + ns_bin_basename + '_signed_nopad' + ".bin")) # Convert NS image to BIN format if it is HEX if output_ext == ".hex": @@ -58,49 +56,35 @@ def m2354_tfm_bin(t_self, non_secure_image, secure_bin): else: non_secure_bin = non_secure_image - assert os.path.isfile(image_macros_s_ns) - signing_key = path_join(SCRIPT_DIR, 'nuvoton_m2354-root-rsa-3072.pem') assert os.path.isfile(signing_key) # Find Python 3 command name across platforms python3_cmd = "python3" if shutil.which("python3") is not None else "python" - #1. Concatenate secure TFM and non-secure mbed binaries - cmd = [ - python3_cmd, - path_join(MBED_OS_ROOT, "tools", "psa","tfm", "bin_utils","assemble.py"), - "--layout", - image_macros_s_ns, - "-s", - secure_bin, - "-n", - non_secure_bin, - "-o", - concatenated_bin, - ] - - retcode = run_cmd(cmd, MBED_OS_ROOT) - if retcode: - raise Exception("Unable to concatenate " + "TF-M Secure/Mbed Non-secure" + - " binaries, Error code: " + str(retcode)) - return + img_ver_major = 1 + img_ver_minor = 3 + img_ver_revision = 0 + img_ver_build = 0 - #2.1 Run wrapper to sign the concatenated binary with padding ("--pad"), so upgradeable by mcuboot - cmd = [ + # wrapper.py command template + cmd_wrapper = [ python3_cmd, path_join(MBED_OS_ROOT, "tools", "psa", "tfm", "bin_utils", "wrapper.py"), "-v", - '1.2.0', + "{}.{}.{}+{}".format(img_ver_major, img_ver_minor, img_ver_revision, img_ver_build), "-k", - signing_key, + "SIGNING_KEY_PATH", "--layout", - image_macros_s_ns, + "IMAGE_MACRO_PATH", "--public-key-format", 'full', "--align", '1', - "--pad", + # Reasons for removing padding and boot magic option "--pad": + # 1. PSA FWU API psa_fwu_install() will be responsible for writing boot magic to enable upgradeable. + # 2. The image size gets smaller instead of slot size. + #"--pad", "--pad-header", "-H", '0x400', @@ -108,34 +92,145 @@ def m2354_tfm_bin(t_self, non_secure_image, secure_bin): "-s", 'auto', "-d", - '(0,0.0.0+0)', - concatenated_bin, - signed_bin, + '(IMAGE_ID,MAJOR.MINOR.REVISION+BUILD)', + "RAW_BIN_PATH", + "SIGNED_BIN_PATH", ] - - retcode = run_cmd(cmd, MBED_OS_ROOT) - if retcode: - raise Exception("Unable to sign " + "concatenated" + + pos_wrapper_signing_key = cmd_wrapper.index("-k") + 1 + pos_wrapper_layout = cmd_wrapper.index("--layout") + 1 + pos_wrapper_dependency = cmd_wrapper.index("-d") + 1 + pos_wrapper_raw_bin = len(cmd_wrapper) - 2 + pos_wrapper_signed_bin = len(cmd_wrapper) - 1 + + # assemble.py command template + cmd_assemble = [ + python3_cmd, + path_join(MBED_OS_ROOT, "tools", "psa", "tfm", "bin_utils", "assemble.py"), + "--layout", + "IMAGE_MACRO_PATH", + "-s", + "SECURE_BIN_PATH", + "-n", + "NONSECURE_BIN_PATH", + "-o", + "CONCATENATED_BIN_PATH", + ] + pos_assemble_layout = cmd_assemble.index("--layout") + 1 + pos_assemble_secure_bin = cmd_assemble.index("-s") + 1 + pos_assemble_nonsecure_bin = cmd_assemble.index("-n") + 1 + pos_assemble_concat_bin = cmd_assemble.index("-o") + 1 + + # If second signing key is passed down, go signing separately; otherwise, go signing together. + if os.path.isfile(path_join(SECURE_ROOT, 'partition', 'signing_layout_ns_preprocessed.h')): + signing_key_1 = 'nuvoton_m2354-root-rsa-3072_1.pem' + else: + signing_key_1 = None + + if signing_key_1 is not None: + signing_key_1 = path_join(SCRIPT_DIR, signing_key_1) + assert os.path.isfile(signing_key_1) + + image_macros_s = path_join(SECURE_ROOT, 'partition', 'signing_layout_s_preprocessed.h') + image_macros_ns = path_join(SECURE_ROOT, 'partition', 'signing_layout_ns_preprocessed.h') + assert os.path.isfile(image_macros_s) + assert os.path.isfile(image_macros_ns) + + s_signed_bin = abspath(path_join(tempdir, 'tfm_s_signed' + '.bin')) + ns_signed_bin = abspath(path_join(tempdir, 'tfm_' + ns_bin_basename + '_signed' + '.bin')) + signed_concat_bin = abspath(path_join(tempdir, 'tfm_s_signed_' + ns_bin_basename + '_signed_concat' + '.bin')) + s_update_bin = abspath(path_join(build_dir, s_bin_basename + '_update' + '.bin')) + ns_update_bin = abspath(path_join(build_dir, ns_bin_basename + '_update' + '.bin')) + + #1. Run wrapper to sign the secure TF-M binary + cmd_wrapper[pos_wrapper_signing_key] = signing_key + cmd_wrapper[pos_wrapper_layout] = image_macros_s + cmd_wrapper[pos_wrapper_dependency] = '(1,0.0.0+0)' # Minimum version of non-secure image required for upgrading to the secure image + cmd_wrapper[pos_wrapper_raw_bin] = secure_bin + cmd_wrapper[pos_wrapper_signed_bin] = s_signed_bin + + retcode = run_cmd(cmd_wrapper, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to sign " + "TF-M Secure" + " binary, Error code: " + str(retcode)) - return + return + + #2. Run wrapper to sign the non-secure mbed binary + cmd_wrapper[pos_wrapper_signing_key] = signing_key_1 + cmd_wrapper[pos_wrapper_layout] = image_macros_ns + cmd_wrapper[pos_wrapper_dependency] = '(0,0.0.0+0)' # Minimum version of secure image required for upgrading to the non-secure image + cmd_wrapper[pos_wrapper_raw_bin] = non_secure_bin + cmd_wrapper[pos_wrapper_signed_bin] = ns_signed_bin + + retcode = run_cmd(cmd_wrapper, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to sign " + "TF-M Secure" + + " binary, Error code: " + str(retcode)) + return - #2.2. Re-run above but without padding ("--pad"), so non-upgradeable by mcuboot - cmd.remove("--pad") - cmd.pop() - cmd.append(signed_nopad_bin) + #3. Concatenate signed secure TF-M binary and signed non-secure mbed binary + cmd_assemble[pos_assemble_layout] = image_macros_s + cmd_assemble[pos_assemble_secure_bin] = s_signed_bin + cmd_assemble[pos_assemble_nonsecure_bin] = ns_signed_bin + cmd_assemble[pos_assemble_concat_bin] = signed_concat_bin - retcode = run_cmd(cmd, MBED_OS_ROOT) - if retcode: - raise Exception("Unable to sign " + "concatenated" + + retcode = run_cmd(cmd_assemble, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to concatenate " + "Secure TF-M (signed)/Non-secure Mbed (signed)" + + " binaries, Error code: " + str(retcode)) + return + + #4. Concatenate MCUboot and concatenated signed secure TF-M binary/signed non-secure mbed binary + flash_area_0_offset = find_flash_area_0_offset(flash_layout) + out_ih = IntelHex() + out_ih.loadbin(bl2_bin) + out_ih.loadbin(signed_concat_bin, flash_area_0_offset) + out_ih.tofile(non_secure_image, 'hex' if output_ext == ".hex" else "bin") + + # Generate firmware update file for PSA Firmware Update + shutil.copy(s_signed_bin, s_update_bin) + shutil.copy(ns_signed_bin, ns_update_bin) + else: + image_macros_s_ns = path_join(SECURE_ROOT, 'partition', 'signing_layout_preprocessed.h') + assert os.path.isfile(image_macros_s_ns) + + concat_bin = abspath(path_join(tempdir, 'tfm_s_' + ns_bin_basename + ".bin")) + concat_signed_bin = abspath(path_join(tempdir, 'tfm_s_' + ns_bin_basename + '_signed' + ".bin")) + update_bin = abspath(path_join(build_dir, ns_bin_basename + '_update' + '.bin')) + + #1. Concatenate secure TFM and non-secure mbed binaries + cmd_assemble[pos_assemble_layout] = image_macros_s_ns + cmd_assemble[pos_assemble_secure_bin] = secure_bin + cmd_assemble[pos_assemble_nonsecure_bin] = non_secure_bin + cmd_assemble[pos_assemble_concat_bin] = concat_bin + + retcode = run_cmd(cmd_assemble, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to concatenate " + "Secure TF-M/Non-secure Mbed" + + " binaries, Error code: " + str(retcode)) + return + + #2. Run wrapper to sign the concatenated binary + cmd_wrapper[pos_wrapper_signing_key] = signing_key + cmd_wrapper[pos_wrapper_layout] = image_macros_s_ns + cmd_wrapper[pos_wrapper_dependency] = '(1,0.0.0+0)' # No effect for single image boot + cmd_wrapper[pos_wrapper_raw_bin] = concat_bin + cmd_wrapper[pos_wrapper_signed_bin] = concat_signed_bin + + retcode = run_cmd(cmd_wrapper, MBED_OS_ROOT) + if retcode: + raise Exception("Unable to sign " + "concatenated" + " binary, Error code: " + str(retcode)) - return - - #3. Concatenate mcuboot and signed binary and overwrite mbed built bin/hex file - flash_area_0_offset = find_flash_area_0_offset(flash_layout) - out_ih = IntelHex() - out_ih.loadbin(bl2_bin) - out_ih.loadbin(signed_nopad_bin, flash_area_0_offset) - out_ih.tofile(non_secure_image, 'hex' if output_ext == ".hex" else "bin") + return + + #3. Concatenate MCUboot and signed binary + flash_area_0_offset = find_flash_area_0_offset(flash_layout) + out_ih = IntelHex() + out_ih.loadbin(bl2_bin) + out_ih.loadbin(concat_signed_bin, flash_area_0_offset) + out_ih.tofile(non_secure_image, 'hex' if output_ext == ".hex" else "bin") + + # Generate firmware update file for PSA Firmware Update + shutil.copy(concat_signed_bin, update_bin) def find_flash_area_0_offset(configFile): # Compiled regular expressions diff --git a/tools/targets/nuvoton_m2354-root-rsa-3072.md b/tools/targets/nuvoton_m2354-root-rsa-3072.md index 0ca0675c49a..5462c73e189 100644 --- a/tools/targets/nuvoton_m2354-root-rsa-3072.md +++ b/tools/targets/nuvoton_m2354-root-rsa-3072.md @@ -2,7 +2,7 @@ A default RSA key pair is given to the Nuvoton M2354 target. -Public key was pre-compiled to `targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/bl2.bin` and private key is in `nuvoton_m2354-root-rsa-3072.pem` for Secure image and Non-Secure image together. +Public key was pre-compiled to `targets/TARGET_NUVOTON/TARGET_M2354/TARGET_TFM/TARGET_NU_M2354/COMPONENT_TFM_S_FW/bl2.bin` and private key is in `nuvoton_m2354-root-rsa-3072.pem` for Secure image and `nuvoton_m2354-root-rsa-3072_1.pem` for Non-Secure image. DO NOT use them in production code, they are exclusively for testing! diff --git a/tools/targets/nuvoton_m2354-root-rsa-3072.pem b/tools/targets/nuvoton_m2354-root-rsa-3072.pem index 23288bc1010..8f58c69c8a4 100644 --- a/tools/targets/nuvoton_m2354-root-rsa-3072.pem +++ b/tools/targets/nuvoton_m2354-root-rsa-3072.pem @@ -36,4 +36,4 @@ EMn0f1R8hW6ttJKHCiYCjeFP9u71ZoJe25oolpqfFHQbbocCgcAuBR4w3Qmnbscm AfjzZ8DByZa0caiSiFIMlgNZXdh7N3BUNNbIQk98Wd91gBlWDAiFEhrJKFPpRkmv FySATPYcq0lcrjJb3IW2GDK4uo/jb4Nb7Cfog95W6T76XcSKHS5O8k1aI4kFPRsr 1wGZw64OkA8VXVaCaEBQ4brZ1YKB3mx4/tDqwn0I6bqkGRX3RJg= ------END RSA PRIVATE KEY----- +-----END RSA PRIVATE KEY----- \ No newline at end of file diff --git a/tools/targets/nuvoton_m2354-root-rsa-3072_1.pem b/tools/targets/nuvoton_m2354-root-rsa-3072_1.pem new file mode 100644 index 00000000000..40250b3a920 --- /dev/null +++ b/tools/targets/nuvoton_m2354-root-rsa-3072_1.pem @@ -0,0 +1,39 @@ +-----BEGIN RSA PRIVATE KEY----- +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 +-----END RSA PRIVATE KEY----- \ No newline at end of file