Import FreeRTOS platform experiment codes for further development (#451)

This commit is contained in:
Wenyong Huang
2020-11-26 19:10:05 +08:00
committed by GitHub
parent 74be7a0b7c
commit 0359805c82
11 changed files with 1117 additions and 2 deletions

View File

@ -0,0 +1,106 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#include "bh_platform.h"
#include "wasm_export.h"
#include "test_wasm.h"
#define CONFIG_GLOBAL_HEAP_BUF_SIZE 131072
#define CONFIG_APP_STACK_SIZE 8192
#define CONFIG_APP_HEAP_SIZE 8192
static int app_argc;
static char **app_argv;
static void*
app_instance_main(wasm_module_inst_t module_inst)
{
const char *exception;
wasm_application_execute_main(module_inst, app_argc, app_argv);
if ((exception = wasm_runtime_get_exception(module_inst)))
os_printf("%s\n", exception);
return NULL;
}
static char global_heap_buf[CONFIG_GLOBAL_HEAP_BUF_SIZE] = { 0 };
void iwasm_main(void)
{
uint8 *wasm_file_buf = NULL;
uint32 wasm_file_size;
wasm_module_t wasm_module = NULL;
wasm_module_inst_t wasm_module_inst = NULL;
RuntimeInitArgs init_args;
char error_buf[128];
#if WASM_ENABLE_LOG != 0
int log_verbose_level = 2;
#endif
os_printf("### iwasm main begin\n");
memset(&init_args, 0, sizeof(RuntimeInitArgs));
init_args.mem_alloc_type = Alloc_With_Pool;
init_args.mem_alloc_option.pool.heap_buf = global_heap_buf;
init_args.mem_alloc_option.pool.heap_size = sizeof(global_heap_buf);
/* initialize runtime environment */
if (!wasm_runtime_full_init(&init_args)) {
os_printf("Init runtime environment failed.\n");
return;
}
os_printf("### wasm runtime initialized.\n");
#if WASM_ENABLE_LOG != 0
bh_log_set_verbose_level(log_verbose_level);
#endif
/* load WASM byte buffer from byte buffer of include file */
wasm_file_buf = (uint8*)wasm_test_file;
wasm_file_size = sizeof(wasm_test_file);
/* load WASM module */
if (!(wasm_module = wasm_runtime_load(wasm_file_buf, wasm_file_size,
error_buf, sizeof(error_buf)))) {
os_printf("%s\n", error_buf);
goto fail1;
}
os_printf("### wasm runtime load module success.\n");
/* instantiate the module */
if (!(wasm_module_inst = wasm_runtime_instantiate(wasm_module,
CONFIG_APP_STACK_SIZE,
CONFIG_APP_HEAP_SIZE,
error_buf,
sizeof(error_buf)))) {
os_printf("%s\n", error_buf);
goto fail2;
}
os_printf("### wasm runtime instantiate module success.\n");
/* invoke the main function */
app_instance_main(wasm_module_inst);
os_printf("### wasm runtime execute app's main function success.\n");
/* destroy the module instance */
wasm_runtime_deinstantiate(wasm_module_inst);
os_printf("### wasm runtime deinstantiate module success.\n");
fail2:
/* unload the module */
wasm_runtime_unload(wasm_module);
os_printf("### wasm runtime unload module success.\n");
fail1:
/* destroy runtime environment */
wasm_runtime_destroy();
os_printf("### wasm runtime destroy success.\n");
}

View File

@ -0,0 +1,39 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
#include "bh_platform.h"
extern void
iwasm_main(void);
static void
wamr_task(void *param)
{
os_printf("WAMR task started\n");
iwasm_main();
while (1) {
task_sleep(1000);
/*os_printf("Hello WAMR\n");*/
}
(void)param;
}
static bool
app_init(uint32_t id)
{
os_printf("WAMR init, id: %d\n", id);
task_start("wamr_task", 8192, 4, wamr_task, NULL);
return true;
}
static void
app_exit(uint32_t id)
{
os_printf("WAMR exit, id: %d\n", id);
}
INTERNAL_APP_DEFINE("WAMR", APP_VERSION(0, 0, 0, 1), 0, app_init, app_exit);

View File

@ -0,0 +1,54 @@
# TODO: set WAMR root dir
WAMR_ROOT := ../../../../
override PROJECT_CFLAGS := $(PROJECT_CFLAGS) -Wno-unused-parameter -Wno-pedantic
override PROJECT_CFLAGS := $(PROJECT_CFLAGS) -I$(PROJECTS_SRC_ROOT)/include
override PROJECT_CFLAGS := $(PROJECT_CFLAGS) \
-I$(WAMR_INC_ROOT)/core \
-I$(WAMR_INC_ROOT)/core/iwasm/include \
-I$(WAMR_INC_ROOT)/core/iwasm/common \
-I$(WAMR_INC_ROOT)/core/shared/utils \
-I$(WAMR_INC_ROOT)/core/shared/mem-alloc \
-I$(WAMR_INC_ROOT)/core/shared/platform/include \
-I$(WAMR_INC_ROOT)/core/shared/platform/freertos \
-I$(WAMR_INC_ROOT)/core/iwasm/interpreter
override PROJECT_CFLAGS := $(PROJECT_CFLAGS) \
-DBH_PLATFORM_FREERTOS \
-DBH_MALLOC=wasm_runtime_malloc \
-DBH_FREE=wasm_runtime_free \
-DBUILD_TARGET_X86_32 \
-DWASM_ENABLE_INTERP=1 \
-DWASM_ENABLE_FAST_INTERP=0 \
-DWASM_ENABLE_LIBC_BUILTIN=1
override PROJECT_CSRC := $(PROJECT_CSRC) \
$(WAMR_SRC_ROOT)/core/shared/platform/freertos/freertos_platform.c \
$(WAMR_SRC_ROOT)/core/shared/platform/freertos/freertos_thread.c \
$(WAMR_SRC_ROOT)/core/shared/platform/freertos/freertos_time.c \
$(WAMR_SRC_ROOT)/core/shared/platform/common/math/math.c \
$(WAMR_SRC_ROOT)/core/shared/mem-alloc/mem_alloc.c \
$(WAMR_SRC_ROOT)/core/shared/mem-alloc/ems/ems_kfc.c \
$(WAMR_SRC_ROOT)/core/shared/mem-alloc/ems/ems_hmu.c \
$(WAMR_SRC_ROOT)/core/shared/mem-alloc/ems/ems_alloc.c \
$(WAMR_SRC_ROOT)/core/shared/utils/bh_assert.c \
$(WAMR_SRC_ROOT)/core/shared/utils/bh_common.c \
$(WAMR_SRC_ROOT)/core/shared/utils/bh_hashmap.c \
$(WAMR_SRC_ROOT)/core/shared/utils/bh_list.c \
$(WAMR_SRC_ROOT)/core/shared/utils/bh_log.c \
$(WAMR_SRC_ROOT)/core/shared/utils/bh_vector.c \
$(WAMR_SRC_ROOT)/core/iwasm/libraries/libc-builtin/libc_builtin_wrapper.c \
$(WAMR_SRC_ROOT)/core/iwasm/common/wasm_runtime_common.c \
$(WAMR_SRC_ROOT)/core/iwasm/common/wasm_exec_env.c \
$(WAMR_SRC_ROOT)/core/iwasm/common/wasm_native.c \
$(WAMR_SRC_ROOT)/core/iwasm/common/wasm_memory.c \
$(WAMR_SRC_ROOT)/core/iwasm/common/wasm_shared_memory.c \
$(WAMR_SRC_ROOT)/core/iwasm/common/wasm_c_api.c \
$(WAMR_SRC_ROOT)/core/iwasm/common/arch/invokeNative_ia32.s \
$(WAMR_SRC_ROOT)/core/iwasm/interpreter/wasm_interp_classic.c \
$(WAMR_SRC_ROOT)/core/iwasm/interpreter/wasm_loader.c \
$(WAMR_SRC_ROOT)/core/iwasm/interpreter/wasm_runtime.c \
$(WAMR_SRC_ROOT)/product-mini/platforms/freertos/simple/iwasm_main.c \
$(WAMR_SRC_ROOT)/product-mini/platforms/freertos/simple/main.c

View File

@ -0,0 +1,46 @@
/*
* Copyright (C) 2019 Intel Corporation. All rights reserved.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*/
/**
* The byte array buffer is the file content of a test wasm binary file,
* which is compiled by wasi-sdk toolchain from C source file of:
* product-mini/app-samples/hello-world/main.c.
*/
unsigned char __aligned(4) wasm_test_file[] = {
0x00, 0x61, 0x73, 0x6D, 0x01, 0x00, 0x00, 0x00, 0x01, 0x10, 0x03, 0x60,
0x01, 0x7F, 0x01, 0x7F, 0x60, 0x02, 0x7F, 0x7F, 0x01, 0x7F, 0x60, 0x01,
0x7F, 0x00, 0x02, 0x31, 0x04, 0x03, 0x65, 0x6E, 0x76, 0x04, 0x70, 0x75,
0x74, 0x73, 0x00, 0x00, 0x03, 0x65, 0x6E, 0x76, 0x06, 0x6D, 0x61, 0x6C,
0x6C, 0x6F, 0x63, 0x00, 0x00, 0x03, 0x65, 0x6E, 0x76, 0x06, 0x70, 0x72,
0x69, 0x6E, 0x74, 0x66, 0x00, 0x01, 0x03, 0x65, 0x6E, 0x76, 0x04, 0x66,
0x72, 0x65, 0x65, 0x00, 0x02, 0x03, 0x02, 0x01, 0x01, 0x04, 0x05, 0x01,
0x70, 0x01, 0x01, 0x01, 0x05, 0x03, 0x01, 0x00, 0x01, 0x06, 0x13, 0x03,
0x7F, 0x01, 0x41, 0xC0, 0x28, 0x0B, 0x7F, 0x00, 0x41, 0xBA, 0x08, 0x0B,
0x7F, 0x00, 0x41, 0xC0, 0x28, 0x0B, 0x07, 0x2C, 0x04, 0x06, 0x6D, 0x65,
0x6D, 0x6F, 0x72, 0x79, 0x02, 0x00, 0x0A, 0x5F, 0x5F, 0x64, 0x61, 0x74,
0x61, 0x5F, 0x65, 0x6E, 0x64, 0x03, 0x01, 0x0B, 0x5F, 0x5F, 0x68, 0x65,
0x61, 0x70, 0x5F, 0x62, 0x61, 0x73, 0x65, 0x03, 0x02, 0x04, 0x6D, 0x61,
0x69, 0x6E, 0x00, 0x04, 0x0A, 0xB2, 0x01, 0x01, 0xAF, 0x01, 0x01, 0x03,
0x7F, 0x23, 0x80, 0x80, 0x80, 0x80, 0x00, 0x41, 0x20, 0x6B, 0x22, 0x02,
0x24, 0x80, 0x80, 0x80, 0x80, 0x00, 0x41, 0x9B, 0x88, 0x80, 0x80, 0x00,
0x10, 0x80, 0x80, 0x80, 0x80, 0x00, 0x1A, 0x02, 0x40, 0x02, 0x40, 0x41,
0x80, 0x08, 0x10, 0x81, 0x80, 0x80, 0x80, 0x00, 0x22, 0x03, 0x0D, 0x00,
0x41, 0xA8, 0x88, 0x80, 0x80, 0x00, 0x10, 0x80, 0x80, 0x80, 0x80, 0x00,
0x1A, 0x41, 0x7F, 0x21, 0x04, 0x0C, 0x01, 0x0B, 0x20, 0x02, 0x20, 0x03,
0x36, 0x02, 0x10, 0x41, 0x80, 0x88, 0x80, 0x80, 0x00, 0x20, 0x02, 0x41,
0x10, 0x6A, 0x10, 0x82, 0x80, 0x80, 0x80, 0x00, 0x1A, 0x41, 0x00, 0x21,
0x04, 0x20, 0x03, 0x41, 0x04, 0x6A, 0x41, 0x00, 0x2F, 0x00, 0x91, 0x88,
0x80, 0x80, 0x00, 0x3B, 0x00, 0x00, 0x20, 0x03, 0x41, 0x00, 0x28, 0x00,
0x8D, 0x88, 0x80, 0x80, 0x00, 0x36, 0x00, 0x00, 0x20, 0x02, 0x20, 0x03,
0x36, 0x02, 0x00, 0x41, 0x93, 0x88, 0x80, 0x80, 0x00, 0x20, 0x02, 0x10,
0x82, 0x80, 0x80, 0x80, 0x00, 0x1A, 0x20, 0x03, 0x10, 0x83, 0x80, 0x80,
0x80, 0x00, 0x0B, 0x20, 0x02, 0x41, 0x20, 0x6A, 0x24, 0x80, 0x80, 0x80,
0x80, 0x00, 0x20, 0x04, 0x0B, 0x0B, 0x41, 0x01, 0x00, 0x41, 0x80, 0x08,
0x0B, 0x3A, 0x62, 0x75, 0x66, 0x20, 0x70, 0x74, 0x72, 0x3A, 0x20, 0x25,
0x70, 0x0A, 0x00, 0x31, 0x32, 0x33, 0x34, 0x0A, 0x00, 0x62, 0x75, 0x66,
0x3A, 0x20, 0x25, 0x73, 0x00, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x20, 0x77,
0x6F, 0x72, 0x6C, 0x64, 0x21, 0x00, 0x6D, 0x61, 0x6C, 0x6C, 0x6F, 0x63,
0x20, 0x62, 0x75, 0x66, 0x20, 0x66, 0x61, 0x69, 0x6C, 0x65, 0x64, 0x00
};