单片机与脚本语言
随着单片机性能和容量的增加,现在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 }