作为一款采用双许可证的嵌入式Python,ZerynthKickstarter上进行过众筹,虽然影响力不如micropython,却也有学习的必要。开发者可以自行选用合适的平台。Zerynth的服务器在境外,支持起来有一天周期,这里先将快速启动教程介绍一下。
依赖性
Zerynth依赖于64bit OS,包括Windows 7/8/10/Linux,也支持虚拟机中的64bit OS。所以太旧的机型无法运行。我本人使用的是Windows 10 + VirtualBox + Ubuntu 15.04。
其次,请下载Zerynth的安装软件Zerynth_installer,网址:
http://www.zerynth.com/zerynth-studio/
第三,如果手头有STM32F401 NUCLEO,可以直接用Zerynth。Zerynth开发板还支持一款STM32F103的开发板,所以理论上可以支持STM32F103RB。但是还未测试。
软件下载
该安装软件安装时,会同时更新自己的所有软件包。如果下载有困难的同学,可以在我的百度盘中寻找:
网址:
http://pan.baidu.com/s/1nvdHhmL
密码:hart
路径:《从芯片到云端》| source_code | extra_download | zerynth_installer.exe 或 ubuntu15_viper_zerynth.tar.xz
Ubuntu15文件是VirtualBox的虚机文件,密码reverse,当然用户也可以自行下载Linux版本安装。
运行Zerynth Studio
使用Zerynth Studio首先需要创建一个账号,点击右上角的用户图标,填写您的电邮与用户名,注册一个新账号。在下一次使用Studio时,它会后台自动登录Zerynth的云服务器。该账号主要用于同步本地与服务器端的工程,社区的登入,自动接收软件更新,或者推送工程到社区中与开发者共享。所以,Zerynth Studio借鉴了不少社交编程的概念,它的社群软件库增长速度很快。
本文所有GIF都可以下载、方法观看。
运行Zerynth样例
使用过Git/Github的用户对于Clone这个词不会陌生。Zerynth内置Git的支持。
Zerynth IDE包括了多个样例,此外还可以通过Zerynth Package Manager(ZPM)安装软件库。Zerynth样例是只读的,无法编辑。所以必须采用Clone方法产生工作区文件进行修改。具体方法是:
- 点击Zerynth IDE的左侧工具条的Example浏览器中“小灯泡”图标;
- 在搜索栏中选择合适的例子,如“Oscilloscope”;
- 选中样例;
- 点击Clone按钮。
- Zerynth不支持重名,此时你可以修改标题、描述和标签。
- 再次点击Clone按钮。
连接开发板硬件
任何MCU要支持Zerynth,必须经过“Virtualization”过程,即虚拟化过程。本质上,是Zerynth Python虚拟机烧录到MCU中的过程。启动后,Zerynth IDE启动一个Python本地服务器,控制连接的外围设备,并在开发板管理工具条中显示可用的开发板。Zerynth目前支持有限的几种开发板。不过覆盖率不影响我们的评估。目前支持的有:
品牌 | 器件 | 产品族 | 开发板 |
STM | STM32F103 | M3 | Particle Core
|
STM | STM32F205 | M3 | Particle Photon |
STM | STM32F401 | M4 | ST Nucleo
|
STM | STM32F205 | M3 | BCM943362 |
STM | STM32F427 | M4 | MicroE |
Atmel | SAM3X8 | M3 | Aduino DUE
|
Atmel | SAM3X8 | M3 | UDOO |
Atmel | SAM3X8 | M3 | MicroE |
所有,我们不要关心开发板,我们关心的是开发板上MCU。STM32家族中103/205/401/427已经得到了支持。插入开发板后,首先需要安装开发板驱动,USB驱动。
安装驱动后,不同的开发板的固件下载方法不同,包括JTAG/SWD/DFU/ISP等,需要根据不同的MCU来规划。以STM32F401 NUCLEO开发板为例,NUCLEO板载ST-LINK,可以使用SWD方式下载。
连接开发板后,不同的开发板可以本地进行重新命名,编辑开发板的信息。也可以查看对应开发板的Pinout布局。
Verify和Uplink过程
Connect,Virtualize,Clone之后,还必须经过Verify和Uplink过程。左上角的工具条中按钮,包括Verify、Clean、Uplink按钮。其中Verify是将Python源码编译成字节码(Bytecode)的过程。而Uplink过程比较复杂,除了下载Bytecode,还需要将C语言中的标准库和底层硬件库使用到的符号表进行交换。Python脚本编译成字节码,并由Virtualization过程中下载的VM对字节码进行解释运行。整个过程与标准CPython一致。除此之外,Zerynth还支持与C语言的混合编程。这一点迎合了嵌入式系统的需求。
以STM32F401 NUCLEO为例,Verify过程是通过板子SWD下载VM固件,而Uplink则往往会出问题,导致失败。
需要使用ST-LINK的最新固件刷新板载SWD Probe。请去官网下载STSW-LINK007。
创建新工程
- 点击“Browse Project”;
- 点击“New Project”;
- 确定标题Title和描述Description;
- 添加标签Tag;
- 点击“Create”按钮。
按下“Create”按钮之后,系统会新建main.py,作为主要的脚本,是用户新工程的起点。此外,还可以添加其他资源文件,包括HTML、JSON、TEXT、Bin文件等。这些资源文件可以保存在内部Flash ROM中,main.py可以访问这些资源文件。
添加资源文件
- 点击“Current Project”;
- 点击“Add file to project”;
- 重命名文件后,点击“Create”;
- 填充代码。
访问其他模块和资源文件
访问其他模块中的方法:比如helper.py模块中的myfunc()方法,需要在main.py中使用:
import helper
helper.myfunc(*,**)
复制代码
访问其他资源文件,需要在main.py中使用:
- new_resource(“template.html”)
复制代码
软件管理包(ZPM)
与CPython基于pypi进行软件包管理略有不同,Zerynth的模块化设计使用ZPM对与模块和库进行统一管理,可以安装、升级、移除和降级。在左侧工具条中的拼图图标可以激活ZPM,并使用一组图标(Search,Most Starred,Most downloaded,Most Recent,installed,with updates,All)分组访问大量的模块和库。其中VHAL支持STM32F1/F2/F4。
Zerynth内置官方软件库(Official Libraries)和社区(Community Libraries)软件库。接下来,我会测试一下标准库,以及与其他嵌入式Python的区别。