- 引言
- 硬件
- 软件
- 搭建MicroPython编译环境
- 获取MicroPython源码
- 编译MicroPython源码生成固件
- 下载MicroPython固件到电路板
- 运行第一个样例工程
引言
本文主要面向2023年全国大学生物联网设计竞赛安谋科技命题,使用星辰处理器的灵动MM32F5微控制器开发板,基于MicroPython开发应用系统。这里讲述的操作方法,也适用于灵动早年发布的使用Arm Cortex-M3微控制器的MM32F3微控制器开发板,以及各种使用MM32F3和MM32F5微控制器设计的开发板。
硬件
除了具有足够Flash和SRAM的微控制器之外,运行MicroPython的电路板上最好有一个存储介质,用于加载文件系统,进一步通过文件系统保存Python脚本,能够让电路板上电之后自动运行。笔者最早使用SD卡作为文件系统的载体,但后来在适配MM32F5微控制器的MicroPython项目中启用了基于spiflash的LFS文件系统后,就转而使用spiflash作为文件系统的载体。相对于使用SD卡,使用spiflash的总体成本更加便宜,而且节约电路板的面积,并且不用担心不小心丢掉SD卡这个小零件。当然,能够摆脱使用SD卡转而使用spiflash存储芯片的一个更重要的原因,是笔者调通了Thonny IDE同MicroPython联动,可以通过REPL向MicroPython的文件系统里存Python文件,否则不得不每次把SD卡拔下来通过SD卡读卡器接到PC上,存好Python脚本文件后再插回电路板。
figure-smartcar-mm32f5-board-protrait
图x ICAR-F5270开发板即周边配套电路板
参考文献:
软件
搭建MicroPython编译环境
基于Windows操作系统搭建MicroPython开发环境:
- 安装
Git
,从线上的代码仓库中获取MicroPython项目的源码。 - 安装
msys2
,GNU工具集的运行环境,在Windows操作系统上模拟MicroPython原生的Linux编译环境。 - 在
msys2
中安装make
,使用Makefile
管理MicroPython工程。 - 在
msys2
中安装Python
,运行编译MicroPython过程中自动提取QSTR的脚本。 - 在
msys2
中安装gcc
,在MicroPython项目中编译生成运行在PC平台的mpy-cross
工具,进而可将部分Python脚本文件编译成微控制器平台上运行MicroPython可以执行的字节码,最终可打包进入将要下载到微控制器中的MicroPython固件中去。 - 安装
arm-eabi-none-gcc
并导入msys2
,用于编译MicroPython项目中的C源码并生成MicroPython固件。 - 安装
Keil MDK
和MM32F5微控制器的Keil设备支持包,用于将编译创建的MicroPython固件下载到MM32F5微控制器中。 - 安装
Tera Term
,一个常用的开源串口终端软件,用于同运行MicroPython固件的微控制器开发板进行交互,输入Python脚本并查看运行结果。
参考文献:
获取MicroPython源码
获取在MM32F5微控制器上适配MicroPython的源码工程:
其中,在micropython-su/micropython-1.16/ports/mm32f5-lfs-spiflash
目录下,包含了基于MM32F5微控制器的使用spiflash挂载LFS文件系统的适配工程。如图x所示。
figure-mm32f5-lfs-spiflash-project-in-git-repo
图x MicroPython项目中的mm32f5-lfs-spiflash工程
编译MicroPython源码生成固件
下载MicroPython的代码仓库后,在msys2环境中,切换当前目录到micropython-su/micropython-1.16/mpy-cross
目录下,执行make
命令,编译得到PC主机平台上运行的MicroPython交叉编译器,mpy-cross
。
Andrew@Andrew-PC MSYS /d/gitrepos/micropython-su/micropython-1.16/mpy-cross
# make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
GEN build/genhdr/mpversion.h
CC main.c
LINK mpy-cross
text data bss dec hex filename
306417 3784 416 310617 4bd59 mpy-cross
然后再切换到micropython-su/micropython-1.16/ports/mm32f5-lfs-spiflash
目录下,运行make BOARD=icar-f5270
命令,编译创建基于MM32F5微控制器的ICAR-F5270开发板适用的MicroPython固件。
Andrew@Andrew-PC MSYS /d/gitrepos/micropython-su/micropython-1.16/ports/mm32f5-lfs-spiflash
# make BOARD=icar-f5270
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
mkdir -p build-icar-f5270/genhdr
GEN build-icar-f5270/genhdr/mpversion.h
GEN build-icar-f5270/genhdr/moduledefs.h
...
CC ../../lib/libm/wf_lgamma.c
CC ../../lib/libm/wf_tgamma.c
CC ../../lib/libm/ef_sqrt.c
CC ../../drivers/bus/softspi.c
AS ../../lib/utils/gchelper_m3.s
CC ../../lib/mm32mcu/mm32f5270/devices/mm32f5277e/startup_mm32f5277e.S
LINK build-icar-f5270/firmware.elf
text data bss dec hex filename
169492 976 10424 180892 2c29c build-icar-f5270/firmware.elf
下载MicroPython固件到电路板
比较稳妥的做法,借用Keil MDK
,通过DAP-Link
向MM32F5微控制器下载编译好的firmware.hex
文件。
在Keil工程的配置选项对话框的Debug
页面中,指定使用CMSIS-DAP
调试器。在Output
页面中,使用Select Folder for Objects ...
指定将要下载文件的路径位于新创建的build-icar-f5270
目录下。如图x所示。
figure-keil-daplink-download-1
图x 借用Keil下载MicroPython固件到芯片
参考文献:
运行第一个样例工程
启动串口终端软件,识别到DAP-Link虚拟出来的UART串口,配置串口通信波特率115200,无校验、8位数据、1位停止位,连上UART。
复位MM32F5电路板,运行MicroPython固件的程序。此时,用户可以在串口终端软件的界面中看到MicroPython启动运行的提示信息,然后可以试着在串口终端软件的界面中试着输入一些Python语句,运行程序。如图x所示。
figure-micropython-repl-welcome
图x 试用MicroPython的REPL
参考文献:
作者:安德鲁苏
文章来源:安德鲁的设计笔记本
推荐阅读
- 使用MM32L0130和HYS1254的电子秤方案验证
- 利用DMA的触发循环实现对eTMR的PWM周期计数
- 手工打造基于MM32F5微控制器的MicroPython开发板
- 汽车电子系统总线LIN通信协议精要
- 在ARM微控制器上部署MATLAB/Simulink仿真模型
更多MM32F5系列资料请关注灵动MM32 MCU专栏。如想进行MM32相关芯片技术交流,请添加极术小姐姐微信(id:aijishu20)加入微信群。