1@page haas_dev_demo JavaScript和Python双引擎运行环境 2 3[更正文档](https://gitee.com/alios-things/haas_dev_demo/edit/master/README.md)      [贡献说明](https://help.aliyun.com/document_detail/302301.html) 4 5# 1. 案例简介 6## 1.1 Python轻应用引擎 7py_engine (Python轻应用引擎) 以MicroPython为基础打造而成, 基于py_engine可以快速实现IoT场景连云、控端、AI等最常见功能。快速上手文档和编程接口请参考[Python轻应用快速上手](https://g.alicdn.com/HaaSAI/PythonDoc/quickstart/index.html) 8* 连云:支持基于linkit连接阿里云物联网平台 9* 控端:支持PWD、UART、SPI、I2C、ADC、DAC、GPIO等基本硬件接口控制 10* AI:支持端上AI和云端AI能力,覆盖人脸、人体、视频、文字等150+场景 11 12py_engine 默认作为一个组件存在于alios things 中。 13 14py_engine_demo 依赖了py_engine 组件,主要功能如下: 15 16* 注册python命令 17* 启动python虚拟机 18 19py_engine_demo 只有一个appdemo.c,注册了python cli 命令后就退出了,等待用户指令启动python虚拟机 20 21## 1.2 JavaScript轻应用 22JavaScript轻应用引擎是一套运行在资源受限设备上的轻量级应用软件框架。 23 24业务应用代码脚本化,使用JavaScript脚本迅速构建轻应用。 25嵌入式系统底座和应用完全解耦,使得IoT设备端应用生态的广度大幅拓宽。 26 27Runtime采用JavaScript引擎加载用户脚本代码并执行,配合高可用的服务和工具提供应用的在线分发、更新及运维 28* Runtime采用JavaScript应用引擎加载用户脚本代码并执行,配合高可用的服务和工具提供应用的在线分发、更新及运维 29* 无需编译、烧录即可开发在物联网设备上运行的轻量级应用,快速开发,高效运维 30* 可通过云存储托管设备端应用和资源,也通过集成云服务API,使得云端计算能力获得在设备端的延伸 31 32# 2. 基础知识 33## 2.1 基础目录结构 34 35```tree 36. 37├── haas_dev_demo.c # 该solution核心打印输出代码,入口**application_start** 38├── k_app_config.h # 内核组件的配置开关,优先级低于**k_config.h** 39├── maintask.c # 系统主任务入口处理,入口**aos_maintask** 40├── Makefile # aos make编译时入口 41├── package.yaml # 编译系统配置文件 42└── SConstruct # Makefile => Scon => aostools 43``` 44 45## 2.2 组件依赖方法 46* 在package.yaml 中增加py_engine及amp组件依赖 47py_engine是Python轻应用引擎的组件,amp是JavaScript轻应用引起的组件。 48```yaml 49 depends: 50 - py_engine: master 51 - amp: master 52``` 53 54# 3. 物料清单 55 56## 3.1 HaaS100 硬件 57 58[HaaS100 硬件简介](https://help.aliyun.com/document_detail/184426.html) 59 60<div align=left display=flex> 61 <img src="https://img.alicdn.com/imgextra/i4/O1CN01XxD6Xo217CB3FZnEU_!!6000000006937-2-tps-746-497.png" style="max-width:800px;" /> 62</div> 63 64# 4. 案例实现 65 66## 4.1 硬件连接 67该案例只需要连接电源线以及串口线,如下图所示: 68 69<img src="https://img.alicdn.com/imgextra/i2/O1CN01S9jkJw1dihpqURQH4_!!6000000003770-0-tps-1280-960.jpg" style="max-width:800px;" /> 70 71## 4.2 软件实现 72 73 74 75* AliOS Things开发环境搭建 76 77 开发环境的搭建请参考[《AliOS Things集成开发环境使用说明之搭建开发环境》](https://help.aliyun.com/document_detail/302378.html),其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。 78 79 80* 代码下载 81 py_engine代码下载请参考[《AliOS Things集成开发环境使用说明之创建工程》](https://help.aliyun.com/document_detail/302379.html),其中, 82 > 选择解决方案: "haas开发框架JS引擎及Python引擎简单示例" 83 > 选择开发板: HaaS200 84 85 86* 编译 87 88 参考 [《AliOS Things集成开发环境使用说明之编译固件》](https://help.aliyun.com/document_detail/302384.html)。 89 90 91* 烧录 92 93 由于该demo的资源文件位于/data,分区,因此烧录的时候需要烧录littlefs.bin,方法如下: 94 95 haas100将hardware/chip/haas1000/package.yaml文件中以下代码段的注释打开: 96```yaml 97 program_data_files: 98 - filename: release/write_flash_tool/ota_bin/littlefs.bin 99 address: 0xB32000 100``` 101 102 haas200将hardware/chip/rtl872xd/package.yaml文件中以下代码段的注释打开: 103```yaml 104 program_data_files: 105 - filename: prebuild/littlefs.bin 106 address: 0x08314000 107``` 108 109 参考[《AliOS Things集成开发环境使用说明之烧录固件》](https://help.aliyun.com/document_detail/302383.html)。 110 111## 4.3 验证Python功能 112 113连接串口,通过python命令进入python repl模式 114```sh 115# python 116# python on HaaS100 by 2021-03-17, press ctrl+d to exit! 117>>> print("hello-world") 118hello-world 119``` 120 121## 4.3 验证JavaScript功能 122 123连接串口,通过amp_example命令进入JavaScript模式 124```sh 125amp_example 126``` 127执行完后,HaaS200板子上灯会开始闪烁,串口打印出led设置的信息。 128 129# 5. 总结 130 131该demo只依赖AliOS Things,不依赖具体的硬件,通过这个demo ,默认可以将py_engine 按照两种不同的方式运行。 132