pikapython/README_zh.md
2021-12-08 18:56:53 +08:00

12 KiB
Raw Blame History

logo

PikaScript

跨平台的超轻量级嵌入式Python引擎

论坛 | 文档中心 | 视频中心 | 包管理器

【声明】: PikaScript未与任何第三方机构达成合作本开源项目遵守MIT开源协议。

1.简介

PikaScript是一个完全重写的超轻量级python引擎零依赖零配置可以在少于4KB的RAM下运行(如stm32g030c8和stm32f103c8),极易部署和扩展,具有大量的中文文档和视频资料。

output_Kgj52R

image

获取PikaScript:

使用Pika包管理器PikaPackage.exe

  1. 直接运行PikaPackage.exe, 自动下载并更新pikaScript主仓库(文件在当前磁盘的/tmp/pikaScript文件夹)

  2. requestment.txt放在PikaPackage.exe同一文件夹下, 运行pikaPackage.exe, 自动在当前目录下安装内核预编译器模块

  3. 已发布的模块列表:packages.toml

快速上手

可使用仿真工程快速上手,无需硬件,也可以使用官方支持的开发板Pika派—Zero,上手即玩。

image

开发板基于STM32G030C8T6小资源MCU仅64kB Flash8kB RAM即可运行完整解释器和完整的外设驱动GPIO、TIME、IIC、RGB、KEY、LCD、RGB。板载CH340 USB转串口芯片Type-C接口支持串口下载python脚本板载4颗RGB灯可选配LCD屏幕

Pika派python编程游玩指南

开发手册

点此进入文档中心

image

视频教程

点此进入视频中心

image

交流论坛

点此进入论坛

image

文件目录

src - 内核源码

bsp - 裸机芯片/板卡支持

port - 操作系统支持

document - 开发文档

examples - 示例脚本

package - 模块目录

pikaCompiler - 使用rust编写的预编译器

pikaPackageManager - 使用go编写的模块管理器

2.平台支持

MCU/Board bsp gpio uart pwm adc i2c spi rgb lcd arm-2d
PikaPi Zero
stm32g030c8
stm32g070cB
stm32f103c8
ch32v103r8t6
QEMU
cm32m101a
w801
apm32f030r8
apm32e103vb
bl-706

3.特性

(1)运行环境

支持裸机运行,可运行于 RAM ≥ 4kB FLASH ≥ 32kB 的mcu中如stm32g030, stm32f103c8t6esp8266。

(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运行时内核

语法 编译时 运行时
类定义
类继承
方法定义
方法重载
方法调用
模块导入
参数定义
参数赋值
对象新建
对象销毁
对象嵌套

操作符

+ - * / == > < >= <= % ** // != & >> << and or not += -= *= /=

控制流

if while for else elif break continue

(4)源码规范

注重源码可读性,命名规范,标准统一,完全不使用宏,几乎不使用全局变量。

完整的googletest单元测试。

4.交流与技术支持:

微信交流群

微信截图_20210917133247

群已经满啦加我QQ拉你进群~ qq: 645275593

Tencent QQ 645275593

Tencent QQ Group:

微信交流群

E-mail: 645275593@qq.com

5.贡献者

内容 贡献者
基于QEMU的ARM-2D仿真工程 liuduanfei
捐赠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 万物起源点个灯

mmexport1631351506111

Hnet-image (2)

Demo 02 串口测试

mmexport1631351902469

Hnet-image (3)

Demo 03 读个ADC试试

mmexport1631351527609

mmexport1631351523907

Demo 04 PWM输出

image

Demo 05 RGB流水灯

image

这几个Demo占用的RAM最大值只有3.56K把1K的堆栈也算上就是4.56KFlash最大占用是30.4K以STM32F103C8T6的20K RAM和64K Flash为标准RAM才用掉不到25%Flash才用掉不到50%。

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

RAM资源对比

image

Flash资源对比

image

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

image

拓展能力如何呢?

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

几个小方块~

Hnet-image (7)

几个旋转太阳~

Hnet-image (6)