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

8月8号前端日报:web在线进行eps32固件升级

最近几天在开发固件更新的功能,学习了不少相关的知识。
在arduino中对esp32进行固件更新,本质是使用esp官方的esptool,使用一个python exe程序,执行一段脚本,该脚本会将固件文件按照对应的位置来写入到esp芯片中。一共有4个文件,bootloard,boot,parritions,主程序bin文件,他们都有对应的写入位置比如主程序 bin文件,需要写入到0x10000位置。
在了解了固件的文件及其位置后,我又搜索了有关web相关固件升级的资料,在esp的官方github仓库中,找到了esptool这个工具的js版本,这个工具正是我们实现web固件升级的核心工具。

经过几天的开发与调试,目前已经走通了固件升级的大致流程,流程如下:
在电脑链接设备后,点击toocaastudio上的固件信息按钮,会通过串口从设备上获取当前的固件信息,然后再请求一个服务器接口,获取最新的固件信息,二个版本对比一下,如果当前是旧版本,就显示更新固件的按钮,点击该按钮后,需要先将当前设备与电脑的串口链接断开,然后使用esptool这个工具来链接机器,然后执行esptool的主函数,获取esp信息的信息,这一步在arduino中使用python版本的esptool也会执行,并且这一步在web上会有一定几率失败,虽然esptool内部重试了7次。当获取芯片信息失败,就无法进行下一步,也就无法开始固件升级。
在获取esp芯片信息后,从服务器上获取到最新的固件文件,一般最少一个文件,最多4个。获取文件后,还需要对文件的数据格式进行转换,转换成能使用esptool写入芯片的二进制字符串。接下来就是将固件文件真正的写入到芯片,这一过程涉及到压缩,加密,md5校验。更新过程过程可以看到百分比进度。写入成功后,执行esptool的另一个方法,重新开机。然后再重新链接机器。

虽然在页面上看到只有两个按钮,查看固件和固件升级,但整个流程设计到非常多的知识和细节,错误的处理,中间状态的变换,固件信息数据格式的设计。

http://www.lryc.cn/news/418283.html

相关文章:

  • win7安装python3.10
  • 【Liunx】线程与进程的经典面试题总结
  • Python中的 `break` 语句:掌握循环控制的艺术
  • ES2023(ES14)新特性有什么?
  • Linux 中的特殊文件权限:SUID、GUID 和 Sticky
  • 2024 某公司python 面试真题
  • jwt伪造身份组组组合拳艰难通关
  • leetcode日记(64)最小覆盖子串
  • C语言——编译与链接
  • 你一定想看的LVS详细介绍及常见模式(NAT,DR,防火墙标记)实验详解
  • 嵌入式初学-C语言-十七
  • leetcode数论(2280. 表示一个折线图的最少线段数)-几何
  • 如何利用 LNMP 搭建 WordPress 站点
  • “Mutation Observer:让DOM变化尽在掌握
  • oracle(19c)用户管理
  • 浅谈安科瑞智慧用电系统在电气火灾中的应用
  • 【Material-UI】Button 组件中的尺寸设置(Sizes)详解
  • Java学习Day20
  • 代理IP怎么弄,如何在电脑中设置IPXProxy代理IP?
  • MacOS 查看端口命令
  • 【python】序列化与反序列化
  • 补充:关于GRU的详细运作原理以及特殊的优化思路
  • xxl-job 源码梳理(2)-服务端
  • C++ GDl+ 多张图片合并生成GIF动画格式图片
  • 【C++】模拟实现list
  • 怎么使用git merge合并两个分支?
  • ios 5.5寸、ipad13英寸如何截屏
  • spdlog日志库--输出格式(fmt 库集成)
  • Docker简介 MacM1安装Docker
  • 【Linux】yum软件包管理器(使用、生态、yum源切换)