Sync VAD example with TF-M
- The FWU API has been changed, so the example had to be aligned.
- Added project_config.h because of the changed configuration system.
Change-Id: Id3eaad458e9b0b98424a0373a65b4b0a8bc86206
Signed-off-by: Bence Balogh <bence.balogh@arm.com>
diff --git a/examples/vad_an552/ns_side/CMakeLists.txt b/examples/vad_an552/ns_side/CMakeLists.txt
index e24ee41..a840ede 100644
--- a/examples/vad_an552/ns_side/CMakeLists.txt
+++ b/examples/vad_an552/ns_side/CMakeLists.txt
@@ -306,6 +306,9 @@
PRIVATE
MBEDTLS_CONFIG_FILE="aws_mbedtls_config.h"
$<$<BOOL:${VAD_AN552_NO_CONNECTIVITY}>:VAD_AN552_NO_CONNECTIVITY>
+ # FreeRTOS OTA PSA PAL configuration
+ OTA_PAL_CODE_SIGNING_ALGO=OTA_PAL_CODE_SIGNING_RSA
+ OTA_PAL_SIGNATURE_FORMAT=OTA_PAL_SIGNATURE_RAW
)
target_link_libraries(tfm_ns
diff --git a/examples/vad_an552/ns_side/ext/freertos-ota-pal-psa/0001-Chunk-writing-added-for-otaPal_WriteBlock.patch b/examples/vad_an552/ns_side/ext/freertos-ota-pal-psa/0001-Chunk-writing-added-for-otaPal_WriteBlock.patch
deleted file mode 100644
index cf285b3..0000000
--- a/examples/vad_an552/ns_side/ext/freertos-ota-pal-psa/0001-Chunk-writing-added-for-otaPal_WriteBlock.patch
+++ /dev/null
@@ -1,73 +0,0 @@
-From 5e22888b7cd7ef348f905627de7fece18bb94de7 Mon Sep 17 00:00:00 2001
-From: Mark Horvath <mark.horvath@arm.com>
-Date: Fri, 12 Nov 2021 12:22:00 +0100
-Subject: [PATCH 1/1] Chunk writing added for otaPal_WriteBlock
-
-If file block size is bigger then PSA_FWU_MAX_BLOCK_SIZE flash is
-written in chunks.
-
-Signed-off-by: Mark Horvath <mark.horvath@arm.com>
----
- ota_pal.c | 21 +++++++++++++++++++--
- ota_pal.h | 2 +-
- 2 files changed, 20 insertions(+), 3 deletions(-)
-
-diff --git a/ota_pal.c b/ota_pal.c
-index 40654a8..7659b62 100644
---- a/ota_pal.c
-+++ b/ota_pal.c
-@@ -295,19 +295,36 @@ OtaPalStatus_t otaPal_CloseFile( OtaFileContext_t * const pFileContext )
- */
- int16_t otaPal_WriteBlock( OtaFileContext_t * const pFileContext,
- uint32_t ulOffset,
-- uint8_t * const pcData,
-+ const uint8_t * pcData,
- uint32_t ulBlockSize )
- {
-+ uint32_t remaining_blocksize = ulBlockSize;
-+
- if( (pFileContext == NULL) || (pFileContext != pxSystemContext ) || ( xOTAImageID == TFM_FWU_INVALID_IMAGE_ID ) )
- {
- return -1;
- }
-
- /* Call the TF-M Firmware Update service to write image data. */
-+ while(remaining_blocksize > PSA_FWU_MAX_BLOCK_SIZE)
-+ {
-+ if( psa_fwu_write( ( psa_image_id_t ) xOTAImageID,
-+ ( size_t ) ulOffset,
-+ ( const void * )pcData,
-+ PSA_FWU_MAX_BLOCK_SIZE ) != PSA_SUCCESS )
-+ {
-+ return -1;
-+ }
-+
-+ ulOffset += PSA_FWU_MAX_BLOCK_SIZE;
-+ pcData += PSA_FWU_MAX_BLOCK_SIZE;
-+ remaining_blocksize -= PSA_FWU_MAX_BLOCK_SIZE;
-+ }
-+
- if( psa_fwu_write( ( psa_image_id_t ) xOTAImageID,
- ( size_t ) ulOffset,
- ( const void * )pcData,
-- ( size_t ) ulBlockSize ) != PSA_SUCCESS )
-+ ( size_t ) remaining_blocksize ) != PSA_SUCCESS )
- {
- return -1;
- }
-diff --git a/ota_pal.h b/ota_pal.h
-index c837b96..7a0fcf2 100644
---- a/ota_pal.h
-+++ b/ota_pal.h
-@@ -136,7 +136,7 @@ OtaPalStatus_t otaPal_CloseFile( OtaFileContext_t * const pFileContext );
- */
- int16_t otaPal_WriteBlock( OtaFileContext_t * const pFileContext,
- uint32_t ulOffset,
-- uint8_t * const pData,
-+ const uint8_t * pData,
- uint32_t ulBlockSize );
-
- /**
---
-2.25.1
-
diff --git a/examples/vad_an552/ns_side/ext/freertos-ota-pal-psa/CMakeLists.txt b/examples/vad_an552/ns_side/ext/freertos-ota-pal-psa/CMakeLists.txt
index 70c842c..d2e75d4 100644
--- a/examples/vad_an552/ns_side/ext/freertos-ota-pal-psa/CMakeLists.txt
+++ b/examples/vad_an552/ns_side/ext/freertos-ota-pal-psa/CMakeLists.txt
@@ -12,9 +12,8 @@
file(GLOB PATCH_FILES *.patch)
FetchContent_Declare(freertos_ota_pal_psa
- GIT_REPOSITORY https://github.com/Linaro/freertos-ota-pal-psa.git
- GIT_TAG 0b6db7d7cc0260fbb1e54a26ad6ff25cdcde3697
- PATCH_COMMAND ${GIT_EXECUTABLE} apply ${PATCH_FILES}
+ GIT_REPOSITORY https://github.com/bence-balogh/freertos-ota-pal-psa.git
+ GIT_TAG 09ec56e292592333d014665368de116d4b9e5595
)
FetchContent_GetProperties(freertos_ota_pal_psa)
if (NOT freertos_ota_pal_psa)
diff --git a/examples/vad_an552/ns_side/main_ns.c b/examples/vad_an552/ns_side/main_ns.c
index c77f530..881dcf7 100644
--- a/examples/vad_an552/ns_side/main_ns.c
+++ b/examples/vad_an552/ns_side/main_ns.c
@@ -50,7 +50,6 @@
static void* prvCalloc(size_t xNmemb, size_t xSize);
static bool is_first_boot(void);
static void write_boot_pattern(void);
-static void accept_primary_slot_image(void);
/*
* Semihosting is a mechanism that enables code running on an ARM target
@@ -77,17 +76,6 @@
psa_key_handle_t xOTACodeVerifyKeyHandle = 0xAA;
-static void accept_primary_slot_image(void)
-{
- psa_image_id_t running_image = \
- (psa_image_id_t)FWU_CALCULATE_IMAGE_ID(FWU_IMAGE_ID_SLOT_ACTIVE,
- FWU_IMAGE_TYPE_FULL,
- 0);
- vLoggingPrintf("Accepting image by setting image_ok flag to 0x1 in MCUBOOT trailer");
- if (psa_fwu_accept(running_image) != PSA_SUCCESS) {
- vLoggingPrintf("Accept failed");
- }
-}
static bool is_first_boot(void)
{
@@ -226,8 +214,7 @@
stdio_init();
vUARTLockInit();
tfm_ns_interface_init();
-
- GetImageVersionPSA(FWU_IMAGE_TYPE_FULL);
+ GetImageVersionPSA(FWU_COMPONENT_ID_FULL);
vLoggingPrintf("Application firmware version: %d.%d.%d",
appFirmwareVersion.u.x.major,
appFirmwareVersion.u.x.minor,
@@ -240,7 +227,6 @@
mbedtls_platform_set_calloc_free(prvCalloc, vPortFree);
if(is_first_boot()) {
- accept_primary_slot_image();
vDevModeKeyProvisioning();
ota_privision_code_signing_key(&xOTACodeVerifyKeyHandle);
write_boot_pattern();
diff --git a/examples/vad_an552/ns_side/project_config.h b/examples/vad_an552/ns_side/project_config.h
new file mode 100644
index 0000000..8bc33e3
--- /dev/null
+++ b/examples/vad_an552/ns_side/project_config.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2022, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#define PLATFORM_SERVICE_INPUT_BUFFER_SIZE 64
+
+#define PLATFORM_SERVICE_OUTPUT_BUFFER_SIZE 64
+
+#define PLATFORM_SP_STACK_SIZE 0x500
+
+#define PLATFORM_NV_COUNTER_MODULE_DISABLED 0
+
+#define CRYPTO_ENGINE_BUF_SIZE 0x8000
+
+#define CRYPTO_CONC_OPER_NUM 8
+
+#define CRYPTO_RNG_MODULE_ENABLED 1
+
+#define CRYPTO_KEY_MODULE_ENABLED 1
+
+#define CRYPTO_AEAD_MODULE_ENABLED 1
+
+#define CRYPTO_MAC_MODULE_ENABLED 1
+
+#define CRYPTO_HASH_MODULE_ENABLED 1
+
+#define CRYPTO_CIPHER_MODULE_ENABLED 1
+
+#define CRYPTO_ASYM_SIGN_MODULE_ENABLED 1
+
+#define CRYPTO_ASYM_ENCRYPT_MODULE_ENABLED 1
+
+#define CRYPTO_KEY_DERIVATION_MODULE_ENABLED 1
+
+#define CRYPTO_IOVEC_BUFFER_SIZE 5120
+
+#define CRYPTO_NV_SEED 1
+
+#define CRYPTO_SINGLE_PART_FUNCS_DISABLED 0
+
+#define CRYPTO_STACK_SIZE 0x1B00
+
+
+#define TFM_FWU_BUF_SIZE PSA_FWU_MAX_WRITE_SIZE
+
+#define FWU_STACK_SIZE 0x600
+
+
+#define ATTEST_INCLUDE_OPTIONAL_CLAIMS 1
+
+#define ATTEST_INCLUDE_COSE_KEY_ID 0
+
+#define ATTEST_STACK_SIZE 0x700
+
+#define ATTEST_TOKEN_PROFILE_PSA_IOT_1 1
+
+
+#define ITS_CREATE_FLASH_LAYOUT 1
+
+#define ITS_RAM_FS 0
+
+#define ITS_VALIDATE_METADATA_FROM_FLASH 1
+
+#define ITS_MAX_ASSET_SIZE 1300
+
+#define ITS_BUF_SIZE ITS_MAX_ASSET_SIZE
+
+#define ITS_NUM_ASSETS 10
+
+#define ITS_STACK_SIZE 0x720
+
+
+#define PS_CREATE_FLASH_LAYOUT 1
+
+#define PS_RAM_FS 0
+
+#define PS_ROLLBACK_PROTECTION 1
+
+#define PS_VALIDATE_METADATA_FROM_FLASH 1
+
+#define PS_MAX_ASSET_SIZE 2048
+
+#define PS_NUM_ASSETS 10
+
+#define PS_STACK_SIZE 0x700
+
+
+#define CONFIG_TFM_CONN_HANDLE_MAX_NUM 8
+
+#define CONFIG_TFM_DOORBELL_API 1