PikaScript可以为资源受限的mcu提供极易部署和拓展的Python脚本支持。
支持裸机运行,可运行于 RAM ≥ 4kB ,FLASH ≥ 32kB 的mcu中,如stm32g030, stm32f103c8t6,esp8266。
支持Keil、IAR、rt-thread studio、segger embedded studio等IDE开发。
支持CMake、makeFile、Scons等构建工具
零依赖,零配置,开箱即用,极易集成进已有的C工程。
极易拓展自定义的C原生函数。
支持跨平台,可在linux环境开发内核。
使用python3标准语法的子集。
在编译时支持python类和方法定义,完整支持封装、继承、多态、模块功能 - 基于Pika预编译器。
在运行时支持python方法调用、变量定义、对象构造、对象释放、控制流(if\while) - 基于Pika运行时内核。
注重源码可读性,命名规范,标准统一,完全不使用宏,几乎不使用全局变量。
完整的googletest单元测试。
E-mail: [email protected]
内容 | 贡献者 |
---|---|
捐赠:APM32F030R8 开发板 | 极海半导体 陈成 |
捐赠:APM32E103VB 开发板 | 极海半导体 陈成 |
捐赠:APEX-Link仿真器 | 极海半导体 陈成 |
源码格式化 | Meco Jianting Man |
demo/simulation-keil | 千帆(微信名) |
demo/stm32f103zet6/demo01-led-stm32f103zet6 | 甜航 |
demo/stm32f103zet6/demo02-led-stm32f103zet6_tworoot | 甜航 |
demo/stm32f407zgt/demo01-led-stm32f407vgt | 甜航 |
我就想用单片机跑个Python,得用linux虚拟机 交叉编译工具链 命令行编译micropython固件,还得用DfuSe工具烧录固件,烧录完还不能用C的调试器来调试。
我想拓展个自己的C模块,还要学着用一些完全看不懂的宏函数,还得手动注册,还得编写makeFile,编译完照样不能调试C。
我穷,买不起STM32F4,想买个STM32F103C8T6的micropython开发板,淘宝一搜,好像没有。
现在C8T6贵了,我还想用F0,用G0,能行吗?
好像,给G0移植micropython,不是很容易。
那?有没有另一种玩法?
换句话说,我想用Keil开发,用Keil调试,我还想用最便宜的单片机。
这,能玩Python吗?
要不,试试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工程。
说了这么多,刘华强就有疑问了,你说这脚本,保熟吗?
我这开水果脚本摊儿的,能买你生脚本蛋子?
这就挑点儿Demo给哥儿几个瞧瞧。
这可都是STM32G070RBT6的Demo。
看看这脚本,可都是如假包换的Python3标准语法。
这灯不就闪起来了吗。
开个串口,读俩字符试试
非常顺滑
同样几行脚本搞定。
这是输出的结果。
这几个Demo占用的RAM最大值只有3.56K,把1K的堆栈也算上就是4.56K,Flash最大占用是30.4K,以STM32F103C8T6的20K RAM和64K Flash为标准,RAM才用掉不到25%,Flash才用掉不到50%,简直是资源多到不知道咋霍霍。
同样跑Python,我们可以简单对比一下micropython的常用芯片STM32F405RG和这次跑PikaScript的芯片STM32G070CB
除了设备驱动之外,为mcu开发自定义的python脚本绑定在pikascript的开发框架下非常轻松,下面两个Demo就是自定义的C模块拓展,这个Demo基于ARM-2D图像驱动库开发了一些python脚本接口。
当然,这个就是PikaScript的github主页: https://github.com/pikasTech/pikascript
PikaScript为开发者准备了丰富的Demo和由浅入深的开发指南,指南还会持续完善和维护。
当然!PikaScript采用MIT协议,允许修改和商用,但是要注意保留原作者的署名。
step1: 拉取项目
git clone https://github.com/mimilib/pikascript
cd pikascript
step2: 编译项目
sh init.sh # 第一次编译前运行,之后就不用运行了
sh make.sh # 编译项目
step3: 运行单元测试
sh test
step4: 运行基准测试
sh test-banchmark
step5: 运行demo
./build/src/boot/demo06-pikamain/pikascript_demo06-pikamain