如何基于AliOS Things 3.3编译Python固件

简介: AliOS Things 3.3 中自带了一个py_engine 解决方案(solution), 该解决方案就是在AliOS Things 3.3 运行Python环境。
来源 | HaaS技术社区

1、案例简介

AliOS Things 3.3 中自带了一个py_engine 解决方案(solution), 该解决方案就是在AliOS Things 3.3 运行Python环境。

py_engine (Python轻应用引擎) 以MicroPython为基础打造而成, 基于py_engine可以快速实现IoT场景连云、控端、AI等最常见功能。快速上手文档和编程接口请参考Python轻应用快速上手

  • 连云:支持基于linkit连接阿里云物联网平台
  • 控端:支持PWD、UART、SPI、I2C、ADC、DAC、GPIO等基本硬件接口控制
  • AI:支持端上AI和云端AI能力,覆盖人脸、人体、视频、文字等150+场景

py_engine 默认作为一个组件存在于AliOS Things 3.3 中。

py_engine_demo 依赖了py_engine 组件,主要功能如下:

  • 注册python命令
  • 启动python虚拟机

py_engine_demo 只有一个appdemo.c,注册了python cli 命令后就退出了,等待用户指令启动python虚拟机。

2、基础知识

2.1、组件依赖方法

在package.yaml 中增加py_engine组件依赖

depends:
 
- py_engine: master

增加头文件

#include "mpy_main.h"

调用初始化方法

mpy_init();
 
mpy_run(argc, argv);

3、物料清单

3.1、HaaS EDU K1 硬件

HaaS EDU K1硬件介绍

image.png

4、案例实现

4.1、硬件连接

该案例只需要使用Type-c的数据线将HaaS EDU K1连接电脑就可以,如下图所示:

image.png

4.2、软件实现

  • AliOS Things开发环境搭建

开发环境的搭建请参考《aos-studio使用说明之搭建开发环境》,其中详细的介绍了AliOS Things 3.3的IDE集成开发环境的搭建流程。

选择开发板: haaseduk1
  • 编译

参考 《aos-studio使用说明之编译固件》

  • 烧录

由于该demo的资源文件位于/data,分区,因此烧录的时候需要烧录littlefs.bin,方法如下:

将hardware/chip/haas1000/package.yaml文件中以下代码段的注释打开

program_data_files:
 
- filename: release/write_flash_tool/ota_bin/littlefs.bin
 
address: 0xB32000

参考《aos-studio使用说明之烧录固件》

4.3、验证Python功能

连接串口,通过python命令进入python repl模式

# python
# python on HaaS100 by 2021-03-17, press ctrl+d to exit!
>>> print("hello-world")
 
hello-world

5、总结

该demo只依赖AliOS Things 3.3,不依赖具体的硬件,通过这个demo ,默认可以将py_engine 按照两种不同的方式运行。

开发者支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号。

image.png

更多技术与解决方案介绍,请访问HaaS官方网站https://haas.iot.aliyun.com

相关文章
|
5月前
|
Java API 开发工具
如何将python应用编译到android运行
【6月更文挑战第27天】本文介绍在Ubuntu 20上搭建Android开发环境,包括安装JRE/JDK,设置环境变量,添加i386架构,安装依赖和编译工具。并通过`p4a`命令行工具进行apk构建和清理。
89 6
如何将python应用编译到android运行
|
1月前
|
Rust 监控 编译器
解密 Python 如何调用 Rust 编译生成的动态链接库(一)
解密 Python 如何调用 Rust 编译生成的动态链接库(一)
39 2
|
1月前
|
Rust 安全 Python
解密 Python 如何调用 Rust 编译生成的动态链接库(二)
解密 Python 如何调用 Rust 编译生成的动态链接库(二)
32 1
|
1月前
|
存储 自然语言处理 编译器
Python 源文件编译之后会得到什么,它的结构是怎样的?和字节码又有什么联系?
Python 源文件编译之后会得到什么,它的结构是怎样的?和字节码又有什么联系?
50 0
|
3月前
|
自然语言处理 安全 编译器
Python 中的编译和链接过程
【8月更文挑战第29天】
54 6
|
3月前
|
移动开发 Java 编译器
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
什么是pyc文件,把python的py文件编译成pyc文件,把pyc文件反编译成py文件。以及python编译的如何设置不生成pyc文件
53 1
|
3月前
|
自然语言处理 编译器 开发者
|
4月前
|
机器学习/深度学习 人工智能 数据挖掘
Numba是一个Python库,用于对Python代码进行即时(JIT)编译,以便在硬件上高效执行。
Numba是一个Python库,用于对Python代码进行即时(JIT)编译,以便在硬件上高效执行。
|
6月前
|
Python
Python如何把脚本编译成可执行exe文件_python脚本编译成可执行文件
Python如何把脚本编译成可执行exe文件_python脚本编译成可执行文件
|
6月前
|
存储 JavaScript 编译器
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
这款国产中文编程火了!通过文言文编译生成Python、JS、Ruby代码!
258 0
下一篇
无影云桌面