基于Windows系统搭建micropython原生开发环境

基于Windows系统搭建micropython原生开发环境

苏勇,suyong_yq@126.com,2021-01

引言

micropython的原生开发环境基于Linux系统,但对大多数国内的单片机工程师来说,使用Linux系统并不是那么方便,毕竟大量熟悉的工具软件都是运行在Windows上。编译micropython工程的过程中,需要使用make工具执行一系列定制的自动化操作,包括调用python脚本进行一些“预扫描”,自动生成一些源代码。这些操作是不能直接在大家熟悉的基于Windows系统的IAR或者Keil集成开发环境中直接实现,因此在目前情况下,使用Linux的工具链仍是入门micropython开发的最佳选择。虽然也可以用虚拟机在Windows中内嵌一个Linux,但频繁在两个系统之前切换也是比较闹心的事情,需要处理很多跟开发不太相关的问题。

在本文中,利用msys2工具包,在Windows系统中模拟Linux系统中常用的命令行工具,再配合Windows平台下的python3语言解释器和arm-gcc-none-eabi编译器编译器,搭建可以无缝对接原生平台的micropython开发环境。

下载资料

下载如下软件的Windows版本:

  • msys2: http://www.msys2.org/
  • python-3.8: https://www.python.org/
  • gcc-arm-none-eabi: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

另外,make和gcc工具是通过msys2内部的pacman软件包管理器下载的,通过命令行启动下载过程。

安装msys2

MSYS2 是MSYS的一个升级版,准确的说是集成了pacman和Mingw-w64的Cygwin升级版, 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。与MSYS最大的区别是移植了 Arch Linux的软件包管理系统 pacman(其实是与Cygwin的区别)。下文中我们将会使用pacman命令安装make等工具。

在官网上下载最新的安装包:msys2-x86_64-20201109.exe。启动安装,安装到C盘根目录下即可。
在这里插入图片描述
安装完之后可以试用一下Linux下的文件夹查看命令“ls”,可以正常运行,然后再调用Windows系统下的“explorer .”命令查看当前的工作目录。从图中可以看到,msys2在自己的安装目录下为用户专门创建了用户目录,并包含了该用户环境的配置文件。例如,在后续开发中,我们可能会在“.bashrc”文件中配置一些“alias”条目定制自己专属的缩写命令等等。
在这里插入图片描述
此时只是安装了一个基本的运行环境,尚未安装make、python等工具。
在这里插入图片描述

在msys2中安装make工具

micropython使用makefile组织工程的build过程,需要使用make工具处理makefile中的命令。

首先要修改pacman的软件源。使用过archlinux的应该会知道,使用pacman安装软件的时候,如果没有设置好软件源,下载会非常慢。

需要修改三个文件:

  • \etc\pacman.d\mirrorlist.mingw32
  • \etc\pacman.d\mirrorlist.mingw64
  • \etc\pacman.d\mirrorlist.msys

在这里插入图片描述
国内用户推荐使用清华大学或者中国科技大学的源。但其实,在默认安装后,这三个配置文件就已经包含了它们的源地址了。
在这里插入图片描述
下载工具包就是纯粹的pacman命令了。常用指令有:

pacman -Sy    # 更新软件包数据 
pacman -Syu   # 更新所有 
pacman -Ss xx # 查询软件xx的信息 
pacman -S xx  # 安装软件xx

先运行命令查询完成的make工具的完整名称:

pacman -Ss make

在这里插入图片描述
这里可以看到每个软件大致分为了三大类:mingw32、mingw64和msys。我们使用的是msys2,对应下载msys类就行。

运行命令下载并安装make工具:

pacman -S msys/make

在这里插入图片描述
安装完成。

在msys2中安装gcc编译器

micropython需要在本机上先build出一个mpy-cross的交叉编译器。这个mpy-cross是在本机(Windows系统下)运行的,用于将py脚本文件编译成可以在micropython中集成的模块,此时的micropython可以运行在任何平台,例如ARM MCU上。

同样使用pacman安装gcc,先查看有可用的版本,然后安装。

pacman -Ss gcc

在这里插入图片描述

pacman -S msys/gcc

在这里插入图片描述

在msys2中安装python3

安装python的时候不再使用pacman,毕竟使用pacman下载还是太慢。这里我直接将预先准备好的python的安装文件夹复制到msys2的安装目录中,然后再将python的可执行程序路径加到msys2的PATH中,从而能让msys2识别到python命令。

复制安装的软件包统一存放在“C:/msys64/usr”目录下。
在这里插入图片描述
之后在profile文件中添加对python的引用路径。定位到文件“C:/msys64/etc/profile”,在文件末尾添加内容如下:

export PATH="/usr/Python38:/usr/Python38/Scripts:$PATH"

在这里插入图片描述
最后通过source命令,激活在profile文件中的更新。

source  /ect/profile

通过echo命令查看PATH变量的最新值,其中已经包含了关于python的引用路径。然后再试着运行python命令查看版本号,从而验证python已经可以在msys2中被正常调用。

在这里插入图片描述

在msys2中安装arm-gcc-none-eabi编译器

安装arm-gcc-none-eabi编译器的过程同安装python类似,也是复制安装的操作过程。ARM官网提供压缩包发布的arm-gcc-none-eabi的编译器工具包,下载后解压到“C:/msys64/usr”目录下:
在这里插入图片描述
之后在profile文件中添加对python的引用路径。定位到文件“C:/msys64/etc/profile”,在文件末尾添加内容如下:

export PATH="/usr/gcc-arm-none-eabi-10-2020-q4-major/bin:$PATH"

注意,此处的PATH是在之前包含python路径的基础之上叠加的。
在这里插入图片描述
最后再次通过source命令,激活在profile文件中的更新。

source  /etc/profile

通过echo命令查看PATH变量的最新值,其中已经包含了关于arm-gcc-none-eabi的引用路径。然后再试着运行arm-gcc-none-eabi命令查看版本号,从而验证arm-gcc-none-eabi已经可以在msys2中被正常调用。
在这里插入图片描述
至此,基于Windows系统的micropython原生开发环境已经初步搭建完成。

编译micropython中的minimal工程验证工具链

micropython代码库中的“minimal"工程可以作为在一个新MCU平台上移植和开发micropython的起点。它本身是以STM32F407微控制器为目标平台的,对应ARM Cortex-M4F处理器内核。这里通过build这个工程,验证工具链是否全部正确运行。

从micropython官网上下载源代码压缩包(这里不建议用git clone的方式克隆代码库,因为代码仓库里的很多子模块的链接已经失效,重新下载已经无法获得源码)。将代码解压到msys2的用户目录下“C:\msys64\home\Andrew\micropython-1.13”。

编译mpy-cross编译器

首先编译mpy-cross编译器。这个编译过程用到python和gcc。
在这里插入图片描述
这里报错说找不到python3,看来在micropython的makefile里是显式调用了python3。这里我有两个思路:

  • 方法1: 只要在makefile中找到对应的命令,将“python3”改成“python”即可。这种方法适用于少量改动,或者改一个地方,就能全局生效的情况。
  • 方法2: 在指定位置创建软连接。这种方式可以确保完全不动micropython的原生代码,确保同Linux原生环境完全一致。

在具体试验的过程中,我优先选择了方法2进行尝试,几经折腾发现还是不能顺利build,最后不得以通过方法1解决问题。在micropython源码目录下搜索,找到在makefile文件中指定PYTHON命令的地方,将它们改名为“python”即可。
在这里插入图片描述
实际上,在最近版本的Ubuntu系统中,已经用python3作为默认的python了,所以后续的micropython版本可能也会修掉这里显式调用python3的做法。

重新make一下mpy-corss,又报错:
在这里插入图片描述
这个关于中文编码的问题,我之前在英文版Windows下就没有遇到过,但是在中文版Windows中就重现了。参考网上的解决方法,需要在相关打开文件的语句中增加参数“encoding=‘UTF-8’”
在这里插入图片描述
再次make,终于编通了。
在这里插入图片描述

编译minimal工程

在msys2环境中切换当前目录为“~/micropython-1.13/ports/minimal”,运行make命令开始build:

make CROSS=1

又出现了关于python3的报错:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nx3kOZle-1610982814832)(./image/python3_issue_4.png)]
加上“V=1”参数具体看一下哪里调用了python3?

在这里插入图片描述
竟然是“~/micropython-1.13/tools/mpy-tool.py"。
在这里插入图片描述
删除首行显式指定使用python3的语句,换成“#! /usr/Python38/python”。

重新make一下,终于大功告成。
在这里插入图片描述

参考资料

windows搭建gcc开发环境(msys2)
https://blog.csdn.net/qiuzhiqian1990/article/details/56671839

Micropython开发环境–WIN7-64位下搭建
https://blog.csdn.net/whble/article/details/84983829

MicroPython windows开发环境搭建–MSYS2+MINGW
https://blog.csdn.net/allenymlu/article/details/103358904

在后续文章中,将讲述基于NXP LPC55S69-EVK开发板,进行一个最小的micropython的移植,并且使用JLink调试器及相关的软件工具OZone进行下载和调试的过程。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值