Robert Rostohar | 85056ab | 2021-01-25 17:01:11 +0100 | [diff] [blame] | 1 | #!/bin/bash |
| 2 | # Copyright (c) 2020, Arm Limited. All rights reserved. |
| 3 | # SPDX-License-Identifier: BSD-3-Clause |
| 4 | # Setup MPS2 TF-M Platform for building CMSIS-Pack |
| 5 | |
| 6 | # TF-M root directory |
| 7 | TFM_ROOT=./trusted-firmware-m |
| 8 | |
| 9 | # MCUboot root directory |
| 10 | MCUBOOT_ROOT=./mcuboot |
| 11 | |
| 12 | # Source and destination root directory |
| 13 | SRC_ROOT=./trusted-firmware-m/platform/ext/target/mps2/an521 |
| 14 | DST_ROOT=./tf-m-platform-mps2/mps2/an521 |
| 15 | |
| 16 | # Copy TF-M Platform files |
| 17 | mkdir -p ${DST_ROOT} |
| 18 | mkdir -p ${DST_ROOT}/native_drivers |
| 19 | mkdir -p ${DST_ROOT}/partition |
| 20 | mkdir -p ${DST_ROOT}/services/src |
| 21 | cp -v ${SRC_ROOT}/boot_hal.c ${DST_ROOT}/ |
| 22 | cp -v ${SRC_ROOT}/plat_test.c ${DST_ROOT}/ |
| 23 | cp -v ${SRC_ROOT}/spm_hal.c ${DST_ROOT}/ |
| 24 | cp -v ${SRC_ROOT}/target_cfg.c ${DST_ROOT}/ |
| 25 | cp -v ${SRC_ROOT}/target_cfg.h ${DST_ROOT}/ |
| 26 | cp -v ${SRC_ROOT}/tfm_hal_isolation.c ${DST_ROOT}/ |
| 27 | cp -v ${SRC_ROOT}/tfm_peripherals_def.h ${DST_ROOT}/ |
| 28 | cp -v ${SRC_ROOT}/native_drivers/mpu_armv8m_drv.c ${DST_ROOT}/native_drivers/ |
| 29 | cp -v ${SRC_ROOT}/native_drivers/mpu_armv8m_drv.h ${DST_ROOT}/native_drivers/ |
| 30 | cp -v ${SRC_ROOT}/partition/flash_layout.h ${DST_ROOT}/partition/ |
| 31 | cp -v ${SRC_ROOT}/partition/region_defs.h ${DST_ROOT}/partition/ |
| 32 | cp -v ${SRC_ROOT}/services/src/tfm_platform_system.c ${DST_ROOT}/services/src/ |
| 33 | |
| 34 | # Copy TF-M Platform device files (temporary directory before patching) |
| 35 | mkdir -p ${DST_ROOT}/device |
| 36 | mkdir -p ${DST_ROOT}/device/bl2 |
| 37 | mkdir -p ${DST_ROOT}/device/secure |
| 38 | mkdir -p ${DST_ROOT}/device/non_secure |
| 39 | cp -v ${SRC_ROOT}/cmsis_driver_config.h ${DST_ROOT}/device/ |
| 40 | cp -v ${SRC_ROOT}/device_cfg.h ${DST_ROOT}/device/ |
| 41 | cp -v ${SRC_ROOT}/RTE_Device.h ${DST_ROOT}/device/ |
| 42 | cp -v ${SRC_ROOT}/armclang/startup_cmsdk_mps2_an521_bl2.s ${DST_ROOT}/device/bl2/ |
| 43 | cp -v ${SRC_ROOT}/armclang/startup_cmsdk_mps2_an521_s.s ${DST_ROOT}/device/secure/ |
| 44 | cp -v ${SRC_ROOT}/armclang/startup_cmsdk_mps2_an521_ns.s ${DST_ROOT}/device/non_secure/ |
| 45 | cp -v ${SRC_ROOT}/armclang/mps2_an521_bl2.sct ${DST_ROOT}/device/bl2/ |
| 46 | cp -v ${SRC_ROOT}/armclang/mps2_an521_ns.sct ${DST_ROOT}/device/non_secure/ |
| 47 | cp -v ${SRC_ROOT}/cmsis_core/cmsis.h ${DST_ROOT}/device/ |
| 48 | cp -v ${SRC_ROOT}/cmsis_core/cmsis_cpu.h ${DST_ROOT}/device/ |
| 49 | cp -v ${SRC_ROOT}/cmsis_core/mps2_an521.h ${DST_ROOT}/device/ |
| 50 | cp -v ${SRC_ROOT}/cmsis_core/platform_irq.h ${DST_ROOT}/device/ |
| 51 | cp -v ${SRC_ROOT}/cmsis_core/platform_regs.h ${DST_ROOT}/device/ |
| 52 | cp -v ${SRC_ROOT}/cmsis_core/system_cmsdk_mps2_an521.c ${DST_ROOT}/device/ |
| 53 | cp -v ${SRC_ROOT}/cmsis_core/system_cmsdk_mps2_an521.h ${DST_ROOT}/device/ |
| 54 | cp -v ${SRC_ROOT}/retarget/platform_retarget.h ${DST_ROOT}/device/ |
| 55 | cp -v ${SRC_ROOT}/retarget/platform_retarget_dev.c ${DST_ROOT}/device/ |
| 56 | cp -v ${SRC_ROOT}/retarget/platform_retarget_dev.h ${DST_ROOT}/device/ |
| 57 | cp -v ${SRC_ROOT}/retarget/platform_retarget_pins.h ${DST_ROOT}/device/ |
| 58 | cp -v ${DST_ROOT}/target_cfg.h ${DST_ROOT}/device/ |
| 59 | cp -v ${DST_ROOT}/target_cfg.c ${DST_ROOT}/device/secure/ |
| 60 | cp -v ${DST_ROOT}/spm_hal.c ${DST_ROOT}/device/secure/ |
| 61 | cp -v ${DST_ROOT}/tfm_peripherals_def.h ${DST_ROOT}/device/secure/ |
| 62 | |
| 63 | # Apply patches |
| 64 | cd tf-m-platform-mps2 |
| 65 | for f in ../tf-m-platform-mps2_patch/*.patch |
| 66 | do |
| 67 | git apply -v $f |
| 68 | done |
| 69 | cd .. |
| 70 | |
| 71 | # Update TF-M Platform files (after patching) |
| 72 | cp -vf ${DST_ROOT}/device/target_cfg.h ${DST_ROOT}/ |
| 73 | cp -vf ${DST_ROOT}/device/secure/target_cfg.c ${DST_ROOT}/ |
| 74 | cp -vf ${DST_ROOT}/device/secure/spm_hal.c ${DST_ROOT}/ |
| 75 | cp -vf ${DST_ROOT}/device/secure/tfm_peripherals_def.h ${DST_ROOT}/ |
| 76 | |
| 77 | # Destination path for projects (bl2+secure) |
| 78 | DST_PATH=" |
| 79 | ${DST_ROOT}/project/fvp/tfm_bl/bl2 |
| 80 | ${DST_ROOT}/project/fvp/tfm_bl/tfm_s |
| 81 | ${DST_ROOT}/project/fvp/tfm/tfm_s |
| 82 | ${DST_ROOT}/test/fvp/ipc_l1/tfm_s |
| 83 | ${DST_ROOT}/test/fvp/ipc_l2/tfm_s |
| 84 | ${DST_ROOT}/test/fvp/ipc_l3/tfm_s |
| 85 | ${DST_ROOT}/test/fvp/sfn/tfm_s |
| 86 | " |
| 87 | |
| 88 | # Copy TF-M Platform native drivers |
| 89 | FILE_LIST=" |
| 90 | arm_uart_drv.c |
| 91 | arm_uart_drv.h |
| 92 | mpc_sie200_drv.c |
| 93 | mpc_sie200_drv.h |
| 94 | ppc_sse200_drv.c |
| 95 | ppc_sse200_drv.h |
| 96 | " |
| 97 | SUB_DIR=native_drivers |
| 98 | for d in ${DST_PATH} |
| 99 | do |
| 100 | mkdir -p $d/${SUB_DIR} |
| 101 | for f in ${FILE_LIST} |
| 102 | do |
| 103 | cp -v ${SRC_ROOT}/${SUB_DIR}/$f $d/${SUB_DIR}/ |
| 104 | done |
| 105 | done |
| 106 | |
| 107 | FILE_LIST=" |
| 108 | timer_cmsdk.c |
| 109 | timer_cmsdk.h |
| 110 | " |
| 111 | SUB_DIR=native_drivers/timer_cmsdk |
| 112 | for d in ${DST_PATH} |
| 113 | do |
| 114 | mkdir -p $d/${SUB_DIR} |
| 115 | for f in ${FILE_LIST} |
| 116 | do |
| 117 | cp -v ${SRC_ROOT}/${SUB_DIR}/$f $d/${SUB_DIR}/ |
| 118 | done |
| 119 | done |
| 120 | |
| 121 | # Copy TF-M Platform CMSIS drivers |
| 122 | FILE_LIST=" |
| 123 | Driver_Flash.c |
| 124 | Driver_MPC.c |
| 125 | Driver_PPC.c |
| 126 | Driver_USART.c |
| 127 | " |
| 128 | SUB_DIR=cmsis_drivers |
| 129 | for d in ${DST_PATH} |
| 130 | do |
| 131 | mkdir -p $d/${SUB_DIR} |
| 132 | for f in ${FILE_LIST} |
| 133 | do |
| 134 | cp -v ${SRC_ROOT}/${SUB_DIR}/$f $d/${SUB_DIR}/ |
| 135 | done |
| 136 | done |
| 137 | |
| 138 | FILE_LIST=" |
| 139 | Driver_MPC.h |
| 140 | Driver_PPC.h |
| 141 | " |
| 142 | SRC_DIR=../../../driver |
| 143 | DST_DIR=cmsis_drivers |
| 144 | for d in ${DST_PATH} |
| 145 | do |
| 146 | mkdir -p $d/${DST_DIR} |
| 147 | for f in ${FILE_LIST} |
| 148 | do |
| 149 | cp -v ${SRC_ROOT}/${SRC_DIR}/$f $d/${DST_DIR}/ |
| 150 | done |
| 151 | done |
| 152 | |
| 153 | # Destination directory for device files |
| 154 | DST_DIR=RTE/Device/SMM-SSE-200 |
| 155 | |
| 156 | # Destination path for projects (bl2+secure+non_secure) |
| 157 | DST_PATH=" |
| 158 | ${DST_ROOT}/project/fvp/tfm_bl/bl2 |
| 159 | ${DST_ROOT}/project/fvp/tfm_bl/tfm_s |
| 160 | ${DST_ROOT}/project/fvp/tfm_bl/tfm_ns |
| 161 | ${DST_ROOT}/project/fvp/tfm/tfm_s |
| 162 | ${DST_ROOT}/project/fvp/tfm/tfm_ns |
| 163 | ${DST_ROOT}/test/fvp/ipc_l1/tfm_s |
| 164 | ${DST_ROOT}/test/fvp/ipc_l1/tfm_ns |
| 165 | ${DST_ROOT}/test/fvp/ipc_l2/tfm_s |
| 166 | ${DST_ROOT}/test/fvp/ipc_l2/tfm_ns |
| 167 | ${DST_ROOT}/test/fvp/ipc_l3/tfm_s |
| 168 | ${DST_ROOT}/test/fvp/ipc_l3/tfm_ns |
| 169 | ${DST_ROOT}/test/fvp/sfn/tfm_s |
| 170 | ${DST_ROOT}/test/fvp/sfn/tfm_ns |
| 171 | " |
| 172 | |
| 173 | # Copy device files (bl2+secure+non_secure) |
| 174 | for d in ${DST_PATH} |
| 175 | do |
| 176 | mkdir -p $d/${DST_DIR} |
| 177 | cp -v ${DST_ROOT}/device/*.* $d/${DST_DIR}/ |
| 178 | done |
| 179 | |
| 180 | # Destination path for projects (bl2) |
| 181 | DST_PATH=" |
| 182 | ${DST_ROOT}/project/fvp/tfm_bl/bl2 |
| 183 | " |
| 184 | |
| 185 | # Copy device files (bl2) |
| 186 | for d in ${DST_PATH} |
| 187 | do |
| 188 | mkdir -p $d/${DST_DIR} |
| 189 | cp -v ${DST_ROOT}/device/bl2/*.* $d/${DST_DIR}/ |
| 190 | done |
| 191 | |
| 192 | # Copy TF-M specific files (bl2) |
| 193 | for d in ${DST_PATH} |
| 194 | do |
| 195 | mkdir -p $d/RTE/TFM |
| 196 | cp -v ${TFM_ROOT}/bl2/ext/mcuboot/config/mcuboot-mbedtls-cfg.h $d/RTE/TFM/ |
Robert Rostohar | c25fc5f | 2021-02-18 14:59:06 +0100 | [diff] [blame] | 197 | sed -b -i '/#define __MCUBOOT_MBEDTLS_CFG__/a\\r\n#include "bl2_config.h"\r' $d/RTE/TFM/mcuboot-mbedtls-cfg.h |
Robert Rostohar | 85056ab | 2021-01-25 17:01:11 +0100 | [diff] [blame] | 198 | mkdir -p $d/RTE/TFM_Platform/SMM-SSE-200 |
| 199 | cp -v ${DST_ROOT}/boot_hal.c $d/RTE/TFM_Platform/SMM-SSE-200/ |
| 200 | cp -v ${DST_ROOT}/partition/flash_layout.h $d/RTE/TFM_Platform/SMM-SSE-200/ |
| 201 | cp -v ${DST_ROOT}/partition/region_defs.h $d/RTE/TFM_Platform/SMM-SSE-200/ |
| 202 | done |
| 203 | |
| 204 | # Destination path for projects (secure) |
| 205 | DST_PATH=" |
| 206 | ${DST_ROOT}/project/fvp/tfm_bl/tfm_s |
| 207 | ${DST_ROOT}/project/fvp/tfm/tfm_s |
| 208 | ${DST_ROOT}/test/fvp/ipc_l1/tfm_s |
| 209 | ${DST_ROOT}/test/fvp/ipc_l2/tfm_s |
| 210 | ${DST_ROOT}/test/fvp/ipc_l3/tfm_s |
| 211 | ${DST_ROOT}/test/fvp/sfn/tfm_s |
| 212 | " |
| 213 | |
| 214 | # Copy device files (secure) |
| 215 | for d in ${DST_PATH} |
| 216 | do |
| 217 | mkdir -p $d/${DST_DIR} |
| 218 | cp -v ${DST_ROOT}/device/secure/*.* $d/${DST_DIR}/ |
| 219 | done |
| 220 | |
| 221 | # Copy TF-M specific files (secure) |
| 222 | for d in ${DST_PATH} |
| 223 | do |
| 224 | mkdir -p $d/RTE/TFM |
| 225 | cp -v ${TFM_ROOT}/platform/ext/common/armclang/tfm_common_s.sct $d/RTE/TFM/ |
| 226 | cp -v ${TFM_ROOT}/platform/ext/common/armclang/tfm_isolation_l3.sct $d/RTE/TFM/ |
| 227 | cp -v ${TFM_ROOT}/lib/ext/mbedcrypto/mbedcrypto_config/tfm_mbedcrypto_config.h $d/RTE/TFM/ |
| 228 | mkdir -p $d/RTE/TFM_Platform |
| 229 | cp -v ${TFM_ROOT}/platform/ext/common/template/attest_hal.c $d/RTE/TFM_Platform/ |
| 230 | mkdir -p $d/RTE/TFM_Platform/SMM-SSE-200 |
| 231 | cp -v ${DST_ROOT}/partition/flash_layout.h $d/RTE/TFM_Platform/SMM-SSE-200/ |
| 232 | cp -v ${DST_ROOT}/partition/region_defs.h $d/RTE/TFM_Platform/SMM-SSE-200/ |
| 233 | cp -v ${DST_ROOT}/services/src/tfm_platform_system.c $d/RTE/TFM_Platform/SMM-SSE-200/ |
| 234 | done |
| 235 | |
| 236 | # Destination path for projects (non_secure) |
| 237 | DST_PATH=" |
| 238 | ${DST_ROOT}/project/fvp/tfm_bl/tfm_ns |
| 239 | ${DST_ROOT}/project/fvp/tfm/tfm_ns |
| 240 | ${DST_ROOT}/test/fvp/ipc_l1/tfm_ns |
| 241 | ${DST_ROOT}/test/fvp/ipc_l2/tfm_ns |
| 242 | ${DST_ROOT}/test/fvp/ipc_l3/tfm_ns |
| 243 | ${DST_ROOT}/test/fvp/sfn/tfm_ns |
| 244 | " |
| 245 | |
| 246 | # Copy device files (non_secure) |
| 247 | for d in ${DST_PATH} |
| 248 | do |
| 249 | mkdir -p $d/${DST_DIR} |
| 250 | cp -v ${DST_ROOT}/device/non_secure/* $d/${DST_DIR}/ |
| 251 | done |
| 252 | |
| 253 | # Adjust memory map of non-secure project when using bootloader |
| 254 | pushd ${DST_ROOT}/project/fvp/tfm_bl/tfm_ns/${DST_DIR} |
Robert Rostohar | c25fc5f | 2021-02-18 14:59:06 +0100 | [diff] [blame] | 255 | sed -b -i 's/NS_CODE_START (0x00100000)/NS_CODE_START (0x00100400)/' mps2_an521_ns.sct |
| 256 | sed -b -i 's/NS_CODE_SIZE (0x00080000)/NS_CODE_SIZE (0x0007F800)/' mps2_an521_ns.sct |
Robert Rostohar | 85056ab | 2021-01-25 17:01:11 +0100 | [diff] [blame] | 257 | popd |
| 258 | |
| 259 | # Remove temporary device files |
| 260 | rm -r ${DST_ROOT}/device |
| 261 | |
| 262 | # Copy root and encryption keys |
| 263 | cp -v ${TFM_ROOT}/bl2/ext/mcuboot/root-RSA-3072.pem ${DST_ROOT}/project/fvp/tfm_bl/tfm_s/ |
| 264 | cp -v ${TFM_ROOT}/bl2/ext/mcuboot/root-RSA-3072_1.pem ${DST_ROOT}/project/fvp/tfm_bl/tfm_ns/ |
| 265 | cp -v ${MCUBOOT_ROOT}/enc-rsa2048-pub.pem ${DST_ROOT}/project/fvp/tfm_bl/tfm_s/ |
| 266 | cp -v ${MCUBOOT_ROOT}/enc-rsa2048-pub.pem ${DST_ROOT}/project/fvp/tfm_bl/tfm_ns/ |
| 267 | |
| 268 | # Copy pack addon files |
| 269 | cp -vr ./tf-m-platform-mps2_addon/* ./tf-m-platform-mps2/ |