当前位置:首页 > 文章中心 > 正文内容

如何制作 NodeMCU ESP32 自定义固件

dgx6663周前 (05-16)文章中心11

最近尝试在 Mac 下制作 nodemcu ESP32 的自定义固件。

本文就来介绍 nodemcu ESP32 自定义固件的编译、烧写、测试的全部过程

准备固件源码包

从 nodemcu-firmware 官方仓库 下载最新代码,切换到 dev-esp32 分支,更新子模块(submodule):

git clone https://github.com/nodemcu/nodemcu-firmware.git
git checkout dev-esp32
git submodule update --recursive

注意,dev-esp32 分支才是适用于 ESP32 的代码,一定要切换过来仓库的子模块非常多,下载比较慢,要耐心等待

准备构建工具

官方目前提供了 3 种构建工具:云构建、docker 构建和 Linux 本地工具链构建。

目前 esp32 的云构建勾选 u8g2 选项会报错,而安装本地工具链又比较麻烦,所以这里选用 docker 构建方式。

这里一次性把所有依赖工具都装好,后面的步骤就可以直接用了:

  1. 下载 docker 镜像:docker pull marcelstoer/nodemcu-build
  2. 下载固件烧写工具:pip install esptool
  3. 下载命令行串口工具:brew install minicom

官方步骤参考
https://hub.docker.com/r/marcelstoer/nodemcu-build/#build-for-esp32

生成构建配置

熟悉 make 的人应该知道,大项目源码构建一般会有 make menuconfigmake 两个阶段。第一个阶段生成配置文件,第二个阶段执行编译。nodemcu 固件构建也是两段式的:先生成配置文件,再执行编译。

确保自己在固件源码包的一级目录内,执行:

docker run --rm -ti -v `pwd`:/opt/nodemcu-firmware marcelstoer/nodemcu-build
configure-esp32

意思是把当前目录的内容挂载到 docker 容器的 /opt/nodemcu-firmware 目录,并进入容器内的交互命令行,执行 configure-esp32 指令。

执行完后,就可以进入到 menu-config 配置界面。按自己的需求勾选选项即可。

如果不知道 docker 参数的作用,参考:Docker 容器使用 | 菜鸟教程

开始构建

保持终端在 docker 容器内,执行:

build-esp32

这时候会进入超长的编译过程,要耐心等待。编译完成后,可以看到终端打印的提示文案:

但是这个烧写提示指示的文件路径是 docker 容器内的,要适当修改后在容器外执行。

烧写固件

回到宿主机环境(退出 docker 容器),确保自己在固件源码包的一级目录内,然后按照 docker 内的烧写提示执行:

esptool.py --chip esp32 --port /dev/cu.usbserial-0001 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size detect 0x1000 build/bootloader/bootloader.bin 0x10000 build/NodeMCU.bin 0x8000 build/partitions.bin

一共要写入 3 段二进制文件:

  1. build/bootloader/bootloader.bin:启动引导程序镜像
  2. build/NodeMCU.bin:系统镜像
  3. build/partitions.bin:分区镜像

注意区别仅在于 bin 文件路径,例如
/opt/nodemcu-firmware/build/bootloader/bootloader.bin 变为
build/bootloader/bootloader.bin

Mac 下,usb2serial 驱动模拟的串口设备路径一般是 /dev/cu.*,ls 一下很容易找到

烧写成功后可以看到提示:

开机测试

esptool 脚本执行烧录结束后,会自动重启 nodemcu。现在来验证下刚刚的固件能否正常运行。

这里用 minicom 打开串口:

minicom -D /dev/cu.usbserial-0001

如果能看到 nodemcu 回传的系统信息以及 lua 交互命令行,则表示固件制作成功了:

采坑点

ImportError: No module named setuptools

docker 内执行的时候有可能出现 ImportError: No module named setuptools 错误:

解决:Bullding for ESP32 fails: setuptools missing · Issue #86 · marcelstoer/docker-nodemcu-build

扫描二维码推送至手机访问。

版权声明:本文由第六芝士网发布,如需转载请注明出处。

本文链接:http://www.dgx666.com/post/1663.html

分享给朋友:

“如何制作 NodeMCU ESP32 自定义固件” 的相关文章

“超鸡血”驱动一定要试试!AMD“肾上腺素版”年度显卡驱动推出

前不久,小狮子曾经和大家分享了AMD年度重磅驱动即将推出的消息,后台各种询问下载链接、更新时间的消息,让这提前“报喜”的小狮子颇有尴尬,不过现在好了,终于定下来了,而且这次更新不仅仅是玩家关注,AMD方面也相当重视!酝酿三年的超鸡血驱动AMD的显卡驱动这几年是越发成熟,无论性能、稳定性、兼容性还是发...

安卓手机QQ5.9.1发布下载:修复部分机型兼容问题

IT之家讯 9月24日消息,安卓版QQ5.9迎来小幅升级版本,本次更新修复了部分机型系统兼容性问题。手机QQ5.9对群通话管理进行了改进,做到有序发言,掌控全场;另外群文件搜索支持模糊查找,以快速搜索目标。安卓手机QQ5.9.1发布日志:o 群通话管理,有序发言,掌握全场; o 群文件搜索:模糊查找...

《计算机辅助设计AutoCAD2004教案》2014版

《计算机辅助设计AutoCAD2004教案》2014版《计算机辅助设计AutoCAD2004简明教案》那荣革2014年3月5日计算机教研室第一讲 软件介绍课 题:软件介绍课堂类型:讲 授教学目的:1、软件介绍2、基本功能3、运行环境教学要求:1、软件常识2、软件安装教学重点:1、软件介绍2、软件运行...

高版本CAD没有经典模式怎么办?6步就能把CAD界面设置回经典模式

在设计行业工作时间比较长的同志,他们都用过比较老版本的CAD软件,老版本的CAD软件的经典工作界面,很多老设计师都非常熟悉。但随着时代更替,CAD软件的工作界面发生了很大变化。从2CAD010版开始,一直到现在CAD都是用新界面。CAD2010到CAD2014都保留了经典模式,但CAD2015版本开...

经典归来!《魔兽争霸3》官方对战平台正式上线

还有多少人在坚守着《魔兽争霸3》?如果你是其中的一员,不知道这个新消息会不会让你感动:网易建立《魔兽争霸3》官方对战平台,经典回归!新平台被直接命名为“魔兽争霸官方对战平台”。据了解,这是大陆地区暴雪唯一官方授权的对战平台。除了普通的1v1或组队对战外,它还支持Dota以及我们最爱的RPG地图。官方...

cad版本怎么转换成2007?三步就能完成!

新版本的CAD软件可能无法在旧版本的CAD软件中打开,因此,将CAD文件降低版本可以确保文件能够在旧版本的CAD软件中打开和编辑。为了转换版本,可能需要借助一些工具来进行CAD版本转换操作。下面小编就为您分享三种不错的软件,快来看看吧!一、彩虹办公中心彩虹办公中心是一个功能强大的办公自动化工具,它可...