micropython编译esp8266固件

目标:把我们的python项目编译到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

sudo python2 get-pip.py

pip install 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/1H6P5HHHryGl1j47uVklEVg?pwd=4ft0
提取码:4ft0

然后进入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-crosscd ports/esp8266
make

没有看到error就是编译成功了 那么这时候我们可以在micropython/ports/esp8266/build-GENERIC里面找到我们想要的固件:firmware-combined.bin,如果安装了VMware Tools,我们可以直接把它拖到桌面,直接烧录进去,就可以在里面写micropython程序啦

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

如果我们要保护自己的源码,我们可以把自己的项目文件全部添加进micropython/ports/esp8266/modules里,然后在同一个目录里面的_boot.py文件最后面加上一行:
import [你的项目主程序(文件名不带后缀名)]

那么,你的代码就编译进去了,开机会自动启动你的项目主程序

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

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

还没有时间配图,到时候加上

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
MSYS2 是一个在 Windows 上提供 Unix-Like 工具链的环境,可以使用它来编译 ESP8266MicroPython。 以下是在 MSYS2 上编译 ESP8266 MicroPython 的一些基本步骤: 1. 安装 MSYS2。可以从 MSYS2 官网下载安装包,并按照安装向导进行安装。 2. 打开 MSYS2 终端。在 MSYS2 终端中,可以使用类 Unix 的命令行工具进行操作。 3. 安装编译工具链。在 MSYS2 终端中,可以使用 pacman 包管理器安装编译工具链,如下所示: ``` pacman -S mingw-w64-x86_64-toolchain ``` 4. 下载 ESP8266 MicroPython 源代码。可以从 MicroPython 官方网站下载源代码,或者使用 git 命令从 GitHub 上克隆代码库: ``` git clone https://github.com/micropython/micropython.git ``` 5. 配置编译选项。在 ESP8266 MicroPython 源代码目录下,可以使用 make 命令生成 makefile,并配置编译选项: ``` cd micropython/ports/esp8266 make axtls make ``` 在执行 make 命令之前,需要先执行 make axtls 命令,以生成 axTLS 库。 6. 烧录 MicroPython 固件。在编译完成后,会生成 MicroPython 固件文件,可以使用 esptool.py 工具将其烧录到 ESP8266 开发板中: ``` esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20230925-v1.18.bin ``` 其中,/dev/ttyUSB0 是开发板的串口设备,esp8266-20230925-v1.18.bin 是编译生成的固件文件名。 这些是基本步骤,具体操作过程可能会因为不同的操作系统、编译工具链版本等原因而有所不同。建议在操作前先阅读 MicroPython 官方文档,以获得更详细的信息。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值