功能简介
更新时间:2018-09-18 15:26:39
什么是嵌入式 Javascript 开发?
嵌入式 Javascript 开发是面向嵌入式设备,用 Javascript 语言来开发嵌入式设备上的应用。Javascript 语言开发嵌入式设备应用,具备如下优点:
简单:语法不涉及指针,内存分配和释放,内存管理由 Javascript 引擎完成
灵活:解释性语言,不需要编译即可运行,方便调试,升级和业务扩展
高效:最新的 Javascript 引擎 已经支持 JIT,Javascript 的执行性能已经接近 C/C++
跨平台:不同平台,不同硬件,一份代码,都可以运行
生态丰富:目前存在大量用 Javascript 实现的开源模块(如 NodeJS )
针对嵌入式设备硬件资源有限的特点,阿里巴巴自主开发了轻量级的 Javascript 运行引擎 TinyEngine ,围绕 TinyEngine,实现了与嵌入式系统相关的 Native 扩展对象和函数,用 Javascript 编写大量的硬件驱动程序和软件模块。开发者可以导入已有的驱动程序和软件模块,用 Javascript 快速开发嵌入式应用。</span>
嵌入式设备的 Javascript 开发过程示意图
开发调试过程可简单归纳为:
- 拥有一款 TinyEngine 已经支持的硬件
- 烧录 TinyEngine 系统固件
- 配置网络(联网或网络调试)
- 用 Javascript 开发嵌入设备程序
- 运行和调试 Javascript 程序
在 Link Develop 开发平台上,嵌入式 Javascript 开发环境各部分之间关系如下图所示:
由上图可见,LinkDevelop 平台上,用 Javascript 开发嵌入式设备主要涉及到:云端 LinkDevelop 上的嵌入式 Javascript 开发工作台,运行在本地调试主机上的 DeviceAgent,设备端上的 TinyEngine 运行环境。
主要功能组件
嵌入式 Javascript 开发工作台
嵌入式 Javascript 开发工作台是 Web 版的 Javascript 开发工具,部署在云端,可以通过浏览器打开该工作台。嵌入式 Javascript 开发工作台主要是面向嵌入式设备的 Javascript 开发,除了具有基本的 Javascript 开发和调试功能,还有调试设备连接,应用运行,以及驱动程序,软件模块的导入等功能。嵌入式 Javascript 开发工作台外观如下图所示:
嵌入式 Javascript 应用开发工作台具有如下几个功能:
创建新项目
打开已有项目
导入第三方驱动或软件模块
连接 DeviceAgent
运行应用
设置设备的 WIFI 网络 (ssid 和 password )
DeviceAgent 设备调试代理
DeviceAgent 是运行在本地调试主机上的一个后台应用程序。DeviceAgent 一方面通过串口或网络与嵌入式调试设备连接,可下载 Javascript 应用程序,启动或者停止设备端上的 Javascript 应用运行,发起或断开设备设备连接,并能在局域网内,搜索TinyEngine 目标设备。
另一方面,DeviceAgent 与云端的嵌入式 Javascript 开发工作台通讯,接收云端的应用程序下发或烧写命令。
TinyEngine 运行环境
TinyEngine 是专门为嵌入式设备提供的 Javascript 运行时环境,它提供极轻量级的JSE,设备抽象模型,应用编程框架,以及相关的辅助开发和调试工具,</span>是整个环节的核心部分,TinyEngine 官方开源地址: https://github.com/aliyun/TinyEngine . TinyEngine 具备如下特点:
多芯片和硬件支持
支持大多数主流嵌入式的 MCU 和 SoC,包括乐鑫 ESP8266,ESP32; 庆科 MK3060,MK3080; STMicro STM32F1xx,STM32F4xx,STM32F7xx 系列
应用编程框架
实现各种硬件,文件系统,网络等扩展对象和 API,可直接连接阿里的 LinkDevelop 或 LinkPlatform IoT 云平台,内建应用管理组件,支持多应用分发和 OTA 升级
设备驱动模型
抽象硬件驱动模型,可以用 Javascript 开发硬件驱动程序,还提供大量的 IoT 相关的设备驱动,包括各种传感器,控制器,以及显示驱动
集成开发调试工具
整个 TinyEngine 软件系统架构图如下:
- TinyEngine 已支持硬件列表
芯片型号
|
厂商
|
硬件配置
|
JSE
|
OS
|
ESP32
|
乐鑫
|
ROM:448KB
SRAM:520KB+
|
LiteJSE
Duktape
|
AliOS-Things,FreeRTOS,UCOSII
|
STM32F/L4XX
|
意法
|
ROM:1MB
SRAM:320KB+
|
LiteJSE
Duktape
|
AliOS-Things,FreeRTOS,UCOSII
|
EMW3060/
EMW3080
|
庆科
|
ROM:2MB
SRAM:256KB
|
LiteJSE
Duktape
|
AliOS-Things
|
STM32F103X
|
意法
|
FLASH:256KB
SRAM:64KB
|
LiteJSE
|
UCOSII
|
STM32F7XX
|
意法
|
FLASH:2MB
SRAM:512KB+
|
LiteJSE
Duktape
|
AliOS-Things,FreeRTOS,UCOSII
|
词汇表
名词
|
说明
|
备注
|
TinyEngine
|
嵌入式设备上的 Javascript 运行时环境,包括 Javascript 引擎,应用编程框架,驱动编程框架
|
|
TinyEngine 固件
|
TinyEngine 镜像,包括 Bootloader,RTOS,TineEngine,烧录在嵌入式设备上
|
|
Javascript 本地扩展
|
为了硬件和或性能的要求,用 Native C 编写的 Javascript 对象,本地扩展对象会透出相应的 Javascript API,供 上层的 Javascript 应用调用
|
|
LD
|
LinkDevelop 开发平台,阿里巴巴为IoT开发者提供的一站式开发平台
|
|
JS
|
Javascript 简称
|
|
JSE
|
Javascript Engine 简称,Javascript 解释器,Javascript 运行引擎
|
|
嵌入式 Javascript 开发工作台
|
嵌入式设备 Javascript 的 Web 开发和调试环境和工具,部署在云端,属于 LinkDevelop 一站式开发平台。
|