当前位置: 首页 > article >正文

自己动手给ESP8285 / ESP8266 1MB 编译新版AT 固件

适用于ESP8266 或ESP8285 的1MB 版本,其他容量版本也可以参考,步骤差不多。官网上说可以到github 下载临时编译的固件,但是过去找了就发现,文件都过期了,所以不得不自己编译。而且官方固件的串口引脚都换成了15、13,我的板子上线接在1、3 上,也得自己编译了改引脚。

一、下载esp-at repo 和python 环境

GIT 当然是必须的,还要准备Python 环境,官方说是要3.7 以上的版本。我用的conda-forge,python 3.10,用pip 的话,有些包说不定装不上,比如cryptography,我用pip 装的时候编译出错。我用的包管理器是mamba,可以直接用conda 安装后使用:

conda install mamba

找个地方先把eap-at repo 拉下来:

git clone --recursive https://github.com/espressif/esp-at.git
cd esp-at

然后切换到支持ESP8266 的分支:

git checkout release/v2.2.0.0_esp8266

用conda 创建一个给它用的虚拟环境

conda create -n espat8266
conda activate espat8266

根据里面写好的文件安装python 依赖:

mamba install --file .\requirements.txt

不想用mamba 就把mamba 换成conda。装完以后可以先运行一下它的build 脚本:

python .\build.py

按照提示,选择目标是ESP8266 1MB:

在这里插入图片描述

然后它会自动开始在当前目录下载ESP-IDF ,等它出错退出,然后安装ESP-IDF 的python 依赖:

mamba install --file .\esp-idf\requirements.txt

没出错就算了,大抵是确实要出错的。

二、编译环境

需要安装cmakeninjiaxtensa-lx106-elf-gccmconf-idf,可能还有别的依赖,只是我系统里本来就有,所以它没提示。cmake 和ninjia 自己找来随便怎么装上,然后加入PATH。xtensa-lx106-elf-gcc 的下载地址:

https://dl.espressif.com/dl/xtensa-lx106-elf-gcc8_4_0-esp-2020r3-win32.zip

mconf-idf 到下面的链接里找:

https://github.com/espressif/kconfig-frontends/releases/

也可以参考官方文档,只是里面写的不一定都是你需要的:

https://espressif-docs.readthedocs-hosted.com/projects/esp-idf/en/v3.2.5/get-started-cmake/windows-setup-scratch.html

把需要的工具都加入PATH,准备好以后,再运行一遍build 脚本:

python .\build.py

顺利的话会输出命令行参数提示,不顺利就自己看错误信息排查吧:

module_name ESP8266_1MB
platform_name=ESP8266,module_name=ESP8266_1MB
patches check completed for updates.
Setting IDF_PATH environment variable: e:\esp-at\esp-idf
Checking Python dependencies...
e:\esp-at\esp-idf\tools\check_python_dependencies.py:22: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
  import pkg_resources
Python requirements from e:\esp-at\esp-idf\requirements.txt are satisfied.
Usage: esp-idf\tools\idf.py [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]...

  ESP-IDF build management

Options:
  -C, --project-dir PATH          Project directory.
  -B, --build-dir PATH            Build directory.
  -n, --no-warnings               Disable Cmake warnings.
  -v, --verbose                   Verbose build output.
  --ccache / --no-ccache          Use ccache in build. Disabled by default.
  -G, --generator [Ninja|MinGW Makefiles]
                                  CMake generator.
  -D, --define-cache-entry TEXT   Create a cmake cache entry. This option can be used at most once either globally, or
                                  for one subcommand.
  -b, --baud INTEGER              Baud rate. This option can be used at most once either globally, or for one
                                  subcommand.
  -p, --port TEXT                 Serial port. This option can be used at most once either globally, or for one
                                  subcommand.
  --help                          Show this message and exit.

Commands:
  all                    Aliases: build. Build the project.

... 

对了,或许有人不知道,修改环境变量以后,要重启终端,修改才会同步。当然也可以直接在终端里命令行手动设置好PATH。

三、配置

运行它的配置工具,如果是windows terminal,显示的界面可能会错位,凑合看吧。

python .\build.py menuconfig

在这里插入图片描述

这一步它会先从github 下载一些模块,所以在界面出现之前会卡住一段时间,保证梯子畅通[doge]。默认设置大部分别改,可以在Compiler options 里把编译选项改为-Os,生成的固件尺寸应该会稍微小一点。主要可以改的是Component config -> AT 菜单底下是否启用某一部分AT 指令的设置,默认不勾选HTTP 指令,我给勾上了。

在这里插入图片描述

勾的太多了固件尺寸超过1MB 会编译失败。另外可以看一下Serial flasher config 里的信息,如果之后要使用esp_flash_download_tool 下载固件,没准儿要保证设置和这里是一致的。配置完成后键盘选下面的SAVE 保存配置,然后EXIT 退出。至于串口引脚,要到另一个位置修改:

cd .\components\customized_partitions\raw_data\factory_param

打开这个目录下的factory_param_data.csv,修改对应ESP8266 1MB 版本的uart rx 和uart tx 引脚,把默认的15、13 改为1、3:

在这里插入图片描述

需要15、13 的话就不改了。也可以参考官方文档:如何修改 AT 管脚 。

四、编译

配置完成就可以运行编译命令:

python .\build.py build

出错的回去,对着报错信息看看编译工具整对了没。有一个特殊的出错情况,如果提示找不到bootloader.bin,那可能是它脚本有BUG,忽略,重新编译一次应该就ok 了。

在这里插入图片描述

编译成功的输出是这样的:

在这里插入图片描述

它会自动生成一个合并的固件文件,位置在:

cd .\build\factory

以后重复使用比较方便,flash tool 设置地址在0x0 就好了,不用按分区表设置好几个bin 文件。

五、下载固件和测试

这就没什么好说的了,按照刚才编译成功时输出的提示,可以直接就地用命令行下载:

python .\build.py flash -p COM28

COM28 是连接ESP8266 的端口。ESP8266 这边下拉GPIO0 以后再上电,进入串口下载模式。下载完以后复位,拿串口助手之类的东西输入AT 指令。AT+GMR 的输出是:

AT+GMR
AT version:2.2.2.0-dev(s-b65f53f - ESP8266 - Jul  5 2024 06:59:41)
SDK version:v3.4-84-ge19ff9af-dirty
compile time(c4d6f32a):Oct 29 2024 19:00:47
Bin version:2.2.1(ESP8266_1MB)

可以看到固件是刚刚编译的。还可以看看支持的AT 指令,确认之前配置对了没:

AT+CMD?
+CMD:0,"AT",0,0,0,1
+CMD:1,"ATE0",0,0,0,1
+CMD:2,"ATE1",0,0,0,1
+CMD:3,"AT+RST",0,0,0,1
+CMD:4,"AT+GMR",0,0,0,1
+CMD:5,"AT+CMD",0,1,0,0
+CMD:6,"AT+GSLP",0,0,1,0
+CMD:7,"AT+SYSTIMESTAMP",0,1,1,0
+CMD:8,"AT+SLEEP",0,1,1,0
+CMD:9,"AT+RESTORE",0,0,0,1
+CMD:10,"AT+SYSRAM",0,1,0,0
+CMD:11,"AT+SYSFLASH",0,1,1,0
+CMD:12,"AT+RFPOWER",0,1,1,0
+CMD:13,"AT+SYSMSG",0,1,1,0
+CMD:14,"AT+SYSROLLBACK",0,0,0,1

...

没反应或者输出不对的话,回去慢慢排查吧~

P.S.

HTTP 指令支持HTTPS 请求,但是我一发指令,ESP8266 就会软复位。文档上说,ESP8266 连接HTTPS 需要把AT 配置里的什么什么Size 增加到4096 以上,不然就复位,但是那个值默认就是4096,而且我增加到5120 了还是不行,可能就是配置支撑不住,或者必须要让固件精简很多东西才能留下足够的硬件资源。

顺便,既然都看到这儿了,我就把我编译好的1MB 固件发出来吧,链接: https://pan.baidu.com/s/1nddHBCBBtODcJllBueAieA?pwd=5w4u 提取码: 5w4u 。


http://www.kler.cn/a/371594.html

相关文章:

  • ElementUI el-table 多选以及点击某一行的任意位置就勾选上
  • 关于我的数据结构与算法——初阶第二篇(排序)
  • SpringBoot篇(运维实用篇 - 临时属性)
  • Golang | Leetcode Golang题解之第517题超级洗衣机
  • Tomcat 11 下载/安装 与基本使用
  • 力扣hot100-->递归/回溯
  • 第二代支付系统报文交换标准【大额支付系统分册】(版本1.5.6)
  • 【笔记】复数基础复数相乘的物理意义:旋转+缩放
  • synchronized基本用法、原理?
  • 论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection
  • es实现自动补全
  • k8s_Pod健康检查
  • Mamba应用领域
  • 【C++】踏上C++学习之旅(四):细说“内联函数“的那些事
  • 如何实现PHP的安全最大化
  • ETF申购赎回指南:详解注意事项与低费率券商推荐!
  • 双十一我都入手了啥大件?这几款超值好物分享给你
  • c++习题36-奇数单增序列
  • 【17】 傅立叶分析
  • Java项目实战II基于Spring Boot的小型诊疗预约平台(开发文档+数据库+源码)
  • 【LeetCode热题100】链表
  • 初识算法 · 前缀和(1)
  • 使用TimeShift备份和恢复Ubuntu Linux
  • jeecgbootvue2菜单路由配置静态文件夹(public)下的html
  • 从0到1,AI我来了- (7)AI应用-ComfyUI-III-Flux模型
  • Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)