Advanced_Jsvm
To save space and be able to run JerryScript on an embedded device, this library builds without parser support.
This means that the JavaScript files have to be compiled into ‘snap’ files before landing on the device.
This can be done during normal compilation and flashing, or indirectly via web application.
Manual compilation method
You should have your device connected physically to your computer via USB cable.
In this case the compilation will be done on your computer and the compiled files will be saved to your device.
In order to configure the JavaScript file compilation one can use APP_JS_SOURCE_DIR
and APP_JS_SOURCE_DIR
variables.
All .js
files in the APP_JS_SOURCE_DIR
directory will be compiled into .snap
files and written to APP_JS_SNAPDIR
directory.
Example:
make APP_JS_SOURCE_DIR=files/js APP_JS_SNAP_DIR=out/web
In this advanced sample the variables are directly stored in component.mk
file.
The generated .snap files may be flashed or uploaded to your device for execution via any appropriate mechanism.
Web Browser compilation method
Quite often we don’t have physical access to our devices. And here comes the true beauty of this sample. With only network access to the device and a modern browser one can still compile JavaScript files and upload them to the device. No external tools are required.
The advanced sample starts a web server with a simple page.
In it you will see the initial source code of the main.js
file.
There are two buttons in the HTML page. The first one starts and stops the JavaScript VM.
If you press Run
you will be able to see the result from the execution in the device terminal.
If you have your device connected to your computer then type the following to see the output:
make terminal
If you want to change the JavaScript code and test it again on your device you have to press Stop
.
Do directly in the browser the desired changes and press Compile
. If the modified JavaScript is valid
then it will be compiled directly in your browser and sent to your device.
Again no external tools are required - just a modern browser.
After that you can press Run
in the browser and enjoy the modified result in the terminal.
Credits
The initial work on the JerryScript library for Sming was done as part of the U:Kit project.
References
Environment Variables
GZIP
SoC support
esp32
esp32c2
esp32c3
esp32s2
esp32s3
esp8266
host
rp2040
rp2350