您尚未登录。

楼主 # 2021-12-01 15:04:46

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

PikaScript是一个完全重写的超轻量级python引擎,具有完整的解释器,字节码和虚拟机架构,可以在少于4KB的RAM下运行,用于小资源嵌入式系统。相比同类产品,如MicroPython,LuaOS等,资源占用减少85%以上。入选2021年度 Gitee最有价值开源项目,加入RT-Thread嵌入式实时操作系统编程语言类软件包。

下面是一些例程Demo,截取自宣传用的公众号文章,表述略显浮夸(捂脸)

————————————分割线————————————

我就想用单片机跑个Python,得用linux虚拟机+交叉编译工具链+命令行编译micropython固件,还得用DfuSe工具烧录固件,烧录完还不能用C的调试器来调试。

我想拓展个自己的C模块,还要学着用一些完全看不懂的宏函数,还得手动注册,还得编写makeFile,编译完照样不能调试C。

我穷,买不起STM32F4,想买个STM32F103C8T6的micropython开发板,淘宝一搜,好像没有。

现在C8T6贵了,我还想用F0,用G0,能行吗?

好像,给G0移植micropython,不是很容易。

那?有没有另一种玩法?

换句话说,我想用Keil开发,用Keil调试,我还想用最便宜的单片机。

这,能玩Python吗?

FluxBB bbcode 测试

要不,试试PikaScript?

啥是PikaScript?

PikaScript可以为资源受限的mcu提供极易部署和拓展的Python脚本支持。

PikaScript支持裸机运行,最低可运行于 RAM ≥ 4kB ,FLASH ≥ 32kB 的mcu中,推荐配置为 RAM ≥ 10kB, FLASH ≥ 64kB,像是stm32f103c8t6、stm32g070RBT6这些完全没有压力,甚至已经满足了推荐配置。

而且支持Keil、IAR、rt-thread studio、segger embedded studio等IDE开发,零依赖,零配置,开箱即用,极易集成进已有的C工程。

说了这么多,刘华强就有疑问了,你说这脚本,保熟吗?

FluxBB bbcode 测试

我这开水果脚本摊儿的,能买你生脚本蛋子?

这就挑点儿Demo给哥儿几个瞧瞧。

这可都是STM32G070RBT6的Demo。

Demo 01 万物起源点个灯

FluxBB bbcode 测试

看看这脚本,可都是如假包换的Python3标准语法。

这灯不就闪起来了吗。

FluxBB bbcode 测试

Demo 02 串口测试

FluxBB bbcode 测试

开个串口,读俩字符试试

FluxBB bbcode 测试

非常顺滑

Demo 03 读个ADC试试

FluxBB bbcode 测试

同样几行脚本搞定。

FluxBB bbcode 测试

这是输出的结果。

这几个Demo占用的RAM最大值只有3.56K,把1K的堆栈也算上就是4.56K,Flash最大占用是30.4K,以STM32F103C8T6的20K RAM和64K Flash为标准,RAM才用掉不到25%,Flash才用掉不到50%,简直是资源多到不知道咋霍霍。

同样跑Python,我们可以简单对比一下micropython的常用芯片STM32F405RG和这次跑PikaScript的芯片STM32G070CB

RAM资源对比

FluxBB bbcode 测试

Flash资源对比

FluxBB bbcode 测试

参考价对比(以2021年9月11日立创商城10片售价为参考)

FluxBB bbcode 测试

拓展能力如何呢?
除了设备驱动之外,为mcu开发自定义的python脚本绑定在pikascript的开发框架下非常轻松,下面两个Demo就是自定义的C模块拓展,这个Demo基于ARM-2D图像驱动库开发了一些python脚本接口。

几个小方块~

FluxBB bbcode 测试

几个旋转太阳~

FluxBB bbcode 测试

那,PikaScript是开源的吗?
当然,这个就是PikaScript的github主页:

https://github.com/pikasTech/pikascript

还有gitee主页

https://gitee.com/Lyon1998/pikascript

开发难不难?
PikaScript为开发者准备了丰富的Demo和由浅入深的开发指南,指南还会持续完善和维护。 image

可以商用吗?
当然!PikaScript采用MIT协议,允许修改和商用,但是要注意保留原作者的署名。

最近编辑记录 lyon1998 (2021-12-01 15:43:03)

离线

楼主 #2 2021-12-01 17:10:49

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

linghaibin 说:

python代码还是要预编译的 不是直接解释的  不是脱____么

需要预编译的是c模块,python脚本可以直接运行,也支持交互式运行

离线

楼主 #4 2021-12-01 17:32:00

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

Chin 说:

群友前来膜拜,楼主出个视频解释解释语法分析啊!

语法分析是递归生成AST,等周末可以简单介绍一下~

离线

楼主 #6 2021-12-02 10:48:45

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

演技担当黄晓明 说:

晚上花了三个小时点灯,点LCD 试了一下,感觉挺好,Python在这里就是个胶水,把基层外设模块粘连起来

感谢大佬趟坑(捂脸)
如果不是串口的dtr有坑,应该半个小时就搞定了。

离线

楼主 #9 2021-12-02 16:04:14

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

Meekdai 说:

micropython 可以直接插USB识别为U盘,把代码拷贝进去就行,不知道PikaScript支不支持(如果同样在F405上面跑)

目前支持的形式是通过串口助手发送main.py文件。发送完就能运行。

FluxBB bbcode 测试

离线

楼主 #12 2021-12-02 16:16:06

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

达克罗德 说:

好东西!就是不知道完成度如何,比如哪些Python3语法是支持的,哪些不支持,有什么差异。
另外,绑定C库的教程有没有

目前支持下面这些语法特性

_20211201214948_20211202-1613.png

_20211202161258.png

下面这个是绑定C模块的教程

PikaScript C模块标准开发流程

还有两个视频

最简单的C模块:
https://www.bilibili.com/video/BV1aP4y1L7pi

C模块实战-LED
https://www.bilibili.com/video/BV1Jr4y117Z8

离线

楼主 #13 2021-12-02 16:17:28

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

Meekdai 说:

@lyon1998
通过串口发送文件到FLASH再运行多少还是有些不方便,比如我需要发送一张屏幕的图片到FLASH,速度就比较慢。
不过这个项目真的很棒,我现在用micropython确实有遇到要编译C模块的时候,自己写C模块更加不方便。

嗯嗯,USB驱动做好之后也可以像mpy那样拖拽,最后给解释器一个字符串形式的python脚本就可以了。

离线

楼主 #19 2021-12-02 20:44:02

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

达克罗德 说:

@lyon1998
Control flow支持的比较少,别的都很全了。期望Control flow能完善一点,可用性就高了。

一直打算在bootloader里搞个脚本,这个就很合适

Control flow正在施工~

离线

楼主 #20 2021-12-02 20:45:38

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

达克罗德 说:

出错时的trace有吗?
对了,如果能实现调试器就好了,micropython没有调试器太痛苦。靠一次一次加打印来调试,关键每次都要上传脚本很麻烦

调试的话目前还是依靠交互式运行,或者就直接用keil等ide调试固件。

出错的trace的话目前支持主动抛出异常,还有就是会报告出错的指令

离线

楼主 #21 2021-12-02 20:59:18

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

Meekdai 说:

@lyon1998
期待,我现在在micropython上跑LVGL,可以实时画界面看效果还是不错的。F4现在确实挺贵,哪天有空试试PikaScript!

期待大佬的LVGL哈哈,目前我在和ARM-2D的作者王桑合作。

顺便给ARM-2D打个广告,ARM-2D是由ARM官方支持,完全开源的用于小资源嵌入式系统的最新GUI技术,比LVGL资源更小,只需要2Kb内存,20Kb 左右flash即可运行,具有图形加速、部分缓冲、脏矩阵加速刷新、透明度、抗锯齿、旋转等等强大的图像处理能力。

下面是ARM-2D的github主页:

https://github.com/ARM-software/EndpointAI/tree/master/Kernels/Research/Arm-2D

PikaScript还有一个和ARM2D的联合仿真工程,可以基于QEMU进行GUI仿真

PikaScript和ARM2D的联合仿真工程

离线

楼主 #23 2021-12-02 21:19:39

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

novice 说:

运行速度怎么样?可以跟lua比吗?

还没有具体的对比数据,目前主要运行在g030等lua还不能移植的小资源mcu

离线

楼主 #26 2021-12-20 23:51:03

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

vsf 说:

挺有意思,语法支持的完整度咋样?
只针对小资源的芯片吧?

https://gitee.com/Lyon1998/pikascript#3%E8%AF%AD%E6%B3%95%E7%89%B9%E6%80%A7

支持了一些基本语法,可以在这里看到最新的情况。

不只是小资源的芯片,所有的芯片理论上都可以,另外还有rtt软件包,能跑rtt的都一键支持。

平台支持列表可以在这里看到

https://gitee.com/Lyon1998/pikascript#2%E5%B9%B3%E5%8F%B0%E6%94%AF%E6%8C%81%E5%88%97%E8%A1%A8

离线

楼主 #28 2021-12-21 09:27:30

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

vsf 说:

@lyon1998
好的,我看看咋移植的。我看了一下语法,确实有一些还需要完善,不知道性能咋样

运行速度不如mpy,因为是体积优化优先的。

下面是移植文档,不过我看到大佬已经跑起来了哈哈!大佬NB

https://www.yuque.com/liang-mltek/pikascript/kzwgz4

离线

楼主 #31 2022-06-06 17:58:30

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

chinazhangdj 说:

这个 "method no found",每次看到都有点别扭,因为python里边都是Not Found,感觉有点中式英语的感觉。这个地方能不能改成 method not found。

动图是很早期的了,现在和 python 的报错类似

>>> te()
NameError: name 'te' is not defined
 -> RUN te              (#1)
>>> 

离线

楼主 #32 2022-06-06 18:00:34

lyon1998
Moderator
注册时间: 2021-12-01
已发帖子: 110
积分: 55

Re: 【pikascript】超轻量级的跨平台嵌入式Python解释器,可以在STM32G030等小资源MCU运行

wm20031015 说:

不错,晚上试试,
文件上传建议弄个TFTP服务器,上传下载都方便。

板子里装了tftp服务器就行

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn