9.6 KiB
来颗Star求求了~ Star please~
issue, pr请往主仓库:Github/pikastech/pikascript
1.简介
PikaScript是一个完全重写的超轻量级python引擎,零依赖,零配置,可以在少于4KB的RAM下运行(如stm32g030c8和stm32f103c8),极易部署和扩展。
视频教程
入门篇 - 面向单片机Python编程用户
中级篇 - 面向驱动开发者
PikaScript中级 RISC-V部署PikaScript CH32V103R8
进阶篇 - 面向编译器爱好者和开源项目维护者
PikaScript进阶-Github自动测试-Github Actions CI
获取PikaScript:
使用Pika包管理器PikaPackage.exe
-
直接运行PikaPackage.exe, 自动下载并更新pikaScript主仓库(文件在当前磁盘的/tmp/pikaScript文件夹)
-
将requestment.txt放在PikaPackage.exe同一文件夹下, 运行pikaPackage.exe, 自动在当前目录下安装内核、预编译器与模块。
-
已发布的模块列表:packages.toml
文件目录
src - 内核源码
bsp - 裸机芯片/板卡支持
port - 操作系统支持
document - 开发文档
examples - 示例脚本
package - 模块目录
pikaCompiler - 使用rust编写的预编译器
pikaPackageManager - 使用go编写的模块管理器
2.驱动适配进度
MCU/Board | gpio | uart | pwm | adc | rgb | i2c | spi |
---|---|---|---|---|---|---|---|
PikaPi Zero | √ | √ | √ | √ | √ | ||
stm32g030c8 | √ | √ | √ | √ | - | ||
stm32g070cB | √ | √ | √ | √ | - | ||
stm32f103c8 | √ | √ | √ | √ | - |
3.特性
(1)运行环境
支持裸机运行,可运行于 RAM ≥ 4kB ,FLASH ≥ 32kB 的mcu中,如stm32g030, stm32f103c8t6,esp8266。
(2)开发环境
支持串口下载Python脚本。
支持Keil、IAR、rt-thread studio、segger embedded studio等IDE开发。
支持CMake、makeFile、Scons等构建工具
零依赖,零配置,开箱即用,极易集成进已有的C工程。
极易拓展自定义的C原生函数。
支持跨平台,可在linux环境开发内核。
(3)语法特性
使用python3标准语法的子集。
在编译时支持python类和方法定义,完整支持封装、继承、多态、模块功能 - 基于Pika预编译器。
在运行时支持python方法调用、变量定义、对象构造、对象释放、控制流(if\while) - 基于Pika运行时内核。
(4)源码规范
注重源码可读性,命名规范,标准统一,完全不使用宏,几乎不使用全局变量。
完整的googletest单元测试。
(5)stm32例程
(6)开发手册
4.交流与技术支持:
微信交流群
群已经满啦,加我QQ拉你进群~ qq: 645275593
Tencent QQ: 645275593
Tencent QQ Group:
E-mail: 645275593@qq.com
5.贡献者
内容 | 贡献者 |
---|---|
捐赠:GD32E103TB芯片2片 | 信息牛(微信名) |
Rt-thread 支持包模板 | Meco Jianting Man |
捐赠:移远EC600S-CN 4G模块 | 移远模块 |
捐赠:博流BL706 开发板 | 博流智能 bouffalolab |
捐赠:中国移动CM32M101A 开发板 | 孟巍(微信名) |
捐赠:APM32F030R8 开发板 | 极海半导体 陈成 |
捐赠:APM32E103VB 开发板 | 极海半导体 陈成 |
捐赠:APEX-Link仿真器 | 极海半导体 陈成 |
源码格式化,增加git属性文件 | Meco Jianting Man |
demo/simulation-keil | 千帆(微信名) |
demo/stm32f103zet6/demo01-led-stm32f103zet6 | 甜航 |
demo/stm32f103zet6/demo02-led-stm32f103zet6_tworoot | 甜航 |
demo/stm32f407zgt/demo01-led-stm32f407vgt | 甜航 |
6.内核测试与开发
linux下测试pikascript内核(推荐ubuntu20.04):
step1: 拉取项目
git clone https://github.com/pikastech/pikascript
cd pikascript/src
step2: 编译项目
sh init.sh # 第一次编译前运行,之后就不用运行了
sh make.sh # 编译项目
step3: 运行单元测试
sh test.sh
step4: 运行基准测试
sh test-banchmark.sh
step5: 运行demo
./build/src/boot/demo06-pikamain/pikascript_demo06-pikamain
7.Demo展示
Demo 01 万物起源点个灯
Demo 02 串口测试
Demo 03 读个ADC试试
Demo 04 PWM输出
Demo 05 RGB流水灯
这几个Demo占用的RAM最大值只有3.56K,把1K的堆栈也算上就是4.56K,Flash最大占用是30.4K,以STM32F103C8T6的20K RAM和64K Flash为标准,RAM才用掉不到25%,Flash才用掉不到50%。
我们可以简单对比一下micropython的常用芯片STM32F405RG和这次跑PikaScript的芯片STM32G070CB
RAM资源对比
Flash资源对比
参考价对比(以2021年9月11日立创商城10片售价为参考)
拓展能力如何呢?
除了设备驱动之外,为mcu开发自定义的python脚本绑定在pikascript的开发框架下非常轻松,下面两个Demo就是自定义的C模块拓展,这个Demo基于ARM-2D图像驱动库开发了一些python脚本接口。