admin 管理员组文章数量: 886992
基于Windows系统搭建micropython原生开发环境
苏勇,suyong_yq@126,2021-01
文章目录
- 基于Windows系统搭建micropython原生开发环境
- 引言
- 下载资料
- 安装msys2
- 在msys2中安装make工具
- 在msys2中安装gcc编译器
- 在msys2中安装python3
- 在msys2中安装arm-gcc-none-eabi编译器
- 编译micropython中的minimal工程验证工具链
- 编译mpy-cross编译器
- 编译minimal工程
- 参考资料
引言
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/
- python-3.8: https://www.python/
- gcc-arm-none-eabi: https://developer.arm/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的报错:
加上“V=1”参数具体看一下哪里调用了python3?
竟然是“~/micropython-1.13/tools/mpy-tool.py"。
删除首行显式指定使用python3的语句,换成“#! /usr/Python38/python”。
重新make一下,终于大功告成。
参考资料
windows搭建gcc开发环境(msys2)
https://blog.csdn/qiuzhiqian1990/article/details/56671839
Micropython开发环境–WIN7-64位下搭建
https://blog.csdn/whble/article/details/84983829
MicroPython windows开发环境搭建–MSYS2+MINGW
https://blog.csdn/allenymlu/article/details/103358904
在后续文章中,将讲述基于NXP LPC55S69-EVK开发板,进行一个最小的micropython的移植,并且使用JLink调试器及相关的软件工具OZone进行下载和调试的过程。
本文标签: 环境 系统 Windows MicroPython
版权声明:本文标题:基于Windows系统搭建micropython原生开发环境 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1733928648h1643497.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论