Micropython开发之前篇--基于Ubuntu的Micropython交叉编译环境搭建

时间:2024-04-12 21:21:08

Micropython开发之前篇–基于Ubuntu的Micropython交叉编译环境搭建

Micropython的Dfu文件哪里来的?当初为了把Dfu转成.hex烧进板子煞费苦心,也为了让STM32F407ZG,STM32F407VE用上Micropython熬夜奋战,现在回想,真的是……

写一篇博客,只是告诉大家当初笔者跳过的坑,破转引玉,希望后来者都能比我做的更好

Micropython开发环境有人说可以Windows下搭建,笔者只能呵呵望洋兴叹,笔者只是嵌入式出身,Dos命令用的一塌糊涂,幸运的是,学嵌入式的有点基本功基本上都会一些简单的linux操作:比如 cd……,ls……,sudo……,tar……等等常见指令,于是果断选择了自己熟悉的linux–Ubuntu

在用虚拟机或装Ubuntu双系统前,先透漏第一个坑:Ubuntu版本选择!首先知道编译的STM32肯定要用到
GNU Arm Embedded Toolchain ,直接贴上官网链接:

注意我用红框框圈起来的地方----------敲黑板画重点:

https://launchpad.net/gcc-arm-embedded/
Micropython开发之前篇--基于Ubuntu的Micropython交叉编译环境搭建
Toolchain是编译一定要用到的,Toolchain支持Ubuntu 12.04/14.04/16.04/16.10 32/64操作系统,所以其它Ubuntu版本长得再美,对不起,人家不支持!

对应版本请自己百度下载
然后就是虚拟机或者Ubuntu双系统这里不再赘述。
进入Ubuntu后先安装arm-gcc编译器,同时可以更新一下软件堆栈的内容:Ctrl+Alt+t打开终端,输入:
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppasudo apt updatesudo apt install gcc-arm-embedded
然后安装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 --init
micropython引用的外部库也比力多,下载需要一准时间。若是提醒超时或者下载失败,需要重复前面历程。
下载源码后,就可以最先编译了,首先是编译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硬盘时,第一次编译速率显着快许多。

编 译后,发生的固件在 ports/stm32/build-xxxxx 目录下(xxxxx是板子的名称),编译会同时发生elf、dfu、hex三种花样的文件。dfu适合通过USB方式升级,elf和hex可以使用 jlink、stlink通过SWD下载(会丢失用户磁盘内容)。

编译好固件怎样复制 到windows主机呢?如果是虚拟机并安好文件共享工具,直接“托“到电脑磁盘即可,如果使用双系统,那挺麻烦的,需要重启电脑,最简单的办法是U盘,对你没听错,网上说使用ftp传的都是公司局域网互传,对你的单机没有意义,最简单可行的是用U盘,当然你也可以在Linux下直接把编译好的文件烧录进你的板子。

OK,希望有了我的介绍后能相你有帮助

总之,用Micropython操作STM32 F4及以上的单片机体验绝对秒杀MDK。

不过有句老话说得好:存在既有道理,很多模块开发还是需要用MDK或IAR,

Micropython还有很长的路要走。