micropython编译固件

目标:把我们的micropython项目编译到esp8266里

esp8266的micropython编译要在linux下进行,如果是用windows的读者,可以下载一个虚拟机,比如说vmware就是一个比较方便的选择,然后在ubuntu官网下载ubuntu的镜像,最好可以用桌面版,有图形化界面,用起来方便,作者这里用的是ubuntu-20.04.2-desktop-amd64.iso。

然后打开虚拟机,按照官方的文档:https://github.com/micropython/micropython/blob/master/ports/esp8266/README.md,我们先配置esp的编译链:

1、apt换源:
    https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ 这里用的是清华的源,亲测可用

    然后再sudo apt-get update更新一下就可以了

2、下载依赖库:
    sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf  flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python sed git unzip bash help2man wget bzip2

官方的文档中还要下载python-serial,但是因为各种各样奇怪的问题,这样下载会出错,我们也有办法解决,详情看第三步

如果ubuntu版本大于14.04,要先sudo apt-get install libtool-bin,才能下载

3、搞定python-serial
    curl https://bootstrap.pypa.io/2.7/get-pip.py --output get-pip.py 获取get-pip.py
    sudo python2 get-pip.py 为python2安装pip
    pip install pyserial 再用pip下载pyserial

4、克隆esp编译链
    在桌面打开命令行
    输入git clone --recursive https://github.com/pfalcon/esp-open-sdk.git下载esp-open-sdk,也就是esp的编译链

    这个时候我们在esp-open-sdk目录里要make一下,但是因为esp-open-sdk有一些问题,导致出现了bash版本要大于3.1的提示,这个时候我们可以修改esp-open-sdk/crosstool-NG/config.ac文件里的193行,version后面改成([0-9\.]+)'),也就相当于修改了bash的版本限制,保存一下

    之后我们再make,就不会出现这样的问题啦

5、解决tarballs文件夹里的源码包
   make了之后,会提示tarballs有问题,这是因为tarballs里面没有源码包
    下载:https://pan.baidu.com/s/1WdxWTKJ39p-AnKyCYc_EhQ 提取码:2ol2 

    然后进入ubuntu,在esp-open-sdk/crosstool-NG/.bulid/tarballs里面,把里面的文件全部删了,再把百度网盘下载的压缩包里面文件复制进去,再在esp-open-sdk里make一下就不会报错了

    提醒:
        1、ubuntu会自动隐藏"."开头的文件,所以在crosstool-NG里面可能会找不到.bulid目录,这个时候ctrl+h,就能显示隐藏文件夹了,如果还是找不到的话,就再在esp-open-sdk文件夹里make一下,因为tarballs文件夹要make了才会出来

        2、make后面加上-jx参数可以多核编译,x代表的是你编译是要使用的核心数量,比如说我的电脑是4核心的,你就可以输入make -j4,表示用4个cpu核心来编译,能大大提高编译速度

6、搞定编译链
    进入esp-open-sdk目录,make一下,等待编译完成,如果输出Espressif ESP8266 SDK is installed, its libraries and headers are merged with the toolchain即为编译成功

    然后配置环境变量,运行make之后输出的倒数第二句话,exports开头的。

然后编译环境配置完毕,现在我们就可以开始下载我们的主角:micropython源码

在桌面运行:git clone --recursive https://github.com/micropython/micropython.git(必须用git clone的方式,不然会出错)
 
完成最终目标:编译
然后进入micropython文件夹,按照官方手册,运行:
(make之前最好先make clean一下,不然怕出错)
make -C ports/esp8266 submodules
make -C mpy-cross
cd ports/esp8266
make
没有看到error就是编译成功了
 
那么这时候我们可以在micropython/ports/esp8266/build-GENERIC里面找到我们想要的固件:firmware-combined.bin,如果安装了VMware Tools,我们可以直接把它拖到windows桌面,直接烧录进esp8266,就可以在里面写micropython程序啦


其他:
如果要把自己的python模块添加进固件里,我们可以把这个模块放入micropython/ports/esp8266/modules,这里要注意,里面的文件不要删,直接添加进去就行


如果我们要保护自己的源码,我们可以把自己的项目文件全部添加进micropython/ports/esp8266/modules里,然后在同一个目录里面的_boot.py文件


最后面加上一行:
import [你的项目主程序(不带后缀名)]
再make一下,然后你的代码就看不到了,开机会自动启动你的项目主程序


大家可以试着把源码修改下,再编译
 
esp32也是类似的方法,不过编译链和编译方式不一样,可以自己看官方文档:https://github.com/micropython/micropython/blob/master/ports/esp32/README.md


注意:一定不要用wsl,本人亲测,会有bug,一定要用正统的ubuntu

还没有时间配图,下次一定加上

嗯,下次一定

本博客所有文章如无特别注明均为原创。作者:zbr621复制或转载请以超链接形式注明转自 千世博客
原文地址《micropython编译固件
分享到:更多

相关推荐

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交

网友评论(0)