6988|10

1万

帖子

24

TA的资源

版主

楼主
 

在win10的ubuntu子系统下编译micropython [复制链接]

 
 
本帖最后由 dcexpert 于 2018-5-18 11:22 编辑

在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编译器,同时可以更新一下软件仓库的内容。

  1. sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
  2. sudo apt update
  3. sudo apt install gcc-arm-embedded
复制代码


然后安装git软件:

  1. sudo apt install git
复制代码


还需要安装gcc编译器和make软件:

  1. 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目录,先下载使用到的其它库文件:

  1. cd micropython
  2. git submodule update --init
复制代码


micropython引用的外部库也比较多,下载需要一定时间。如果提示超时或者下载失败,需要重复前面过程。

下载源码后,就可以开始编译了,首先是编译mpy-cross,它是一个micropython的辅助工具,在编译过程中会用到。

在micropython源码的根目录中,输入下面命令:

  1. make -C mpy-cross
复制代码


这个程序不大,编译速度也比较快。编译后就可以编译STM32的程序了,下面命令是编译官方的pybv10开发板固件:

  1. make -C ports/stm32
复制代码




如果是编译其它开发板,就需要在命令行中指定板子的名称,注意BOARD必须大写,等号两边不能有空格:

  1. make -C ports/stm32 BOARD=STM32F7DISC
复制代码



如果其它开发板,更换板子的名称就可以。如果是自己定义的板子,还需要将开发板的定义文件添加到ports/stm32/board目录下。

以后如果micropython代码更新了,我们就可以通过git同步更新,然后再次编译。

  1. git pull
复制代码



编译前最好先清除以前的编译内容,这样可以避免因为更新造成的编译错误

  1. make -C ports/stm32 clean
  2. make -C ports/stm32
复制代码



上面编译出的固件是默认方式,不带有双精度浮点,也不支持线程功能。如果希望添加线程功能,需要打开板子的配置文件mpconfigboard.h,然后在文件中添加下面两行:

  1. #define MICROPY_PY_THREAD           (1)
  2. #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的一个程序,比传统用虚拟机方式更加容易使用。缺点是不能选择用户数据存放的目录,所有文件都会保存到系统盘,需要在系统盘留出足够的空间,此外性能比传统虚拟机低。

此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处


最新回复

Windows10 下, Ubuntu 16.04 在编译make -C mpy-cross的时候,依然报错。 还有个前提就是你得有正版的Windows,否则微软那关你是过不了的。 不过有个信息是对的,18.04 目前是没法通过apt-get 装gcc-arm-embedded的,因为期望的文件跟实际得到的文件大小不一样。  详情 回复 发表于 2018-11-28 09:16

赞赏

1

查看全部赞赏

点赞 关注(1)
 
 

回复
举报

113

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
其实说到虚拟机上安装 有一种叫做 Ubuntu JeOS的 很小巧

点评

Ubuntu JeOS 已经没有了吧。  详情 回复 发表于 2018-5-18 19:59
 
 
 

回复

1万

帖子

24

TA的资源

版主

板凳
 
47857872 发表于 2018-5-18 17:50
其实说到虚拟机上安装 有一种叫做 Ubuntu JeOS的 很小巧

Ubuntu JeOS 已经没有了吧。

点评

额 印象哈印象。。。。 现在手上有啥用啥 虚拟机上一般塞个精简的系统会比较给力  详情 回复 发表于 2018-5-19 23:34
 
 
 

回复

129

帖子

1

TA的资源

一粒金砂(中级)

4
 
看起来挺有意思的 之前都是用 VM 虚拟机
这种方式一样好用的吗?

点评

和VM差不多的。  详情 回复 发表于 2018-5-19 11:22
 
 
 

回复

1万

帖子

24

TA的资源

版主

5
 
zy459994202 发表于 2018-5-19 08:49
看起来挺有意思的 之前都是用 VM 虚拟机
这种方式一样好用的吗?

和VM差不多的。
 
 
 

回复

113

帖子

0

TA的资源

一粒金砂(中级)

6
 
dcexpert 发表于 2018-5-18 19:59
Ubuntu JeOS 已经没有了吧。

额 印象哈印象。。。。
现在手上有啥用啥 虚拟机上一般塞个精简的系统会比较给力

点评

对高手都不是问题,对于新手就需要详细的说明了  详情 回复 发表于 2018-5-20 15:05
 
 
 

回复

1万

帖子

24

TA的资源

版主

7
 
47857872 发表于 2018-5-19 23:34
额 印象哈印象。。。。
现在手上有啥用啥 虚拟机上一般塞个精简的系统会比较给力

对高手都不是问题,对于新手就需要详细的说明了
 
 
 

回复

424

帖子

6

TA的资源

一粒金砂(高级)

8
 
弄了半天,好不容易编译玩,找不到固件目录在哪

点评

在ports/stm32目录下  详情 回复 发表于 2018-5-26 21:49
 
 
 

回复

1万

帖子

24

TA的资源

版主

9
 
lehuijie 发表于 2018-5-26 21:48
弄了半天,好不容易编译玩,找不到固件目录在哪

在ports/stm32目录下

 
 
 

回复

16

帖子

0

TA的资源

一粒金砂(中级)

10
 
Windows10 下, Ubuntu 16.04 在编译make -C mpy-cross的时候,依然报错。
还有个前提就是你得有正版的Windows,否则微软那关你是过不了的。
不过有个信息是对的,18.04 目前是没法通过apt-get 装gcc-arm-embedded的,因为期望的文件跟实际得到的文件大小不一样。

点评

gcc-arm-embedded已经支持ubuntu 18了,你需要仔细检查一下安装和编译过程,看看有什么错误提示。开源的软件不会保证在任何情况都不出错,但是肯定是可以使用的。  详情 回复 发表于 2018-11-28 09:28
 
 
 

回复

1万

帖子

24

TA的资源

版主

11
 
red_wu1975 发表于 2018-11-28 09:16
Windows10 下, Ubuntu 16.04 在编译make -C mpy-cross的时候,依然报错。
还有个前提就是你得有正版的Win ...

gcc-arm-embedded已经支持ubuntu 18了,你需要仔细检查一下安装和编译过程,看看有什么错误提示。开源的软件不会保证在任何情况都不出错,但是肯定是可以使用的。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表