H743的开发板拿到手有一段时间了,本来我是想先在Ubuntu18.04(因为我个人的笔记本目前只有这个系统)下搞个纯Linux的开发环境,然后再做点其他评测的,奈何Linux版本下的stlink驱动编译后居然没H743的支持,暂时搁置,后面抽点时间看看怎么把H743的支持加到stlink源码去,再编译下(对移植过程兴趣的可以到我另一篇博文看看https://mbb.eet-china.com/blog/1779404-406940.html)。
评测时间快到了,我就换了我工作的电脑来完成评测吧。开发环境的搭建可能没从零开始那么详细,各位见谅。评测环境是Win7+Ubuntu12.04-server版。
去年开始受到了AI的蛊惑,体验了一下Python编程的简单易用,今年顺手考过了二级Python。但那都是PC平台上的,一直想体验下Python的嵌入式编程。所以这次的评测,我打算围绕MicroPython进行。第一步先给H743移植MicroPython支持;第二步引入MicroPython网络编程;最后还想在MicroPython的基础上体验下OpenMV(这个要加个子板)。这些评测内容较多,当然不太可能在最近一下子完成,我会持续的在这里发博文,有兴趣的继续关注即可。
好,以上是闲话。下面开始评测的第一部分内容,移植MicroPython支持。
开始前,有必要了解下MicroPython是什么,看下官方描述即可:
图0-MicroPython官方描述
1.下载/安装交叉编译链
由于H743用的其实是arm的thumb指令,在PC平台上需要使用交叉编译链来编译。当然裸机编程最好用的是官方的编译链或sdk啦,此处为了后续用MicroPython开发,就安装arm的交叉编译链。这里我图省事,直接下载编译链安装了。如有需要,也可以从我的网盘下载(链接: https://pan.baidu.com/s/1YvkWy-pYcWgYr5dZ8J7f7A 提取码: hfi8)。
注意安装编译链时,需要把解压的路径整个加入到$PATH变量,否则后面用交叉编译链编译时可能导致编译失败。
例如,把交叉编译链下载到Ubuntu,并解压后,放在~/ toolchain/gcc-arm-none-eabi-5_4-2016q3目录,则在~/.bashrc里加一句
export PATH="$HOME/toolchain/gcc-arm-none-eabi-5_4-2016q3/bin:$PATH"
然后执行source ~/.bashrc,这样就安装完成了。
装完之后确认下版本号:
图1-arm交叉编译链
2.下载安装MicroPython
直接到github下载最新的MicroPython
$ git clone https://github.com/micropython/micropython.git
MicroPython支持的处理器在ports目录下。支持的版型在micropython/ports/stm32/boards里,可以看到,里面已经支持了NUCLEO_H743ZI了:
图2 micropython stm32版型支持
MicroPython的stm32库支持是放在micropython/lib/stm32lib目录下,刚才的git clone后,该目录还是空的,需要继续下载lib(继续在源码下载目录执行以下命令):
$ git init
$ git submodule update --init
下载成功后可以看到这些库的目录。
图3 MicroPython stm32lib
在ports/stm32目录下执行
micropython/ports/stm32$ make BOARD=NUCLEO_H743ZI
编译最后看到下面结果,表示成功:
图4-MicroPython编译成功
编译结果在micropython/ports/stm32/build-NUCLEO_H743ZI目录下的firmware.hex。注意,此处我是在Ubuntu系统下编译,最后通过samba共享到Win10的,这些可以通过Windows+虚拟机安装Ubuntu进行,此处操作步骤不详细描述,还不懂的网上搜一下其他教程。
我把编译出来的hex上传了一份到网盘,想直接验证的朋友可以直接下载使用:链接:https://pan.baidu.com/s/1_lJkgBsOnuXhd-UuXInkYA 提取码:06wl
烧录试试,打开烧录软件stsw(可到官网下载https://www.stmcu.org.cn/document/detail/index/id-214265),加载firmware.hex,下载:
图5-MicroPython编译结果下载
烧录完成后,需要连接usb slave口连线到PC上(MicroPython的虚拟盘),而stlink的那个usb口,可以断开和电脑的连接,但因为板子还需要供电,所以stlink的usb口我就直接拿移动电源给了5V过去。我看网上有些教程说两个usb口都连PC,不知道是不是软硬件环境不一样,我两个都连PC时,MicroPython的虚拟盘一直都不能正常连接,时通时断的。所以我最后就只把usb slave口连到PC上,stlink的usb口用5V供电(充电宝或其他可以提供5V的电源都可以),这样MicroPython的虚拟盘就正常了,连线如下图示:
图6-烧录成功后板子的连线
之后,就可以直接在PC上的pybflash目录下用python编程。
图7-pybflash虚拟盘
在pybflash虚拟盘里,有这几个文件:
图8-pybflash虚拟盘内容
直接编辑里面的main.py就可以进行Python编程了。如果要开机自动运行main.py里的脚本,可以直接修改boot.py:
图9-开机自动执行Python脚本
当然,这个micropython也有虚拟串口的功能(我在用这个时发现驱动用自动联网装装不上,就直接本地安装驱动,驱动位置选择pybflash),然后就可以用securecrt或putty进行串口连接,直接在串口里敲代码了。
图10-MicroPython虚拟串口
图11-putty通过串口连接H743ZI
下面我就用MicroPython的虚拟串口试下控制板上的资源。
3.MicroPython使用体验
启动体验:
图12-上手体验
控制LED亮灭。看头文件定义:micropython/ports/stm32/boards/NUCLEO_H743ZI/mpconfigboard.h
图13-led gpio定义
从头文件可以看到,这些已经被定义了。那我就直接用就可以了,看着MicroPython的官方文件来操作。先点亮LED试试:
图14-点亮LED
图15-板子效果
图16-按键亮灭灯
图17-按键全灭
至此,LED控制正常。
图18-任意控制GPIO输出
万用表测着PC10,观察其电压变化。
总结:
由以上简单实验看出,MicroPython的移植是成功的。MicroPython以无操作系统的方式跑在H743上,其易用性及可移植性可圈可点。MicroPython的底层也是C,上层语法和python 3.4一样。在熟悉python的情况下,使用一块硬件开发板是相当简单的,也可以很快的打造出一个产品原型。相同的Python脚本代码在不同的开发板移植,所需的工作量非常少,甚至只是复制过来(MicroPython相当于对底层进行了封装)。Python是解析语言,不需编译,直接运行即可。
有空再详细解读下MicroPython的源码,接下来还会继续评测,将引入MicroPython的网络编程,最后还会上OpenMV。
作者: yiguangliu_671413458, 来源:面包板社区
链接: https://mbb.eet-china.com/blog/uid-me-1779404.html
版权声明:本文为博主原创,未经本人允许,禁止转载!
curton 2019-6-5 20:51
yiguangliu_671413458 2019-6-5 11:47
whik 2019-6-5 11:18
curton 2019-6-4 22:07