6.5 KiB
2.十分钟快速部署
在本篇文档中,将会介绍为已有的keil工程部署PikaScript的方法。
PikaScript几乎没有全局变量和宏,仅依赖标准库,因此为已有的工程部署PikaScript是非常容易的。
下面是部署PikaScript的具体步骤。
(1)下载PikaScript包管理器
PikaScript包管理器可以帮助你拉取pikascript所需要的所有源码和工具,并且提供版本选择功能,方便你切换版本。
并且PikaScript包管理器使用gitee源,能够在大陆顺畅地使用,不需要科学上网。
进入PikaScript主仓库
https://github.com/mimilib/pikascript
下载PikaScript包管理器PikaPackage.exe
然后打开你要部署的工程,在工程的根目录下新建pikascript文件夹,然后把PikaPackage.exe复制进去。
你的工程仅需要包含一个支持printf的串口初始化,然后就可以愉快地使用pikascript了。
通常的脚本解释器都依赖操作系统和文件系统,而pikascript不需要这些,如果你部署过其他的脚本引擎,就会很清楚PikaScrip具有真正的超轻量级特性。
(2)拉取源码,预编译模块
接下来,在PikaPackage.exe的帮助下我们可以轻松地拉去指定版本的源码和模块。
拉取源码和模块通过一个requestment.txt的文件,如果你熟悉python的pip包管理器,就会发现,pikascript的requestment.txt文件格式与pip是一致的。
在项目的pikascript文件夹下新建一个requestment.txt文件,然后写入以下内容。
pikascript-core==v1.2.0
PikaStdLib==v1.1.0
这表示使用v1.2.0版本的pikascript解释器内核和v1.1.0版本的标准库,解释器内核和标准库是必选项,而其他的模块可以有选择地添加,在初次部署时,应当只添加解释器和标准库以避免不必要的麻烦。
你可以照抄stm32g030的requestment.txt内核和标准库版本, 这是官方支持的开发板Pika派—Zero所使用的版本。而所有可选的版本可以在packages.toml文件中查看。
现在的pikascript文件夹就有了pikaPackage.exe和requestment.txt两个文件,双击运行pikaPackage.exe,在requestmemt.txt中指定的源码和模块就会被拉取下来。
拉取后的文件如下图所示,pikascript-core是内核源码,pikascript-lib是模块库,pikascript-api是模块API,rust-msc-latest-win10.exe是pikascript专用的预编译器。
如果你想使用其他的版本,在requestment.txt中修改版本号然后再次运行pikaPackage.exe即可,原先的版本会被覆盖。
拉取完源码之后,接下来编写pikascript运行的python脚本,我们在pikascript文件夹新建一个main.py文件。
然后写入:
import PikaStdLib
print('hello PikaScript!')
其中import PikaStdLib
表示导入标准库,标准库是必须要导入的,即使没有直接用到,而print('hello PikaScript!')
用于测试pikascript是否正常启动。
接下来运行rust-msc-latest-win10.exe,将main.py和导入的模块预编译为pikascript的api文件,预编译后的文件在pikascript-api文件夹内。
我们打开pikascript-api文件夹,发现里面有一些.c和.h文件,就说明预编译是成功的,pikascript预编译器可以把python文件预编译为.c和.h文件。
(3)添加源码
在Project中新建三个group,建议命名为pikascript-core,pikascript-api和pikascript-lib
然后将pikascript文件夹内的三个子文件夹下的.c文件全部添加到keil工程里
再然后为pikascript-core和pikascript-api文件夹添加include路径
(4)调整堆栈
打开工程的启动文件, 在stm32中, 这是一个startup_stm32xxxx.s的文件,而在其他平台上,你要自己弄清楚如何调整堆栈。
建议分配4K的栈空间和16K的堆空间,最少也需要分配1K的栈空间和4K的堆空间
4K栈空间对应0x1000, 16K堆空间对应0x4000,如下图所示
(5)启动PikaScript
在main.c的初始化代码中添加PikaScript的启动代码。
- 添加 #include "pikascript.h"
- 初始化pikaScript并得到pikascript主对象的指针pikaMain
结束了?对,结束了,就这么简单,是不是很神奇。
这是因为预编译器在背后做了很多辅助工作,包括自动生成pikaScriptInit()
函数。
(6)编译源码
编译源码时需要勾选C99标准,而编译优化等级可以任意选择,pikascript均支持。
然后直接编译即可,一般来说是可以直接通过的,使用compiler version 5 或者 compiler version 6均可。
结语
部署文档到此就结束了。继续学习PikaScript的标准开发流程请看