> 文档中心 > MicroPython 从入门到入土(一) Micro Python 移植 2021最新

MicroPython 从入门到入土(一) Micro Python 移植 2021最新

MicroPython 从入门到入土(一) Micro Python 环境搭建 基于STM32F407

  • 简单介绍及工具
  • Micro python移植流程
  • 一、下载micro python源码到 Linux 内
  • 二、交叉编译环境的搭建
  • 三、找寻与自己板子相似的配置源码 并修改配置为自己的板子
  • 四、编译固件下载到开发板
  • 五、利用USB模拟串口调试程序和python控制单片机

简单介绍及工具

本文介绍了STM32F407的最小系统板 BLACK F407ZG的Micro Python固件移植的简单移植,该芯片其他开发板可按照本文所提供的方法移植,其他MCU型号的开发板也可参考

移植的要点就是如何选择板子配置源码、以及怎样修改时钟和引脚配置

工具多种多样,不一定全按我的


工具:

1、STMF407核心板:
2、Vmware Linux虚拟机: 固件编译的平台,需要在Linux环境下进行。如centos7、Ubuntu等,本文采用centos7,但是我推荐用debian、kali 或者Ubuntu,因为我发现centos7安装交叉编译器特别麻烦=-=
3、xshell6软件(可选): 终端模拟软件,本文用来在Linux和Windows主机之间传输文件。
4、MDK Keil软件 + DPA仿真调试助手: .hex 固件烧录到开发板的工具,也可以使用别的如:DfuSe_Demo 下载dfu固件。DAP也可替换成STLink、JLink等。
5、putty软件: 通过usb调试板子程序的软件,功能同xhell类似

Micro python移植流程

1、下载micro python源码到 Linux 内
2 、交叉编译环境的搭建
3、找寻与自己板子相似的配置源码 并修改配置为自己的板子
4、编译固件下载到开发板
5、利用USB模拟串口调试程序和python控制单片机

一、下载micro python源码到 Linux 内

打开Linux终端,输入su 注入灵魂:
在这里插入图片描述

在Linux创建存放micro python 源码的文件夹,切换到该目录:

mkdir /home/softwarecd /home/software/

有的帖子是通过 git工具下载源码:
git clone https://github.com/micropython/micropython.git
但是因为 Micro python没有将编译固件所需的依赖托管到github上,为此还要单独下载依赖
cd micropython
git submodule update --init
但下载依赖通常会非常的慢并且失败!!!

因此我们选择直接下载官网的micro python:
一种是通过浏览直接点击以下链接下载到Windows主机上,在传到Linux虚拟机,Linux有浏览器话也可以直接下载到虚拟机中
官网链接: https://micropython.org/resources/source/micropython-1.17.tar.xz
我这里采用wget:

下载源码压缩包:如果没有wget 需要安装wget工具

wget https://micropython.org/resources/source/micropython-1.17.tar.xz --no-check-certificate

ls 查看压缩包:
在这里插入图片描述
解压源码:

xz -d micropython-1.17.tar.xz tar -xvf micropython-1.17.tar 

解压成功后会出现一个 micropython-1.17 目录,进入到这个目录并ls查看文件

其中 README.md 文件有关于源码目录结构的简单介绍。STM32系列的固件源码主要在ports/stm32下:
在这里插入图片描述

二、交叉编译环境的搭建

在此之前我们先为虚拟机创建一份快照,以防止安装和编译的出错导致系统崩溃。当发生意外,我们可以将操作系统恢复到该快照,再从此处重新开始。
操作流程如下:
在这里插入图片描述
然后为快照命名,若想恢复到快照位置,重复上一张图片,点击快照管理器下的快照即可。
在这里插入图片描述
安装gcc,make(一般linux发行版都内置了gcc 和 make。分别用gcc -v ,make -v 可查看是否安装)

yum install gccyum install make

重点之一来了:
安装arm交叉编译器:
如果你不是centos7操作系统,你可以直接终端输入 sudo apt-get install arm-none-eabi-gcc
如果为centos7,则尝试以下两个步骤:其他操作系统在输入上面这个命令可以跳过这两步。


1 下载gcc-arm-none-eabi及相关库:

cd /home/softwareyum -y install glibc.i686yum -y install ncurseswget https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q3-update/+download/gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2 --no-check-certificatetar -xjf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2mv gcc-arm-none-eabi-5_4-2016q3 /usr/local/gcc-arm-none-eabi

2 配置环境变量:
打开环境变量配置文件:vi /etc/profile
最后一行插入export PATH=$PATH:/usr/local/gcc-arm-none-eabi/bin
使能新环境变量:source /etc/profile


查看是否安装成功:**arm-none-eabi-gcc -v** 出现以下内容代表安装成功

在这里插入图片描述
编译mpy-cross

cd /home/software/micropython-1.17/make -C mpy-cross

交叉编译工具链制作完成

三、找寻与自己板子相似的配置源码 并修改配置为自己的板子

首先切换到不同有STM32开发板配置文件的目录下

cd /home/software/micropython-1.17/ports/stm32/boards/

该目录下有STM32系列MCU各种板子的基础配置,如pyboard、VCC_GND_F407ZG

在这里插入图片描述
复制一份和自己板子芯片相同的板子:(我的板子是STM32F407ZG的MCU)

cp VCC_GND_F407ZG/ -r my_boardcd my_board/ls

可以看到以下文件
在这里插入图片描述
我们目前只需要修改 stm32f4xx_hal_conf.h 、 mpconfigboard.h 、pins.csv 其他如果感兴趣的话可
以自己了解。
通过VI修改文件内容:

stm32f4xx_hal_conf.h:
在这里插入图片描述stm32f4xx_hal_conf.h文件修改25000000为你自己开发板的HSE晶振频率,我是8MHz的改为8000000。下面是给RTC的晶振频率LSE。

mpconfigboard.h:
在这里插入图片描述
绿色的是设置程序启动位置(和boot loader工作原理类似,感兴趣自己了解),这里我们把0改成1以设置成下载到Flash,当然如果有W25X40可以设置成0,不过接线还得参考这个板子。

红色的 28行是获取 1MHz时钟信号的宏,如果你的晶振是25MHz 括号里为25不变,如果是8MHz则改为8,我的板子是8MHz ,改为8

引脚配置
添加一个自己外设引脚配置
还是mpconfigboard.h
找到LED所在行:
在这里插入图片描述红色的125行LED2是我自己复制上一行添加的,我自己的板子是PF9是led,下面两行是设置led灯亮灯灭电平。当然还有其他引脚的配置,如串口、SPI等,自己可以修改,或者添加。
保存退出该文件。

pins.csv:
在这里插入图片描述
pins.csv添加你自己的led引脚

补充:如果你的板子和我一样,或者想了解其他板子你可以去看以下方法,否则跳到编译和下载固件
在Github上查找开发板配置:经我测试,这个可兼容大部分STMF407xG 时钟为8Mhz的板子
https://github.com/micropython/micropython/wiki/Boards-Summary
点击以上链接,进入到Micro python的github托管仓库,如果没有加速器可能访问速度有点慢
在这里插入图片描述我们可以看到micro python提供了许多不同的开发板配置,自己可以根据需求下载。我这里选择
BLACK STM32F407ZGT6

点击上图我划红横线的板子,找到Board Definition并点击BLACK_F407ZG:
在这里插入图片描述
点击之后会跳转到另外一个GitHub仓库,存储着板子BLACK_F407ZG配置源码,这里面的文件和之前 /home/software/micropython-1.17/ports/stm32/boards/
的板子是类似的。
我们可以查看README.md 学习如何快速移植该项目。

在这里插入图片描述1查看README文档 2、3 复制仓库地址

回到Linux 切换到boards目录下 git clone 加 你复制的地址,如下:

cd /home/software/micropython-1.17/ports/stm32/boards/git clone https://github.com/mcauser/BLACK_F407ZG.gitcd BLACK_F407ZGls

如果git clone下载太慢 建议在网页上下载到Windows上在转移到Linux,我也不晓得为啥虚拟机有时候git clone这么慢 =__=
在这里插入图片描述
然后就可以直接编译固件

四、编译固件下载到开发板

运行以下命令

cd /home/software/micropython-1.17/ports/stm32/make BOARD=my_board

出现以下内容,代表你编译完成了,如果没成功,可能你之前配置的有问题,建议恢复虚拟机快照再来一次 =-=
在这里插入图片描述

等待编译完成 后会在该文件夹下生成一个 build-my_board目录,进入到这个目录输入以下命令

cd build-my_boardls fir*

看到编译成功的固件.hex .dfu 等,我这里选择将firmware.hex 下载到板子上
在这里插入图片描述
在Windows通过xshell连接Linux,切换到这个目录 sz frimware.hex下载文件 (反正能把固件下载到Windows在烧录到板子就行)

烧录固件
把 frimware.hex下载到Windows后,进行烧录,可以用MDK keil烧录方法参照以下
如何用keil烧录keil到板子上
需要注意的是修改debug调试器,并设置flash download擦除方式为
erase full chip

五、利用USB模拟串口调试程序和python控制单片机

!!!将板子通过USB连接到电脑
!!!不是usb转TTL
!!!而是USB直连引脚DM DP

在这里插入图片描述micro python会把USB模拟成: 虚拟磁盘 + 串口
连接到电脑后,电脑会多出来一个磁盘
在这里插入图片描述到此为止,你已经成功完成了在单片机部署micro python ,你可以修改main.py文件,用python操控单片机。
!!!不过要注意的是!!!
不要直接修改该main.py文件,建议在其他地方新建一个main.py例如pycharm、Notepad编写好后在覆盖这个文件,否则会损坏文件,导致单片机无法正常运行。

最后
利用puty调试单片机

打开Windows设备管理器 端口下面多出一个 usb串行设备 COM4
在这里插入图片描述
打开putty软件
配置如下
在这里插入图片描述2是输入刚刚看到的串口号
点击open出现如下界面
在这里插入图片描述你可以把他当作一个python解释器用来调试串口

调试自定义LED
在这里插入图片描述LED(2)为我们刚刚在源代码配置的自定义引脚 LED(2).on() 就可以点亮PF9引脚的LED灯啦

关闭LED
在这里插入图片描述

over


*有啥问题联系我、或者评论区提问* 歌词网