0. 前言
APM32F427 是极海半导体推出的一款工业级高性能拓展型MCU,该系列最高工作主频240MHz,最高支持1MB Flash和448KB SRAM存储。
这么好的 MCU,我们当然要搞一些事情:把 Python 跑起来。目前有两个相对成熟的项目,可以让 MCU 运行 Python: MicroPython 和 PikaPython。
MicroPython 官网的介绍:
MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.
PikaPython 官网的介绍:
跨平台的超轻量级嵌入式 Python 引擎。
PikaPython 应该是国人开始的项目,我们今天就介绍 PikaPython 在 APM32F427 上的移植,如果以后有时间也会介绍一下 MicroPython ~ 话不多说,这就开始。
PikaPython 中文文档非常完整,地址在这里:http://pikapython.com/doc/
1. 准备模板工程
移植 PikaPython 最基础只需要一个支持 printf 的工程就可以。
我使用的开发板是 APM32F427-Tiny,准备的工程也只是初始化了开发板上与板载仿真器连接的 UASRT6。参考 board_apm32f427z_tiny.c 文件,这个文件也完成了 stdout/stdin 的输出输出重定向,参考下图中的注释:
需要注意的是 PikaPython 需要使用动态内存,所以项目的堆(heap)需要足够大。我的项目设置的堆大小是 16KiB,也就是 0x4000。参考上图蓝色框部分~
2. 生成 PikaPython 所需文件
第一步,获取 PikaPython 包管理器。
这个包管理器是一个可执行文件。由 PikaPython 官方开发,用于模块管理,可以提供内核、模块下载、模块发布、内核、模块版本切换功能。可以点击 https://gitee.com/Lyon1998/pikapython/attach_files/1467185/download 直接下载,得到一个 pikaPackage 的可执行文件。复制这个文件到项目中 pikapython 文件夹。这个文件夹是自己创建的,用于保存 PikaPython 相关内容。
第二步,安装必要的模块。
在 pikapython 文件夹中,创建一个 **requestment.txt** 的文本文件,内容:
pikascript-corePikaStdLib
然后双击运行包管理器。也可以命令行窗口执行这个命令,这样就能看到程序执行的输出,类似:
命令行下看到 Succeed: Update OK ! 字样,说明操作成功了。pikapython 文件夹会多出很多文件:
如果打开 requestment.txt,就能看到文件内容相较于之前的有所变化:
pikascript-core==v1.13.4PikaStdLib==v1.13.4
增加了相应的版本号,这个是包管理器操作的。在生成的 pikascript- 开始的3个目录下,是生成的 .c/.h 文件,需要全部加入 keil 工程中。这些就是 PikaPython 的代码了。
第三步,加入项目,启动编译
回到 keil 中,把上面三个生成的文件夹下的全部 .c 文件加入项目:
在工程选项中,把这3个目录加入 include 搜索路径:
修改 main.c 把相关功能加入程序:
#include"board.h"#include"apm32f427xx.h"#include"pikaScript.h"#include<stdio.h>//intmain(){//SystemCoreClockUpdate();// Systick Configif(SysTick_Config(SystemCoreClock /1000)){while(1){;}}board_init();printf("\n\nHello world!\n\n");PikaObj* pikaMain = pikaScriptInit();pikaScriptShell(pikaMain);while(1){ms_delay(5);}return0;}
编译一下,应该不会有错误,而是一些警告:
第四步,下载运行
把开发板连接到 PC,下载程序。
使用 Putty 或者你顺手的其他工具打开串口连接到开发板。之后复位一下,可以进行类似下面的操作:
是的,和在 PC 上运行 Python 程序一样的结果。
当然,这只是个开始,我们下一步还可以移植更多的驱动,比如 GPIO,UART并集成到 PikaPython 中。
最后,人生苦短,我用Python~
0. 前言
APM32F427 是极海半导体推出的一款工业级高性能拓展型MCU,该系列最高工作主频240MHz,最高支持1MB Flash和448KB SRAM存储。
这么好的 MCU,我们当然要搞一些事情:把 Python 跑起来。目前有两个相对成熟的项目,可以让 MCU 运行 Python: MicroPython 和 PikaPython。
MicroPython 官网的介绍:
MicroPython is a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments.
PikaPython 官网的介绍:
跨平台的超轻量级嵌入式 Python 引擎。
PikaPython 应该是国人开始的项目,我们今天就介绍 PikaPython 在 APM32F427 上的移植,如果以后有时间也会介绍一下 MicroPython ~ 话不多说,这就开始。
PikaPython 中文文档非常完整,地址在这里:http://pikapython.com/doc/
1. 准备模板工程
移植 PikaPython 最基础只需要一个支持 printf 的工程就可以。
我使用的开发板是 APM32F427-Tiny,准备的工程也只是初始化了开发板上与板载仿真器连接的 UASRT6。参考 board_apm32f427z_tiny.c 文件,这个文件也完成了 stdout/stdin 的输出输出重定向,参考下图中的注释:
需要注意的是 PikaPython 需要使用动态内存,所以项目的堆(heap)需要足够大。我的项目设置的堆大小是 16KiB,也就是 0x4000。参考上图蓝色框部分~
2. 生成 PikaPython 所需文件
第一步,获取 PikaPython 包管理器。
这个包管理器是一个可执行文件。由 PikaPython 官方开发,用于模块管理,可以提供内核、模块下载、模块发布、内核、模块版本切换功能。可以点击 https://gitee.com/Lyon1998/pikapython/attach_files/1467185/download 直接下载,得到一个 pikaPackage 的可执行文件。复制这个文件到项目中 pikapython 文件夹。这个文件夹是自己创建的,用于保存 PikaPython 相关内容。
第二步,安装必要的模块。
在 pikapython 文件夹中,创建一个 **requestment.txt** 的文本文件,内容:
pikascript-corePikaStdLib
然后双击运行包管理器。也可以命令行窗口执行这个命令,这样就能看到程序执行的输出,类似:
命令行下看到 Succeed: Update OK ! 字样,说明操作成功了。pikapython 文件夹会多出很多文件:
如果打开 requestment.txt,就能看到文件内容相较于之前的有所变化:
pikascript-core==v1.13.4PikaStdLib==v1.13.4
增加了相应的版本号,这个是包管理器操作的。在生成的 pikascript- 开始的3个目录下,是生成的 .c/.h 文件,需要全部加入 keil 工程中。这些就是 PikaPython 的代码了。
第三步,加入项目,启动编译
回到 keil 中,把上面三个生成的文件夹下的全部 .c 文件加入项目:
在工程选项中,把这3个目录加入 include 搜索路径:
修改 main.c 把相关功能加入程序:
#include"board.h"#include"apm32f427xx.h"#include"pikaScript.h"#include<stdio.h>//intmain(){//SystemCoreClockUpdate();// Systick Configif(SysTick_Config(SystemCoreClock /1000)){while(1){;}}board_init();printf("\n\nHello world!\n\n");PikaObj* pikaMain = pikaScriptInit();pikaScriptShell(pikaMain);while(1){ms_delay(5);}return0;}
编译一下,应该不会有错误,而是一些警告:
第四步,下载运行
把开发板连接到 PC,下载程序。
使用 Putty 或者你顺手的其他工具打开串口连接到开发板。之后复位一下,可以进行类似下面的操作:
是的,和在 PC 上运行 Python 程序一样的结果。
当然,这只是个开始,我们下一步还可以移植更多的驱动,比如 GPIO,UART并集成到 PikaPython 中。
最后,人生苦短,我用Python~
。
---------------------
作者:wangqy_ic
链接:https://bbs.21ic.com/icview-3501089-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。