2.3. 使用 BSP 工程

2.3.1. 创建工程

进入 pikascript 官网 http://pikascript.com 选择平台,模块,然后点击 “开始生成”。 (选择平台后会自动选择默认的模块) _images/1644129110261-049ad5bb-21af-40e2-9533-a1c8c86790f1.png

2.3.2. 工程的来源

移植好的裸机MCU工程在pikascript/bsp目录,里面的每一个文件夹都是一个移植好的裸机工程。 每个工程都是独立的,可以拷贝出pikascript仓库单独使用。 (simulation-keil-dev和pico-dev是列外,这两个bsp只能在仓库里面用,是用来开发内核的。) https://gitee.com/Lyon1998/pikascript/tree/master/bsp _images/1638605947761-93b30636-099f-4c7c-a432-6aae5e2d8b53.png

2.3.3. 支持列表

在bsp文件夹的README.md中,标注了目前的平台支持情况和bsp的使用方法。 (以下的表格不是最新的) 最新表格点这里 _images/1639629972025-ca8fdf74-5dc2-472e-8497-5bc163bccdf4.png _images/1639629981607-43c6b771-34bf-45ac-9a66-8604f705ddff.png 你可以通过贡献驱动模块或者bsp来帮助PikaScript拓展这个表格,具体请参考文档中的新平台移植指南模块开发包管理部分。

2.3.4. 工程结构

以CH32V103为例,一个PikaScript的工程包含以下的几个部分。 _images/1638631568309-cbc19553-75be-4915-900a-72fe700b4d16.png

  1. 首先是BSP文件夹中除了PikaScript文件夹以外的部分,这一部分是真正的BSP,包含了厂家提供的基本外设库、CMSIS等一些平台上的通用库,只需要对厂家的例程进行整理就可以得到。

  2. 上面的一部分是PikaScript的启动器,包含main.c入口文件,pika_config.c配置文件,还有*.s汇编启动文件。启动器负责支持printf,堆栈设置,PikaScript的启动,以及交互式运行、串口下载Python等一些功能。

pika_config.c是用于支持串口下载Python等一些高级功能的,没有这个文件PikaScript依然可以运行。

  1. 再上面就是PikaScript的主要部分了,分为内核和模块两个部分,内核就是pikascript/src中的文件,选择一个版本全部添加编译即可,不需要任何的修改。

  2. 模块部分是可以自己开发,或者从仓库中拉取的,PikaStdLib标准库模块是必选的。 其他模块是可选的。

关于如何使用模块以及如何制作模块,请参考模块开发部分,关于如何贡献模块到PikaScript参考,请参考如何贡献PikaScript模块部分。

  1. 最上层是PikaScript工程能够支持的Python脚本,Python脚本可以直接解释运行,加载脚本的方式有多种,包括预编译进固件、交互式运行、串口下载Python脚本等,预编译进固件可以参考模块开发的部分,交互式运行和串口下载可以参考新平台移植的部分。

只有在main.py中import的模块会被编译进固件,因此main.py还可以起到剪裁模块的作用。

2.3.5. 模块管理

启动器、内核和模块都可以使用包管理器进行管理。

因此BSP中的PikaScript文件夹中只包含 requestment.txt 模块描述文件和 main.py 示例脚本。

requestment.txt使用与通用 pip 一样的模块描述语法,直接运行 pikaPackage.exe 就可以识别当前文件夹下的 requestment.txt 然后拉取相应的模块。

pikaPackage.exe 可以从包管理器相关文档中的链接下载。

以 stm32g030的bsp 中的 requestment.txt 为例,被拉取的模块有:

  • 内核: pikascript-core

  • 标准库: PikaStdLib

  • 外设模块: STM32G0 PikaPiZero PikaStdDevice

  1. pikascript-core==v1.6.1
  2. PikaStdLib==v1.6.1
  3. PikaStdDevice==v1.6.0
  4. STM32G0==v1.2.0
  5. PikaPiZero==v1.1.3

拉取后的模块需要预编译,直接运行 rust-msc-latest-win10.exe 即可。

2.3.6. 注意事项

  1. Keil版本强烈建议不低于5.36

_images/1641372084863-db6426eb-b3cc-454d-b14a-5338818d01aa.png