diff options
author | David Vincze <david.vincze@linaro.org> | 2020-09-23 18:25:56 +0200 |
---|---|---|
committer | Tamas Ban <tamas.ban@arm.com> | 2020-09-30 08:07:38 +0000 |
commit | 7d591a684b4abb0f61fbba8668dd6ea7b4b68698 (patch) | |
tree | 3fbf6a821b24faf90570c780cf5a13c9d20df65f /bl2 | |
parent | 69e2d2e49968cb0e8438e4f8fddff3e8f74ea886 (diff) | |
download | trusted-firmware-m-7d591a684b4abb0f61fbba8668dd6ea7b4b68698.tar.gz |
Boot: Remove platform specific code from bl2_main.c
Clean-up bl2_main.c and move all platform dependent code
to appropriate boot_hal.c
Signed-off-by: Balint Matyi <Balint.Matyi@arm.com>
Change-Id: Ieef1896ca6a0afc15c513bc4aa0acf3fa1a06c7a
Diffstat (limited to 'bl2')
-rw-r--r-- | bl2/ext/mcuboot/bl2_main.c | 82 |
1 files changed, 11 insertions, 71 deletions
diff --git a/bl2/ext/mcuboot/bl2_main.c b/bl2/ext/mcuboot/bl2_main.c index e9fc75e025..fcaab36fb0 100644 --- a/bl2/ext/mcuboot/bl2_main.c +++ b/bl2/ext/mcuboot/bl2_main.c @@ -19,36 +19,21 @@ #include <assert.h> #include "target.h" #include "tfm_hal_device_header.h" -#include "Driver_Flash.h" #include "mbedtls/memory_buffer_alloc.h" +#include "bootutil/security_cnt.h" #include "bootutil/bootutil_log.h" #include "bootutil/image.h" #include "bootutil/bootutil.h" -#include "flash_map_backend/flash_map_backend.h" #include "bootutil/boot_record.h" -#include "bootutil/security_cnt.h" +#include "flash_map_backend/flash_map_backend.h" #include "boot_hal.h" -#include "region.h" -#if MCUBOOT_LOG_LEVEL > MCUBOOT_LOG_LEVEL_OFF #include "uart_stdout.h" -#endif -#if defined(CRYPTO_HW_ACCELERATOR) || \ - defined(CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING) -#include "crypto_hw.h" -#endif /* Avoids the semihosting issue */ #if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050) __asm(" .global __ARM_use_no_argv\n"); #endif -#if defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8M_BASE__) -REGION_DECLARE(Image$$, ARM_LIB_STACK, $$ZI$$Base); -#endif - -/* Flash device name must be specified by target */ -extern ARM_DRIVER_FLASH FLASH_DEV_NAME; - #ifdef MCUBOOT_ENCRYPT_RSA #define BL2_MBEDTLS_MEM_BUF_LEN 0x225C #else @@ -84,31 +69,29 @@ static void do_boot(struct boot_rsp *rsp) rsp->br_image_off + rsp->br_hdr->ih_hdr_size); } - rc = FLASH_DEV_NAME.Uninitialize(); - if(rc != ARM_DRIVER_OK) { - BOOT_LOG_ERR("Error while uninitializing Flash Interface"); - } #if MCUBOOT_LOG_LEVEL > MCUBOOT_LOG_LEVEL_OFF stdio_uninit(); #endif + /* This function never returns, because it calls the secure application - * Reset_Handler() + * Reset_Handler(). */ boot_platform_quit(vt); } int main(void) { -#if defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8M_BASE__) - uint32_t msp_stack_bottom = - (uint32_t)®ION_NAME(Image$$, ARM_LIB_STACK, $$ZI$$Base); -#endif struct boot_rsp rsp; int rc; -#if defined(__ARM_ARCH_8M_MAIN__) || defined(__ARM_ARCH_8M_BASE__) - __set_MSPLIM(msp_stack_bottom); + /* Initialise the mbedtls static memory allocator so that mbedtls allocates + * memory from the provided static buffer instead of from the heap. + */ + mbedtls_memory_buffer_alloc_init(mbedtls_mem_buf, BL2_MBEDTLS_MEM_BUF_LEN); + +#if MCUBOOT_LOG_LEVEL > MCUBOOT_LOG_LEVEL_OFF + stdio_init(); #endif /* Perform platform specific initialization */ @@ -117,25 +100,8 @@ int main(void) ; } -#if MCUBOOT_LOG_LEVEL > MCUBOOT_LOG_LEVEL_OFF - stdio_init(); -#endif - BOOT_LOG_INF("Starting bootloader"); - /* Initialise the mbedtls static memory allocator so that mbedtls allocates - * memory from the provided static buffer instead of from the heap. - */ - mbedtls_memory_buffer_alloc_init(mbedtls_mem_buf, BL2_MBEDTLS_MEM_BUF_LEN); - -#ifdef CRYPTO_HW_ACCELERATOR - rc = crypto_hw_accelerator_init(); - if (rc) { - BOOT_LOG_ERR("Error while initializing cryptographic accelerator."); - while (1); - } -#endif /* CRYPTO_HW_ACCELERATOR */ - rc = boot_nv_security_counter_init(); if (rc != 0) { BOOT_LOG_ERR("Error while initializing the security counter"); @@ -150,32 +116,6 @@ int main(void) ; } -#ifdef CRYPTO_HW_ACCELERATOR - rc = crypto_hw_accelerator_finish(); - if (rc) { - BOOT_LOG_ERR("Error while uninitializing cryptographic accelerator."); - while (1); - } -#endif /* CRYPTO_HW_ACCELERATOR */ - -/* This is a workaround to program the TF-M related cryptographic keys - * to CC312 OTP memory. This functionality is independent from secure boot, - * this is usually done in the factory floor during chip manufacturing. - */ -#ifdef CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING - BOOT_LOG_INF("OTP provisioning started."); - rc = crypto_hw_accelerator_otp_provisioning(); - if (rc) { - BOOT_LOG_ERR("OTP provisioning FAILED: 0x%X", rc); - while (1); - } else { - BOOT_LOG_INF("OTP provisioning succeeded. TF-M won't be loaded."); - - /* We don't need to boot - the only aim is provisioning. */ - while (1); - } -#endif /* CRYPTO_HW_ACCELERATOR_OTP_PROVISIONING */ - BOOT_LOG_INF("Bootloader chainload address offset: 0x%x", rsp.br_image_off); BOOT_LOG_INF("Jumping to the first image slot"); |