From 6b8290e37c00b64383c84e72982b7c57e74fdbbe 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 #I46R1C 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 45e83360..0a469329 100755 --- a/config.gni +++ b/config.gni @@ -38,5 +38,6 @@ declare_args() { enable_ohos_kernel_liteos_m_test = false enable_ohos_kernel_liteos_m_pm = true enable_ohos_kernel_liteos_m_lwip = 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 65f03b25..86938b50 100644 --- a/kernel/BUILD.gn +++ b/kernel/BUILD.gn @@ -61,7 +61,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};