aboutsummaryrefslogtreecommitdiff
path: root/bl2
diff options
context:
space:
mode:
authorDavid Vincze <david.vincze@linaro.org>2020-09-23 18:25:56 +0200
committerTamas Ban <tamas.ban@arm.com>2020-09-30 08:07:38 +0000
commit7d591a684b4abb0f61fbba8668dd6ea7b4b68698 (patch)
tree3fbf6a821b24faf90570c780cf5a13c9d20df65f /bl2
parent69e2d2e49968cb0e8438e4f8fddff3e8f74ea886 (diff)
downloadtrusted-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.c82
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)&REGION_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");