原创 NUCLEO_H743ZI移植MicroPython

2019-6-3 20:23 14368 34 10 分类: MCU/ 嵌入式 文集: NUCLEO-H743ZI

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用的其实是armthumb指令,在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版型支持

         MicroPythonstm32库支持是放在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口,可以断开和电脑的连接,但因为板子还需要供电,所以stlinkusb口我就直接拿移动电源给了5V过去。我看网上有些教程说两个usb口都连PC,不知道是不是软硬件环境不一样,我两个都连PC时,MicroPython的虚拟盘一直都不能正常连接,时通时断的。所以我最后就只把usb slave口连到PC上,stlinkusb口用5V供电(充电宝或其他可以提供5V的电源都可以),这样MicroPython的虚拟盘就正常了,连线如下图示:

6-烧录成功后板子的连线

         之后,就可以直接在PC上的pybflash目录下用python编程。

7-pybflash虚拟盘

         pybflash虚拟盘里,有这几个文件:

8-pybflash虚拟盘内容

直接编辑里面的main.py就可以进行Python编程了。如果要开机自动运行main.py里的脚本,可以直接修改boot.py

9-开机自动执行Python脚本

         当然,这个micropython也有虚拟串口的功能(我在用这个时发现驱动用自动联网装装不上,就直接本地安装驱动,驱动位置选择pybflash),然后就可以用securecrtputty进行串口连接,直接在串口里敲代码了。

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

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论4条评论)

登录后参与讨论

curton 2019-6-5 20:51

厉害

yiguangliu_671413458 2019-6-5 11:47

whik: 我的F411RE移植之后,不显示pybflash盘符啊,我是把ST-Link也连接了,但只显示ST-Link的磁盘。
开始时,我把stlink和usb slave都连到PC上,st-link盘一直出现,pybflash盘时通时断。你试下把stlink改为5V供电看看,然后usb slave要连到PC上,这时应该能看到pybflash虚拟盘,如果还不行,把你的PC的usb驱动重新装一下。

whik 2019-6-5 11:18

我的F411RE移植之后,不显示pybflash盘符啊,我是把ST-Link也连接了,但只显示ST-Link的磁盘。

curton 2019-6-4 22:07

都可以用python了  厉害
相关推荐阅读
yiguangliu_671413458 2019-06-20 11:39
SimBlee开发板评测
        前些日子参加论坛的活动,获得了一块SimBlee开发板,做一下简单的开箱评测。      ...
yiguangliu_671413458 2019-05-31 14:28
Ubuntu18.04构建NUCLEO-H743ZI开发环境
我个人使用的笔记本主系统是Ubuntu18.04,这次就借着体验NUCLEO-H743ZI开发板,想在Ubuntu18.04下安装stm32的开发环境(不借助虚拟机装Windows),折腾一下,目前居...
yiguangliu_671413458 2019-05-13 20:26
NUCLEO-H743ZI开箱评测
NUCLEO-H743ZI开箱评测          最近在面包板社区参加ST官方开发板的活动,有幸获得一块NUCLE...
我要评论
4
34
关闭 站长推荐上一条 /2 下一条