rt-node
is a lightweight JavaScript framework for RTOS, also support unix like systems for debugging.
The following runtime modules are built in:
- timer
- require
- utils
- console
- N-API
N-API is supported in order to be compatible with different embed JavaScript engines, the following N-API features are WIP:
- thread safe function
- JerryScript, a lightweight JavaScript engine
- rv, a tiny event loop library
speaker.js
'use strict';
class Speaker {
constructor(content) {
this.content = content;
}
say() {
console.log(this.content);
}
}
module.exports = Speaker;
app.js
'use strict';
const Speaker = require('speaker');
const speaker = new Speaker('hello world');
setTimeout(() => {
speaker.say();
}, 3000);
'use strict';
// The curl module depends on libcurl, the source file is sample/unix/curl.c
const curl = require('curl');
const startTime = Date.now();
curl.get('http://www.example.com', (body) => {
console.log(`get body in ${Date.now() - startTime}ms`, body);
});
JavaScript sources are packaged in src/rtnode-snapshots.c/h
, set JS_ROOT
as your JavaScript sources root directory for cmake to package them, app.js
is the entry of user code.
rtnode
use CMake to build library or samples. The easiest way to build is as follows:
$ cmake -B./build -H. -DJS_ROOT=Your_js_files_root_directory
$ make -C./build -j8
The above commands will generate librtnode.a
in ./build
directory.
For cross compile, add the following flags:
- CMAKE_C_COMPILER, full path for c compiler
- CMAKE_SYSTEM_PROCESSOR, the name of the CPU CMake is building for
- CMAKE_SYSTEM_NAME, set
Generic
to indicate cross compile
Here is an example for Xtensa
toolchain:
$ cmake -B./build-xtensa -H. \
-DCMAKE_C_COMPILER=xtensa-esp32-elf-gcc \
-DCMAKE_SYSTEM_PROCESSOR=xtensa \
-DCMAKE_SYSTEM_NAME=Generic \
-DJS_ROOT=Your_js_files_root_directory
$ make -C./build-xtensa -j8
Currently support unix and esp-idf build framework.
For unix like systems
$ cmake -B./build -H. -DSAMPLE=unix -DJS_ROOT=./samples -DJERRY_PROFILE=es2015-subset
$ make -C./build
$ ./build/rtnode-unix/rtnode-unix # run sample
For esp-idf:
$ cmake -B./build-espidf -H. \
-DCMAKE_C_COMPILER=xtensa-esp32-elf-gcc \
-DCMAKE_SYSTEM_PROCESSOR=xtensa \
-DCMAKE_SYSTEM_NAME=Generic \
-DSAMPLE=esp-idf \
-DJS_ROOT=./samples \
-DJERRY_PROFILE=es2015-subset
$ make -C./build-espidf -j8
The esp-idf products will generate in ./build-espidf/rtnode-build
, then use idf.py flash
to flash the binaries that you just built onto your ESP32 board. For more information, please refer to the esp-idf document.