在Win10的应用商店中,提供了Linux的子系统,这是实际上是一个虚拟机软件,与virtualbox和vmplayer功能类似。下边就介绍在Linux子系统中安装工具链和编译micropython的技巧。
先确认一下Windows10系统的版本,若果是LTSB版(LongTimeServiceBranch企业常年服务版),就须要更换到企业版。
若果还没有安装过Linux子系统功能,首先须要在控制面板的“程序和功能”中容许适用于Linux的Windows子系统功能,并重新启动计算机。
之后就可以在应用商店中,通过搜索Linux或则ubuntu,找到ubuntu应用。注意如今应用商店里ubuntu有两个版本,分别是16.04和18.04。
这两个版本都是常年服务器版,并且我们须要选择第一个,也就是16.04版本,由于目前gcc-arm编译器还没有支持18.04,使用18.04版本就须要自己手工安装编译器,比较麻烦。
安装好ubuntu16.04后,运行都会出现下边的控制台款式窗口,它默认是只有控制台(shell)界面,没有图形化界面。我们可以通过lsb_release-a命令查看系统版本。
这个新安装的ubuntu可以看成是一个全新的系统,大部份软件都须要自己安装。我们先安装arm-gcc编译器,同时可以更新一下软件库房的内容。
sudoadd-apt-repositoryppa:team-gcc-arm-embedded/ppasudoaptupdatesudoaptinstallgcc-arm-embedded
之后安装git软件:
sudoaptinstallgit
还须要安装gcc编译器和make软件:
sudoaptinstallgccmake
到这一步,须要的软件基本安装完成,下边是用git同步下载micropython源码。其实可以使用zip形式下载,而且这样不便捷和源码同步更新。我们先在用户目录中创建一个projects目录linux升级python版本升级,将micropython下载到projects目录中:
cd
mkdirprojects
cdprojects
gitclone
由于文件比较多,github在国外访问速率也不快,下载速率与网路有很大关系。假如下载出错,须要重复这个步骤。
成功下载后,步入micropython目录,先下载使用到的其它库文件:
cdmicropythongitsubmoduleupdate--init
micropython引用的外部库也比较多,下载须要一定时间。假如提示超时或则下载失败,须要重复上面过程。
下载源码后,就可以开始编译了,首先是编译mpy-cross,它是一个micropython的辅助工具,在编译过程中会用到。
在micropython源码的根目录中,输入下边命令:
make-Cmpy-cross
这个程序不大,编译速率也比较快。编译后就可以编译STM32的程序了,下边命令是编译官方的pybv10开发板固件:
make-Cports/stm32
假如是编译其它开发板,就须要在命令行手指定板子的名称,注意BOARD必须小写,等号两侧不能有空格:
make-Cports/stm32BOARD=STM32F7DISC
假如其它开发板,更换板子的名称就可以。假如是自己定义的板子,还须要将开发板的定义文件添加到ports/stm32/board目录下。
之后假如micropython代码更新了,我们就可以通过git同步更新,之后再度编译。
gitpull
编译前最好先清乘以前的编译内容,这样可以防止由于更新导致的编译错误
make-Cports/stm32cleanmake-Cports/stm32
里面编译出的固件是默认形式,不带有双精度浮点puppy linux,也不支持线程功能。假如希望添加线程功能,须要打开板子的配置文件mpconfigboard.h,之后在文件中添加下边两行:
#defineMICROPY_PY_THREAD(1)#defineMICROPY_PY_THREAD_GIL(1)
之后先清乘以前的临时文件嵌入式linux,再重新编译。
假如须要双精度浮点功能,在编译时命令行中,添加MICROPY_FLOAT_IMPL=double。
编译速率与计算机的配置有较大关系,配置越高,CPU性能越好,速率越快。据悉假如计算机使用了普通硬碟,第一次编译也会较慢,须要较多的时间加载程序,使用SSD硬碟时,第一次编译速率显著快好多。在一个Windows10平板上(cpu的N3450,),编译1.9.4版本的固件,使用了约260秒,而相怜悯况下使用虚拟机编译约160秒,看上去Linux子系统的性能还有很大改进的空间。
编译后,形成的固件在ports/stm32/build-xxxxx目录下(xxxxx是板子的名称)linux升级python版本升级,编译会同时形成elf、dfu、hex三种格式的文件。dfu适宜通过USB形式升级,elf和hex可以使用jlink、stlink通过SWD下载(会遗失用户c盘内容)。
编译好固件如何复制到windows主机呢?在Linux子系统中,默认早已将windows的各分区挂载好了,我们可以在/mnt目录下见到。将固件复制到进去就可以了。假如不习惯用命令行形式操作,可以安装一个midinightcommander软件,它类似初期的nortoncommander,可以便捷的管理文件。
sudoaptinstallmc
使用Linux子系统,用处在于安装和使用简单,安装后可以直接运行,没有复杂的配置,文件容积比使用虚拟机要小,占用系统资源也较少。Linux系统作为windows的一个程序,比传统用虚拟机形式愈发容易使用。缺点是不能选择用户数据储存的目录,所有文件就会保存到系统盘,须要在系统盘留出足够的空间,再者性能比传统虚拟机低。