Skip to content

Commit

Permalink
Add wamr to esp-idf components registry (#3264)
Browse files Browse the repository at this point in the history
Espressif has [ESP-IDF component registry](https://components.espressif.com/) to
manage external components, and developers can use this directly and easily.
  • Loading branch information
donghengqaz authored Apr 7, 2024
1 parent 9e07aa6 commit 4109fce
Show file tree
Hide file tree
Showing 7 changed files with 38 additions and 10 deletions.
5 changes: 5 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,11 @@

cmake_minimum_required (VERSION 3.0)

if(ESP_PLATFORM)
include (${COMPONENT_DIR}/build-scripts/esp-idf/wamr/CMakeLists.txt)
return()
endif()

project (iwasm)

set (CMAKE_VERBOSE_MAKEFILE OFF)
Expand Down
18 changes: 17 additions & 1 deletion core/shared/platform/esp-idf/espidf_memmap.c
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,23 @@ os_mmap(void *hint, size_t size, int prot, int flags, os_file_handle file)
#else
uint32_t mem_caps = MALLOC_CAP_8BIT;
#endif
return heap_caps_malloc(size, mem_caps);
void *buf_origin = heap_caps_malloc(size, mem_caps);
if (!buf_origin) {
return NULL;
}

// Memory allocation with MALLOC_CAP_SPIRAM or MALLOC_CAP_8BIT will
// return 4-byte aligned Reserve extra 4 byte to fixup alignment and
// size for the pointer to the originally allocated address
void *buf_fixed = buf_origin + sizeof(void *);
if ((uintptr_t)buf_fixed & (uintptr_t)0x7) {
buf_fixed = (void *)((uintptr_t)(buf_fixed + 4) & (~(uintptr_t)7));
}

uintptr_t *addr_field = buf_fixed - sizeof(uintptr_t);
*addr_field = (uintptr_t)buf_origin;

return buf_fixed;
}
}

Expand Down
8 changes: 8 additions & 0 deletions idf_component.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
version: "1.3.2"
description: WebAssembly Micro Runtime - A lightweight standalone WebAssembly (Wasm) runtime with small footprint, high performance and highly configurable features
url: https://bytecodealliance.org/
repository: https://github.com/bytecodealliance/wasm-micro-runtime.git
documentation: https://wamr.gitbook.io/
issues: https://github.com/bytecodealliance/wasm-micro-runtime/issues
dependencies:
idf: ">=4.4"
3 changes: 0 additions & 3 deletions product-mini/platforms/esp-idf/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,4 @@ cmake_minimum_required(VERSION 3.5)

include($ENV{IDF_PATH}/tools/cmake/project.cmake)

set (COMPONENTS ${IDF_TARGET} main freertos esptool_py wamr)
list(APPEND EXTRA_COMPONENT_DIRS "$ENV{WAMR_PATH}/build-scripts/esp-idf")

project(wamr-simple)
3 changes: 1 addition & 2 deletions product-mini/platforms/esp-idf/main/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,4 @@
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

idf_component_register(SRCS "main.c"
INCLUDE_DIRS "."
REQUIRES wamr)
INCLUDE_DIRS ".")
7 changes: 7 additions & 0 deletions product-mini/platforms/esp-idf/main/idf_component.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
## IDF Component Manager Manifest File
dependencies:
wasm-micro-runtime:
version: ">=1.3"
override_path: "../../../.."
idf:
version: ">=4.4"
4 changes: 0 additions & 4 deletions product-mini/platforms/esp-idf/main/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@

#include "esp_log.h"

#ifdef CONFIG_IDF_TARGET_ESP32S3
#define IWASM_MAIN_STACK_SIZE 5120
#else
#define IWASM_MAIN_STACK_SIZE 4096
#endif

#define LOG_TAG "wamr"

Expand Down

0 comments on commit 4109fce

Please sign in to comment.