在Win10的应用商店中,提供了Linux的子系统,这是实际上是一个虚拟机软件,与virtualbox和vmplayer功能类似。下面就介绍在Linux子系统中安装工具链和编译micropython的方法。
先确认一下Windows10系统的版本,如果是LTSB版(Long Time Service Branch 企业长期服务版),就需要更换到企业版。
如果还没有安装过Linux子系统功能,首先需要在控制面板的“程序和功能”中允许适用于Linux的Windows子系统功能,并重新启动计算机。

然后就可以在应用商店中,通过搜索Linux或者ubuntu,找到ubuntu应用。注意现在应用商店里ubuntu有两个版本,分别是16.04和18.04。
这两个版本都是长期服务器版,但是我们需要选择第一个,也就是16.04版本,因为目前gcc-arm编译器还没有支持18.04,使用18.04版本就需要自己手工安装编译器,比较麻烦。

安装好ubuntu 16.04后,运行就会出现下面的控制台样式窗口,它默认是只有控制台(shell)界面,没有图形化界面。我们可以通过 lsb_release -a 命令查看系统版本。

这个新安装的ubuntu可以看成是一个全新的系统,大部分软件都需要自己安装。我们先安装arm-gcc编译器,同时可以更新一下软件仓库的内容。
然后安装git软件:
sudo apt install git还需要安装gcc编译器和make软件:
sudo apt install gcc make到这一步,需要的软件基本安装完成,下面是用 git 同步下载 micropython 源码。虽然可以使用zip方式下载,但是这样不方便和源码同步更新。我们先在用户目录中创建一个projects目录,将micropython下载到projects目录中:
cd
mkdir projects
cd projects
git clone https://github.com/micropython/micropython
因为文件比较多,github在国内访问速度也不快,下载速度与网络有很大关系。如果下载出错,需要重复这个步骤。
成功下载后,进入micropython目录,先下载使用到的其它库文件:
cd micropythongit submodule update --initmicropython引用的外部库也比较多,下载需要一定时间。如果提示超时或者下载失败,需要重复前面过程。
下载源码后,就可以开始编译了,首先是编译mpy-cross,它是一个micropython的辅助工具,在编译过程中会用到。
在micropython源码的根目录中,输入下面命令:
make -C mpy-cross这个程序不大,编译速度也比较快。编译后就可以编译STM32的程序了,下面命令是编译官方的pybv10开发板固件:
make -C ports/stm32
如果是编译其它开发板,就需要在命令行中指定板子的名称,注意BOARD必须大写,等号两边不能有空格:
make -C ports/stm32 BOARD=STM32F7DISC
如果其它开发板,更换板子的名称就可以。如果是自己定义的板子,还需要将开发板的定义文件添加到ports/stm32/board目录下。
以后如果micropython代码更新了,我们就可以通过git同步更新,然后再次编译。
git pull编译前最好先清除以前的编译内容,这样可以避免因为更新造成的编译错误
make -C ports/stm32 cleanmake -C ports/stm32
上面编译出的固件是默认方式,不带有双精度浮点,也不支持线程功能。如果希望添加线程功能,需要打开板子的配置文件mpconfigboard.h,然后在文件中添加下面两行:
#define MICROPY_PY_THREAD (1)#define MICROPY_PY_THREAD_GIL (1)然后先清除以前的临时文件,再重新编译。
如果需要双精度浮点功能,在编译时命令行中,添加 MICROPY_FLOAT_IMPL=double。
编译速度与计算机的配置有较大关系,配置越高,CPU性能越好,速度越快。此外如果计算机使用了普通硬盘,第一次编译也会较慢,需要较多的时间加载程序,使用SSD硬盘时,第一次编译速度明显快很多。在一个Windows10平板上(cpu的N3450,),编译1.9.4版本的固件,使用了约260秒,而相同情况下使用虚拟机编译约160秒,看起来Linux子系统的性能还有很大改进的空间。
编译后,产生的固件在 ports/stm32/build-xxxxx 目录下(xxxxx是板子的名称),编译会同时产生elf、dfu、hex三种格式的文件。dfu适合通过USB方式升级,elf和hex可以使用jlink、stlink通过SWD下载(会丢失用户磁盘内容)。
编译好固件怎样复制到windows主机呢?在Linux子系统中,默认已经将windows的各分区挂载好了,我们可以在 /mnt 目录下看到。将固件复制到进去就可以了。如果不习惯用命令行方式操作,可以安装一个midinight commander软件,它类似早期的norton commander,可以方便的管理文件。
sudo apt install mc

使用Linux子系统,好处在于安装和使用简单,安装后可以直接运行,没有复杂的配置,文件体积比使用虚拟机要小,占用系统资源也较少。Linux系统作为windows的一个程序,比传统用虚拟机方式更加容易使用。缺点是不能选择用户数据存放的目录,所有文件都会保存到系统盘,需要在系统盘留出足够的空间,此外性能比传统虚拟机低。
以上图文内容均转载自订阅号:电子工程世界(微信搜索 eeworldbbs 关注)
欢迎微博@EEWORLD
如果您也写过此类原创干货欢迎将您的原创发至:bbs_service@eeworld.com.cn,一经入选,我们将帮你登上头条!
聚焦行业关注热点, 了解科技最新前沿
敬请关注EEWorld电子头条
手机访问:http://m.eeworld.com.cn/mp/wap
电脑访问:http://m.eeworld.com.cn/mp
与更多行业内网友进行交流请登陆EEWorld论坛。
相关资讯
最新热门应用
非小号交易平台官网安卓版
其它软件292.97MB
下载
币交易所地址
其它软件274.98M
下载
iotx交易所app
其它软件14.54 MB
下载
zt交易所安卓最新版
其它软件273.2 MB
下载
币拓交易所bittok
其它软件288.1 MB
下载
u币交易所平台app
其它软件292.97MB
下载
热币全球交易所app官网版
其它软件287.27 MB
下载
多比交易平台app
其它软件28.28MB
下载
币赢交易所app官网安卓版
其它软件14.78MB
下载
toncoin币交易所安卓版
其它软件48MB
下载