深圳市航顺芯片技术研发有限公司
直播中

木頭瓶子

11年用户 559经验值
擅长:353304
私信 关注
[问答]

ESP-01S如何进行二次开发

OTA的升级原理是什么?
ESP-01和ESP-01S有哪些区别?
ESP-01S如何进行二次开发?支持二次开发吗?仅仅1M的flash支持OTA升级吗?

回帖(1)

汤敏树

2021-8-5 14:45:43
  一、认识 ESP-01 和 ESP-01S 区别
  这里并不是为了带货写文章,太多人在群里问这个问题了,单纯想把这个文章分享出来给大家参考;
  ESP-01 和 ESP-01S 都是安信可官方出品的,这里贴下对其主要的区别:
  ESP-01S 在电路设计上已经把 GPIO0、RST和En 引脚上拉,而 ESP-01 没有;
  ESP-01S 天线区域右下角只有一个指示灯,ESP8266-01天线区域右下角有两个指示灯。
  ESP-01S背面有引脚说明,ESP-01背面有没有引脚说明。
  二、调试接线
  因为其的用途主要是给自有MCU单片机通讯连接单片机,所以很少有人用它二次开发,可能烧录固件会考虑到其的接线,这里不再贴接线方式了,而我目前用的是 ESP-plog 连接器,这里再贴下其介绍链接:ESP-Prog 下载与调试板介绍,不仅仅可以有自动下载功能,还可以对 ESP32 断点调试哦!
  三、搭建环境和编译
  3.1 环境搭建
  找到OTA升级的工程, examples/system/ota/native_ota/1MB_flash/new_to_new_no_old,之后我们面板设置他的下载方式:
  1、配置为 1M flash:
  
  2、SPI模式 配置为 DOUT:
  
  3、波特率改为 230400 ,可以提高下烧录速度!
  
  烧录配置如图所示:
  
  4、配置远程
  
  3.2 编译
  1、 第一次跑3.3分支,请先擦一下模块, make flash,再编译:make ota生成固件!这时候,会生成四个固件:ota.ota.bin、ota.app1.bin、ota.app2.bin 和 ota.bin ;
  其关系为:
  ota.app1.bin != ota.app2.bin != ota.ota.bin
  ota.ota.bin = ota.app1.bin + ota.app2.bin
  2、烧录 make flash 或者 用烧录工具这样烧录
  3.3 开启本地web服务器
  为了方便调试,我们可以用Python开启一个本地服务器,端口号为 8070 :
  python -m SimpleHTTPServer 8070 如下截图所示,可看到开启成功,并且得到局域网的地址 :192.168.31.48 ,这个是局域网内访问的本机设备,您在开发时候,你的电脑主机也会有所不同,请务必注意!
  
  我们需要把每次编译生成的 ota.ota.bin 固件放在web服务器即可,这里我编译了2个版本的固件(ota_v1.bin和ota_v2.bin),并在打印上每个固件的版本,以区别是否远程升级成功。
  我们测试下web服务器是否开启成功?我们用手机加入本地局域网,之后用手机浏览器打开上述的IP地址和端口号:192.168.31.48:8070, 发现可以访问不报错即可!
  这时候,我们开始在源码修改下 web 服务器的配置,然后再 make ota 生成2个固件,放在web服务器里面,就如下图所示了:
  
  放置2个固件之后,再用手机浏览器访问。
  3.4 现象
  首次上电,打印版本号为 version - 1.0 ,之后连接路由器,请求文件升级!来回升级哈哈!
  
  
  
  
  四、FAQ 笔记
  1、这个OTA的升级原理是什么?
  命令“ make ota”将生成3个固件:“ xxx(项目名称).app1.bin”,“ xxx(项目名称).app2.bin”和“ xxx(项目名称).ota.bin”。您仅应将“ xxx(项目名称).ota.bin”上传到您的OTA服务器,并让应用下载它并且运行。
  xxx.app1.bin用于下载到OTA_0分区,xxx.app2.bin用于下载到OTA_1分区。如果ESP8266的闪存大于“ 1 MB”,或者您选择了“复制OTA”功能,则xxx.app1.bin = xxx.app2.bin = xxx.ota.bin 。
  否则,如果主板的闪存大小为1 MB,而您未选择“复制OTA”功能,则 xxx.app1.bin != xxx.app2.bin!= xxx.ota.bin,xxx.ota.bin = xxx.app1.bin + xxx.app2.bin。
  因此,ESP8266的falsh大小配置对于OTA升级非常重要。
  基于以上理论,我们可以看到对于ESP8266 + 2MB flash(或更大),app1和app2相同,可以直接下载而不用区别。但是对于ESP8285(ESP8266 + 1MB闪存),ota0(app1)和ota1(app2)是不同的,您需要在FOTA期间区分应该下载哪一个,并将其下载到哪个位置。
  现在,示例代码中的方法是将app1和app2合成为“ xxxx(项目名称).ota.bin”。FOTA时,根据下载位置,仅将目标应用程序(app1或app2)写入闪存;而另一部分将被丢弃。
  2、连接web服务器失败?
  检查您的PC是否可以通过IP ping ESP8266,并确保menuconfig中的IP,AP和其他配置设置正确。如果您的web服务器是在外网,请检查是否允许ip地址访问?检查PC上是否有阻止进入连接的防火墙软件。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分