4f11f38c38
Add compilation rules to support WebAssembly(WASM/WAMR): 1. Compile Toolchain 1> Download WASI sdk and export the WASI_SDK_PATH path: $ wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-19/wasi-sdk-19.0-linux.tar.gz $ tar xf wasi-sdk-19.0-linux.tar.gz Put wasi-sdk-19.0 to your host WASI_SDK_PATH environment variable, like: $ export WASI_SDK_PATH=`pwd`/wasi-sdk-19.0 2> Download Wamr "wamrc" AOT compiler and export to the PATH: $ mkdir wamrc $ wget https://github.com/bytecodealliance/wasm-micro-runtime/releases/download/WAMR-1.1.2/wamrc-1.1.2-x86_64-ubuntu-20.04.tar.gz $ tar xf wamrc-1.1.2-x86_64-ubuntu-20.04.tar.gz $ export PATH=$PATH:$PWD 2. Configuring and running 1> Configuring sim/wamr and compile: nuttx$ ./tools/configure.sh sim/wamr nuttx$ make ... Wamrc Generate AoT: /home/archer/code/nuttx/n5/apps/wasm/hello.aot Wamrc Generate AoT: /home/archer/code/nuttx/n5/apps/wasm/coremark.aot LD: nuttx 2> Copy the generated wasm file(Interpreter/AoT) nuttx$ cp ../apps/wasm/hello.aot . nuttx$ cp ../apps/wasm/hello.wasm . nuttx$ cp ../apps/wasm/coremark.wasm . 3> Run iwasm nuttx$ ./nuttx NuttShell (NSH) NuttX-10.4.0 nsh> iwasm /data/hello.wasm Hello, World!! nsh> iwasm /data/hello.aot Hello, World!! nsh> iwasm /data/coremark.wasm 2K performance run parameters for coremark. CoreMark Size : 666 Total ticks : 12000 Total time (secs): 12.000000 Iterations/Sec : 5.000000 Iterations : 60 Compiler version : Clang 15.0.7 Compiler flags : Using NuttX compilation options Memory location : Defined by the NuttX configuration seedcrc : 0xe9f5 [0]crclist : 0xe714 [0]crcmatrix : 0x1fd7 [0]crcstate : 0x8e3a [0]crcfinal : 0xa14c Correct operation validated. See README.md for run and reporting rules. CoreMark 1.0 : 5.000000 / Clang 15.0.7 Using NuttX compilation options / Defined by the NuttX configuration Co-Authored-By: Huang Qi <huangqi3@xiaomi.com> Signed-off-by: chao an <anchao@xiaomi.com> |
||
---|---|---|
.. | ||
bas | ||
duktape | ||
ficl | ||
lua | ||
luamodules | ||
minibasic | ||
quickjs | ||
toywasm | ||
wamr | ||
wasm3 | ||
.gitignore | ||
Make.defs | ||
Makefile | ||
README.md | ||
Wasm.mk |
Interpreters
This apps/
directory is set aside to hold interpreters that may be
incorporated into NuttX.
Ficl
This is DIY port of Ficl (the Forth Inspired Command Language). See http://ficl.sourceforge.net/. It is a DIY port because the Ficl source is not in that directory, only an environment and instructions that will let you build Ficl under NuttX. The rest is up to you.
Lua
Fetch and build a Lua interpreter. Versions 5.2 through 5.4 are supported. The
lua
command will be added to NSH. Lua can run a script for a given path,
execute a string of code, or open a readline compatible REPL on the NSH console.
The <lua.h>
and <lauxlib.h>
headers are available to start a new embedded
interpreter or extend Lua with C modules. See the luamod_hello
example for how
to include a built-in module.
A math library is required to build. Enable the LIBM
config or use a
toolchain provided math library.
The following configs are recommended for a full featured Lua interpreter:
LIBC_FLOATINGPOINT
SYSTEM_READLINE
Mini Basic
The Mini Basic implementation at apps/interpreters
derives from version 1.0
by Malcolm McLean, Leeds University, and was released under the Creative Commons
Attibution license. I am not legal expert, but this license appears to be
compatible with the NuttX BSD license see:
https://creativecommons.org/licenses/. I, however, cannot take responsibility
for any actions that you might take based on my understanding. Please use your
own legal judgement.