pikapython/document/2.十分钟快速部署.md

136 lines
6.5 KiB
Markdown
Raw Normal View History

2021-08-26 21:25:22 +08:00
## 2.十分钟快速部署
2021-08-26 20:26:22 +08:00
在本篇文档中将会介绍为已有的keil工程部署PikaScript的方法。
PikaScript几乎没有全局变量和宏仅依赖标准库因此为已有的工程部署PikaScript是非常容易的。
下面是部署PikaScript的具体步骤。
2021-11-17 00:40:42 +08:00
### (1)下载PikaScript包管理器
PikaScript包管理器可以帮助你拉取pikascript所需要的所有源码和工具并且提供版本选择功能方便你切换版本。
并且PikaScript包管理器使用gitee源能够在大陆顺畅地使用不需要科学上网。
2021-08-26 20:26:22 +08:00
进入PikaScript主仓库
https://github.com/mimilib/pikascript
2021-11-17 00:40:42 +08:00
下载PikaScript包管理器PikaPackage.exe
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
![image](https://user-images.githubusercontent.com/88232613/142019152-afbe2f84-7f76-45ab-856b-bd796c6b5fc9.png)
2021-08-26 20:26:22 +08:00
2021-11-17 00:40:42 +08:00
然后打开你要部署的工程在工程的根目录下新建pikascript文件夹然后把PikaPackage.exe复制进去。
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
![image](https://user-images.githubusercontent.com/88232613/142019778-c727336c-9b6a-4a82-b813-1671f4120152.png)
2021-08-26 20:26:22 +08:00
2021-11-17 00:40:42 +08:00
你的工程仅需要包含一个支持printf的串口初始化然后就可以愉快地使用pikascript了。
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
通常的脚本解释器都依赖操作系统和文件系统而pikascript不需要这些如果你部署过其他的脚本引擎就会很清楚PikaScrip具有真正的超轻量级特性。
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
### (2)拉取源码,预编译模块
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
接下来在PikaPackage.exe的帮助下我们可以轻松地拉去指定版本的源码和模块。
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
拉取源码和模块通过一个requestment.txt的文件如果你熟悉python的pip包管理器就会发现pikascript的requestment.txt文件格式与pip是一致的。
2021-08-26 21:07:07 +08:00
2021-11-17 00:40:42 +08:00
在项目的pikascript文件夹下新建一个requestment.txt文件然后写入以下内容。
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
```
pikascript-core==v1.2.0
PikaStdLib==v1.1.0
```
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
这表示使用v1.2.0版本的pikascript解释器内核和v1.1.0版本的标准库,解释器内核和标准库是必选项,而其他的模块可以有选择地添加,在初次部署时,应当只添加解释器和标准库以避免不必要的麻烦。
2021-08-26 21:01:12 +08:00
2021-11-17 00:40:42 +08:00
你可以照抄stm32g030的[requestment.txt](/bsp/stm32g030c8/pikascript/requestment.txt)内核和标准库版本, 这是官方支持的开发板[Pika派—Zero](https://item.taobao.com/item.htm?spm=a1z10.3-c.w4023-23991764790.10.16f97c58fsLjVk&id=654947372034)所使用的版本。而所有可选的版本可以在[packages.toml](/packages.toml)文件中查看。
2021-08-25 16:05:04 +08:00
2021-11-17 00:40:42 +08:00
现在的pikascript文件夹就有了pikaPackage.exe和requestment.txt两个文件双击运行pikaPackage.exe在requestmemt.txt中指定的源码和模块就会被拉取下来。
![image](https://user-images.githubusercontent.com/88232613/142022949-54585060-8612-42a8-a585-8c3e514a8be3.png)
拉取后的文件如下图所示pikascript-core是内核源码pikascript-lib是模块库pikascript-api是模块APIrust-msc-latest-win10.exe是pikascript专用的预编译器。
![image](https://user-images.githubusercontent.com/88232613/142023882-51ee4013-8318-483e-8ea4-5c57a5ffb6c6.png)
如果你想使用其他的版本在requestment.txt中修改版本号然后再次运行pikaPackage.exe即可原先的版本会被覆盖。
拉取完源码之后接下来编写pikascript运行的python脚本我们在pikascript文件夹新建一个main.py文件。
然后写入:
``` python
import PikaStdLib
print('hello PikaScript!')
```
其中```import PikaStdLib``` 表示导入标准库,标准库是必须要导入的,即使没有直接用到,而```print('hello PikaScript!')```用于测试pikascript是否正常启动。
接下来运行rust-msc-latest-win10.exe将main.py和导入的模块预编译为pikascript的api文件预编译后的文件在pikascript-api文件夹内。
![image](https://user-images.githubusercontent.com/88232613/142025848-29ed0599-711a-42d6-91a9-d29f842e2332.png)
我们打开pikascript-api文件夹发现里面有一些.c和.h文件就说明预编译是成功的pikascript预编译器可以把python文件预编译为.c和.h文件。
![image](https://user-images.githubusercontent.com/88232613/142026275-716bb2d7-209d-4c26-9b40-aae78a452668.png)
2021-08-26 21:07:07 +08:00
### (3)添加源码
2021-08-26 21:31:29 +08:00
在Project中新建三个group建议命名为pikascript-core,pikascript-api和pikascript-lib
2021-08-26 21:07:07 +08:00
![image](https://user-images.githubusercontent.com/88232613/130967351-597b8f6b-cc4e-4bc3-9cb6-2f335e5dccea.png)
然后将pikascript文件夹内的三个子文件夹下的.c文件全部添加到keil工程里
2021-08-26 21:32:26 +08:00
![image](https://user-images.githubusercontent.com/88232613/130971776-41d8c940-42d0-407d-872e-53525ce299a6.png)
2021-08-26 21:07:07 +08:00
2021-08-26 21:32:26 +08:00
再然后为pikascript-core和pikascript-api文件夹添加include路径
2021-08-26 21:07:07 +08:00
![image](https://user-images.githubusercontent.com/88232613/130967813-94016b8a-e408-4b49-b1e1-76a5df5fe984.png)
![image](https://user-images.githubusercontent.com/88232613/130967949-8399c65b-5584-4674-a947-e40103d953ea.png)
2021-08-26 21:12:58 +08:00
2021-11-17 00:40:42 +08:00
### (4)调整堆栈
打开工程的启动文件, 在stm32中, 这是一个startup_stm32xxxx.s的文件而在其他平台上你要自己弄清楚如何调整堆栈。
2021-08-26 21:17:25 +08:00
2021-11-17 00:40:42 +08:00
![image](https://user-images.githubusercontent.com/88232613/130966276-24014a0a-90a6-4bd7-96b7-fde54806b8c3.png)
建议分配4K的栈空间和16K的堆空间最少也需要分配1K的栈空间和4K的堆空间
4K栈空间对应0x1000, 16K堆空间对应0x4000如下图所示
![image](https://user-images.githubusercontent.com/88232613/130967178-a985a4f5-730c-47fd-9317-68f33bc00066.png)
### (5)启动PikaScript
在main.c的初始化代码中添加PikaScript的启动代码。
2021-08-26 21:17:25 +08:00
1) 添加 #include "pikascript.h"
![image](https://user-images.githubusercontent.com/88232613/130969048-4def9902-5f36-4798-9eac-ebbb1441087f.png)
2) 初始化pikaScript并得到pikascript主对象的指针pikaMain
![image](https://user-images.githubusercontent.com/88232613/130969274-ff2fdf6f-2389-466b-b51e-e7bc33472558.png)
2021-11-17 00:40:42 +08:00
结束了?对,结束了,就这么简单,是不是很神奇。
2021-08-26 21:17:25 +08:00
2021-11-17 00:40:42 +08:00
这是因为预编译器在背后做了很多辅助工作,包括自动生成```pikaScriptInit()```函数。
2021-08-26 21:12:58 +08:00
2021-11-17 00:40:42 +08:00
### (6)编译源码
2021-08-26 21:12:58 +08:00
2021-11-17 00:40:42 +08:00
编译源码时需要勾选C99标准而编译优化等级可以任意选择pikascript均支持。
2021-08-26 21:21:40 +08:00
2021-11-17 00:40:42 +08:00
![image](https://user-images.githubusercontent.com/88232613/130968626-7d8d4f46-eb0c-4ccd-9c34-eab160b290f5.png)
2021-08-26 21:24:35 +08:00
然后直接编译即可一般来说是可以直接通过的使用compiler version 5 或者 compiler version 6均可。
### 结语
部署文档到此就结束了。继续学习PikaScript的标准开发流程请看
2021-08-26 21:24:51 +08:00
[3. PikaScipt标准开发流程](./3.PikaScript标准开发流程.md)