本文档主要介绍,在python环境下,如何开发嵌入式应用程序,以STM32H43板卡为例介绍. 从系统环境搭建,到编译,到用python实现硬件控制。可做为入门教程。python
2. 准备工做linux
2.1 开发环境搭建git
开发环境能够本身使用虚拟机而后安装ubuntu系统,而Win10系统自带有linux系统,只须要使能就能够使用,比较方便,因此咱们以win10自带的linux子系统为例。ubuntu
在控制面板中启用linux子系统,点击启用或关闭Windows功能。vim
以下图勾选适用于linux的windows子系统,而后重启电脑windows
点击当即从新启动微信
重启后进入windows 10 应用商店,搜索Ubuntu,能够选择18.04或者20.02进行安装网络
下载安装完毕,点击启动编辑器
设置用户名和密码,工具
安装的默认路径是
C:Usershpp19AppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalState ootfshome
路径不能修改,至此linux环境就行了,能够输入一些经常使用命令看看,如ls,cp, rm等命令。
Win10地下安装的linux子系统只支持命令行, 没有本身用虚拟机安装的功能全面,可是对于开发micropython 足够。
2.1.2 虚拟机安装
若是不想用windows10 安装的,想本身搭建也是能够,须要安装虚拟机和下载ubunut的iso镜像文件,进行安装,这种安装网上不少,咱们就不详细列出了,推荐第一种安装。
2.1.3 依赖软件安装
Git安装,git用来获取软件包
使用克隆micropython的软件包,也能够去官网本身下载,拷贝到linux环境的home目录下。
使用git 克隆软件包
若是网络很差,要等一段时间,比较慢。也能够本身到官网下载,我已经下好,你们能够找我索取当前最新板micropython-1.13
http://www.micropython.org/download/
2.1.4 Micropython 目录结构
目录结构比较重要,只有清除目录结构了,你才能移植到不一样的板卡。
详细的目录结构介绍能够参考README.md
主要关注下目前micropython支持的ST开发板,和咱们关系比较大的是H7系列,能够看到目前支持不少的ST芯片。
3. 交叉编译工具链
在终端输入sudo apt install gcc make 命令安装 gcc, make
安装完后能够查看下版本
输入 sudo apt-get install gcc-arm-none-eabi 安装针对ARM的编译器
若是你的交叉工具链安装下载比较慢的话,请按如下步骤修改,由于linux自带的软件源地址都是国外的,国内更新下载安装的话会比较慢,须要将列表更新为国内
将打开的文件内容所有删除掉,替换为如下镜像源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
修改完软件源后,更新软件列表和软件:
sudo apt update
sudo apt upgrade
若是对vim编辑器命令不熟悉,能够本身百度,或者直接在如下目录
C:Usershpp19AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalState ootfsetcapt 下将sources.list文件替换为如下阿里云镜像源,这样速度会很快。
编译mpy-cross, mpy-cross是一个micropython的辅助工具,在编译过程当中会用到,在micropython的源码根目录中输入命令make -C mpy-cross
至此交叉编译工具链就安装完毕,能够编译STM32的程序了。
4. 编译程序
在源码根目录下输入命令make -C ports/stm32 若是不指定BOARD,则默认编译的是ports/stm32下的PYBV10板子,而咱们须要的是能在H743上跑,因此须要裁剪移植一个对H743的板子,查看下能够看到micropython目前支持的STM32板卡有F091, F401,F429,F446,F746,H743等,
复制NUCLEO_H743ZI命名为BODEBOARD
输入命令ls查看下已经有BODEBOARD文件夹和文件,进入查看下
主要有5个文件,而咱们就须要修改这里面的文件
首先修改时钟为25000000,主要是修改stm32h7xx_hal_conf.h文件
修改mpconfigboard.h
将时钟修改成以下配置,能够复制咱们以前IAR工程下的时钟配置。
修改其余管脚,这一节咱们只以修改三个LED和UART1等管脚为例,在文档的下一个版本更新中,会更新全部用到的硬件管脚,仍是在这个文件中继续修改对应的硬件管脚
保存退出
修改pins.csv文件
添加LED和UART1的管脚
保存退出。
由于咱们是参照的NUCLEO_H743ZI,因此mpconfigboard.mk文件不用修改。至此修改完毕,能够编译,在micropython根目录下输入命令 make -C ports/stm32 BOARD=BODEBOARD
等待编译完成。
能够看到生成了.hex和.dfu固件,任选一种下载入H743板子,这样板卡里就有了python解析器,能够识别python语言
编译好的固件怎么样复制到windows主机呢,固然你能够直接去生成的目录底下拷贝,在win10 的linux子系统中默认已经将windows分区挂载好了,咱们能够在/mnt目录下看到
这样咱们就能够直接使用命令cp拷贝到windows了,固然若是你不习惯命令行操做,能够安装midinight commander 软件,能够方便的管理文件,输入命令sudo apt install mc 进行安装,安装完后,输入mc能够直接打开软件。
无论用那种方法,将Hex文件下载到硬件板卡,下载完毕后,给板子从新上电,能够看到出现一个PYBFLASH相似U盘的盘符,打开里面有boot.py
main.py 等四个文件,咱们最后的应用程序直接写在main.py就能够运行了。
5. 测试
咱们先来演示使用putty来控制板子上的LED灯,打开putty,配置波特率和串口号,
导入LED库,就能够控制LED了
能够观察H743的板子三个LED灯依次点亮,经过Putty能够控制硬件就完成了,那么如何让板子上电就三个LED灯点亮,而不须要经过Putty控制呢。?
这就要编辑咱们前面提到的main.py文件,使用任何文本编辑器打开,写入python代码,保存退出,就能够运行了。
经过以上代码就实现了LED的点亮控制,实现用python控制单片机。至此就能够用python编写不少好玩的东西在单片机上跑了。
6. 参考文档
序号 |
文献 |
1 |
www.micropython.org |
本文分享自微信公众号 - 嵌入式程序猿(InterruptISR)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。