From f63c45930cf58c42b3a9392ecc26d0ab94d84897 Mon Sep 17 00:00:00 2001 From: wangchen <253227059@qq.com> Date: Mon, 16 Aug 2021 20:09:05 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E8=83=8C=E6=99=AF=E3=80=91M33?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0GCC=E7=8E=AF=E5=A2=83=E4=B8=8BTZ=E9=BB=98?= =?UTF-8?q?=E8=AE=A4=E5=BC=80=E5=90=AFTZ=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 【修改方案】 1,在M33平台下增加默认选项及开关 2,删除build.gn编译tz的部分,该部分由使用者编译在安全态 3,修改tz初始化的一个问题 【影响】 对现有的产品编译不会有影响。 re #I45UYU Signed-off-by: wangchen <253227059@qq.com> --- config.gni | 1 + kernel/BUILD.gn | 6 +++++- kernel/arch/arm/cortex-m33/gcc/TZ/BUILD.gn | 3 --- .../arch/arm/cortex-m33/gcc/TZ/non_secure/los_trustzone.c | 2 ++ kernel/arch/arm/cortex-m33/gcc/TZ/secure/los_secure_heap.c | 2 +- .../arch/arm/cortex-m33/iar/TZ/non_secure/los_trustzone.c | 2 ++ kernel/arch/arm/cortex-m33/iar/TZ/secure/los_secure_heap.c | 1 + 7 files changed, 12 insertions(+), 5 deletions(-) diff --git a/config.gni b/config.gni index bb123bd6..5b2b3703 100755 --- a/config.gni +++ b/config.gni @@ -40,5 +40,6 @@ declare_args() { enable_ohos_kernel_liteos_m_trace = false enable_ohos_kernel_liteos_m_lwip = false enable_ohos_kernel_liteos_m_dynlink = false + enable_ohos_kernel_liteos_m_tz = false ohos_kernel_liteos_m_lwip_path = "components/net/lwip-2.1:lwip" } diff --git a/kernel/BUILD.gn b/kernel/BUILD.gn index f5d1a0b5..701fab5b 100644 --- a/kernel/BUILD.gn +++ b/kernel/BUILD.gn @@ -62,7 +62,11 @@ static_library("kernel") { } else if ("$board_cpu" == "cortex-m7") { deps = [ "arch/arm/cortex-m7/gcc/:arch" ] } else if ("$board_cpu" == "cortex-m33") { - deps = [ "arch/arm/cortex-m33/gcc/TZ:arch" ] + if (enable_ohos_kernel_liteos_m_tz == true) { + deps = [ "arch/arm/cortex-m33/gcc/TZ:arch" ] + } else { + deps = [ "arch/arm/cortex-m33/gcc/NTZ:arch" ] + } } else if ("$board_cpu" == "") { if ("$board_arch" == "rv32imac" || "$board_arch" == "rv32imafdc") { deps = [ "arch/risc-v/riscv32/gcc:arch" ] diff --git a/kernel/arch/arm/cortex-m33/gcc/TZ/BUILD.gn b/kernel/arch/arm/cortex-m33/gcc/TZ/BUILD.gn index 49389c88..0b95748f 100644 --- a/kernel/arch/arm/cortex-m33/gcc/TZ/BUILD.gn +++ b/kernel/arch/arm/cortex-m33/gcc/TZ/BUILD.gn @@ -35,9 +35,6 @@ static_library("arch") { "non_secure/los_interrupt.c", "non_secure/los_timer.c", "non_secure/los_trustzone.c", - "secure/los_secure_context.c", - "secure/los_secure_context_asm.S", - "secure/los_secure_heap.c", ] include_dirs = [ diff --git a/kernel/arch/arm/cortex-m33/gcc/TZ/non_secure/los_trustzone.c b/kernel/arch/arm/cortex-m33/gcc/TZ/non_secure/los_trustzone.c index ce989d58..316e6621 100755 --- a/kernel/arch/arm/cortex-m33/gcc/TZ/non_secure/los_trustzone.c +++ b/kernel/arch/arm/cortex-m33/gcc/TZ/non_secure/los_trustzone.c @@ -34,6 +34,7 @@ #include "los_secure_context.h" #include "los_debug.h" #include "los_arch_context.h" +#include "los_interrupt.h" OsSecureContext *g_secureContext = NULL; @@ -69,6 +70,7 @@ VOID LOS_SecureContextAlloc(UINT32 secureStackSize) return; } + LOS_ASSERT((__get_IPSR() == 0) && (__get_PRIMASK() == 0)); secureStackSize = LOS_Align(secureStackSize, sizeof(UINTPTR)); HalSVCSecureContextAlloc(secureStackSize); } diff --git a/kernel/arch/arm/cortex-m33/gcc/TZ/secure/los_secure_heap.c b/kernel/arch/arm/cortex-m33/gcc/TZ/secure/los_secure_heap.c index c576ba69..8d5d5b18 100755 --- a/kernel/arch/arm/cortex-m33/gcc/TZ/secure/los_secure_heap.c +++ b/kernel/arch/arm/cortex-m33/gcc/TZ/secure/los_secure_heap.c @@ -34,7 +34,7 @@ #include "los_config.h" #include "los_list.h" -STATIC UINT8 g_secureHeap[LOSCFG_SECURE_HEAP_SIZE] = {0}; +STATIC UINT8 __attribute__((aligned(0x4)))g_secureHeap[LOSCFG_SECURE_HEAP_SIZE] = {0}; STATIC LOS_DL_LIST g_secureHeapFreeList = {NULL, NULL}; struct OsSecureHeapNode { diff --git a/kernel/arch/arm/cortex-m33/iar/TZ/non_secure/los_trustzone.c b/kernel/arch/arm/cortex-m33/iar/TZ/non_secure/los_trustzone.c index ce989d58..316e6621 100644 --- a/kernel/arch/arm/cortex-m33/iar/TZ/non_secure/los_trustzone.c +++ b/kernel/arch/arm/cortex-m33/iar/TZ/non_secure/los_trustzone.c @@ -34,6 +34,7 @@ #include "los_secure_context.h" #include "los_debug.h" #include "los_arch_context.h" +#include "los_interrupt.h" OsSecureContext *g_secureContext = NULL; @@ -69,6 +70,7 @@ VOID LOS_SecureContextAlloc(UINT32 secureStackSize) return; } + LOS_ASSERT((__get_IPSR() == 0) && (__get_PRIMASK() == 0)); secureStackSize = LOS_Align(secureStackSize, sizeof(UINTPTR)); HalSVCSecureContextAlloc(secureStackSize); } diff --git a/kernel/arch/arm/cortex-m33/iar/TZ/secure/los_secure_heap.c b/kernel/arch/arm/cortex-m33/iar/TZ/secure/los_secure_heap.c index c576ba69..2c7f15ae 100644 --- a/kernel/arch/arm/cortex-m33/iar/TZ/secure/los_secure_heap.c +++ b/kernel/arch/arm/cortex-m33/iar/TZ/secure/los_secure_heap.c @@ -34,6 +34,7 @@ #include "los_config.h" #include "los_list.h" +#pragma data_alignment=0x4 STATIC UINT8 g_secureHeap[LOSCFG_SECURE_HEAP_SIZE] = {0}; STATIC LOS_DL_LIST g_secureHeapFreeList = {NULL, NULL};