单片机与脚本语言

随着单片机性能和容量的增加,现在lua,micropython,jerryscript都广泛应用于单片机。

一 jerryscript:

1.1 将js文件在PC端通过工具变成字节码文件(.bin/.jbc),然后通过lz4等工具进行压缩;

1.2将压缩后的文件通过ftp/http方式下载到单片机外挂的w25qxx的flash上;

1.3 单片机完成js移植后,将压缩文件解压、检验后存于外部flash的某个分区上;

1.4 通过文件系统将js的字节码读入ram,然后实现C与JS的相互调用。

 1 void load_module(const char *path) {
 2     FIL file;
 3     f_open(&file, path, FA_READ);
 4     char *buffer = malloc(f_size(&file));
 5     UINT bytes_read;
 6     f_read(&file, buffer, f_size(&file), &bytes_read);
 7     jerry_value_t script = jerry_parse((jerry_char_t*)buffer, bytes_read, JERRY_PARSE_NO_OPTS);
 8     jerry_run(script);
 9     jerry_release_value(script);
10     free(buffer);
11     f_close(&file);
12 }
13 
14 
15 int main() {
16     hardware_init();  // 初始化GPIO、FSMC等硬件:
17     jerry_init(JERRY_INIT_EMPTY);  //初始化
18     register_native_functions();  // 注册所有C函数接口:后面js就可以调用C函数
19     
20     // 分块加载模块
21     load_module("/ext_flash/module1.js");  // 加载基础模块:
22     load_module("/ext_flash/module2.js");  // 加载业务逻辑
23     
24     while (1) {
25         jerry_run_callback();  // 处理异步事件:
26     }
27     jerry_cleanup(); //释放js引擎
28 }
JS&C

 

posted on 2025-05-16 12:13  杰瑞鼠  阅读(31)  评论(0)    收藏  举报