MicroPython 从入门到入土(一) Micro Python 移植 2021最新
MicroPython 从入门到入土(一) Micro Python 环境搭建 基于STM32F407简单介绍及工具Micro python移植流程一、下载micro python源码到 Linux 内1.引入库一、使用步骤1.引入库2.读入数据总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你
MicroPython 从入门到入土(一) Micro Python 环境搭建 基于STM32F407
简单介绍及工具
本文介绍了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/software
cd /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 gcc
yum install make
重点之一来了:
安装arm交叉编译器:
如果你不是centos7操作系统,你可以直接终端输入 sudo apt-get install arm-none-eabi-gcc
如果为centos7,则尝试以下两个步骤:其他操作系统在输入上面这个命令可以跳过这两步。
1 下载gcc-arm-none-eabi及相关库:
cd /home/software
yum -y install glibc.i686
yum -y install ncurses
wget 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-certificate
tar -xjf gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2
mv 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_board
cd 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.git
cd BLACK_F407ZG
ls
如果git clone下载太慢 建议在网页上下载到Windows上在转移到Linux,我也不晓得为啥虚拟机有时候git clone这么慢 =__=
然后就可以直接编译固件
四、编译固件下载到开发板
运行以下命令
cd /home/software/micropython-1.17/ports/stm32/
make BOARD=my_board
出现以下内容,代表你编译完成了,如果没成功,可能你之前配置的有问题,建议恢复虚拟机快照再来一次 =-=
等待编译完成 后会在该文件夹下生成一个 build-my_board目录,进入到这个目录输入以下命令
cd build-my_board
ls 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
*有啥问题联系我、或者评论区提问*
更多推荐
所有评论(0)