From 9271990670dac6df02e45d2631fa156004d8f42e Mon Sep 17 00:00:00 2001 From: Paul Pan Date: Fri, 3 Feb 2023 22:22:10 +0800 Subject: [PATCH] Platform: BL_MCU initial support --- core/shared/platform/bl-mcu/blmcu_malloc.c | 25 +++++++++++ core/shared/platform/bl-mcu/blmcu_memmap.c | 31 +++++++++++++ core/shared/platform/bl-mcu/blmcu_platform.c | 31 +++++++++++++ .../platform/bl-mcu/platform_internal.h | 44 +++++++++++++++++++ .../platform/bl-mcu/shared_platform.cmake | 13 ++++++ 5 files changed, 144 insertions(+) create mode 100644 core/shared/platform/bl-mcu/blmcu_malloc.c create mode 100644 core/shared/platform/bl-mcu/blmcu_memmap.c create mode 100644 core/shared/platform/bl-mcu/blmcu_platform.c create mode 100644 core/shared/platform/bl-mcu/platform_internal.h create mode 100644 core/shared/platform/bl-mcu/shared_platform.cmake diff --git a/core/shared/platform/bl-mcu/blmcu_malloc.c b/core/shared/platform/bl-mcu/blmcu_malloc.c new file mode 100644 index 00000000..fd603b8d --- /dev/null +++ b/core/shared/platform/bl-mcu/blmcu_malloc.c @@ -0,0 +1,25 @@ +#include "platform_api_vmcore.h" + +void * +os_malloc(unsigned size) +{ + return malloc(size); +} + +void * +os_realloc(void *ptr, unsigned size) +{ + return realloc(ptr, size); +} + +void +os_free(void *ptr) +{ + free(ptr); +} + +int +os_dumps_proc_mem_info(char *out, unsigned int size) +{ + return -1; +} diff --git a/core/shared/platform/bl-mcu/blmcu_memmap.c b/core/shared/platform/bl-mcu/blmcu_memmap.c new file mode 100644 index 00000000..75e44f4f --- /dev/null +++ b/core/shared/platform/bl-mcu/blmcu_memmap.c @@ -0,0 +1,31 @@ +#include "platform_api_vmcore.h" + +#if defined(BL808) +#include "bl808_l1c.h" +#endif + +void * +os_mmap(void *hint, size_t size, int prot, int flags) +{ + return os_malloc(size); +} + +void +os_munmap(void *addr, size_t size) +{ + return os_free(addr); +} + +int +os_mprotect(void *addr, size_t size, int prot) +{ + return 0; +} + +void +os_dcache_flush() +{ +#if defined(BL808) + L1C_DCache_Clean_Invalid_All(); +#endif +} diff --git a/core/shared/platform/bl-mcu/blmcu_platform.c b/core/shared/platform/bl-mcu/blmcu_platform.c new file mode 100644 index 00000000..eca2d5ef --- /dev/null +++ b/core/shared/platform/bl-mcu/blmcu_platform.c @@ -0,0 +1,31 @@ +#include "platform_api_vmcore.h" + +int +os_thread_sys_init(); + +void +os_thread_sys_destroy(); + +int +bh_platform_init() +{ + return os_thread_sys_init(); +} + +void +bh_platform_destroy() +{ + os_thread_sys_destroy(); +} + +uint8 * +os_thread_get_stack_boundary(void) +{ +#if (configUSE_TRACE_FACILITY == 1) + TaskStatus_t pxTaskStatus; + vTaskGetInfo(xTaskGetCurrentTaskHandle(), &pxTaskStatus, pdTRUE, eInvalid); + return pxTaskStatus.pxStackBase; +#else + return NULL; +#endif +} diff --git a/core/shared/platform/bl-mcu/platform_internal.h b/core/shared/platform/bl-mcu/platform_internal.h new file mode 100644 index 00000000..c40a518b --- /dev/null +++ b/core/shared/platform/bl-mcu/platform_internal.h @@ -0,0 +1,44 @@ +#ifndef _PLATFORM_INTERNAL_H +#define _PLATFORM_INTERNAL_H + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#ifndef BH_PLATFORM_BL_MCU +#define BH_PLATFORM_BL_MCU +#endif + +typedef TaskHandle_t korp_thread; +typedef korp_thread korp_tid; +typedef struct { + bool is_recursive; + SemaphoreHandle_t sem; +} korp_mutex; + +struct os_thread_wait_node; +typedef struct os_thread_wait_node *os_thread_wait_list; +typedef struct korp_cond { + SemaphoreHandle_t wait_list_lock; + os_thread_wait_list thread_wait_list; +} korp_cond; + +typedef unsigned int korp_sem; + +#undef signbit + +#define BH_THREAD_DEFAULT_PRIORITY 5 + +#define os_printf printf +#define os_vprintf vprintf + +#endif diff --git a/core/shared/platform/bl-mcu/shared_platform.cmake b/core/shared/platform/bl-mcu/shared_platform.cmake new file mode 100644 index 00000000..cced018b --- /dev/null +++ b/core/shared/platform/bl-mcu/shared_platform.cmake @@ -0,0 +1,13 @@ +set(PLATFORM_SHARED_DIR ${CMAKE_CURRENT_LIST_DIR}) + +add_definitions(-DBH_PLATFORM_BL_MCU) + +include_directories(${PLATFORM_SHARED_DIR}) +include_directories(${PLATFORM_SHARED_DIR}/../include) + +include(${CMAKE_CURRENT_LIST_DIR}/../common/freertos/platform_api_freertos.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/../common/math/platform_api_math.cmake) + +file(GLOB_RECURSE source_all ${PLATFORM_SHARED_DIR}/*.c) + +set(PLATFORM_SHARED_SOURCE ${source_all} ${PLATFORM_COMMON_MATH_SOURCE} ${PLATFORM_COMMON_FREERTOS_SOURCE})