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的另一个方法,重新开机。然后再重新链接机器。
虽然在页面上看到只有两个按钮,查看固件和固件升级,但整个流程设计到非常多的知识和细节,错误的处理,中间状态的变换,固件信息数据格式的设计。
相关文章:
8月8号前端日报:web在线进行eps32固件升级
最近几天在开发固件更新的功能,学习了不少相关的知识。 在arduino中对esp32进行固件更新,本质是使用esp官方的esptool,使用一个python exe程序,执行一段脚本,该脚本会将固件文件按照对应的位置来写入到esp芯片中。一共…...
win7安装python3.10
到这下载 PythonWin7/3.10.1 at master adang1345/PythonWin7 GitHub...
【Liunx】线程与进程的经典面试题总结
在这个浮躁的时代 只有自律的人才能脱颖而出 -- 《觉醒年代》 线程与进程的面试题总结 1 简述什么是LWP2 简述LWP与pthread_create创建的线程之间的关系3 简述轻量级进程ID与进程ID之间的区别4 请简述什么是线程互斥,为什么需要互斥5 简述你了解的进程间通信方式…...
Python中的 `break` 语句:掌握循环控制的艺术
Python中的 break 语句:掌握循环控制的艺术 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主简介:985高校的普通本硕…...
ES2023(ES14)新特性有什么?
1. Array.prototype.with with 方法返回一个新数组,替换指定索引处的元素 const arr [a, b, c, d]; const res arr.with(2, f); console.log(res);//[a, b, f, d] console.log(arr);//[a, b, c, d] Array.prototype.toSorted 2. Array.prototype.toSorted toS…...
Linux 中的特殊文件权限:SUID、GUID 和 Sticky
注: 机翻,未校。 Special File Permissions in Linux: SUID, GUID and Sticky Bit You see an s instead of x in the file permissions? Linux has some special file permissions called SUID, GUID and Sticky Bit. Know more about them. 在文件权…...
2024 某公司python 面试真题
Q: Can the type of options or labels of switch-case be floating? 在C语言中,switch-case语句的标签必须是整数类型,不能是浮点型。而在Python中,没有switch-case语句,但是可以使用字典来实现类似的功能,而字典的键…...
jwt伪造身份组组组合拳艰难通关
前言 现在的攻防演练不再像以往那样一个漏洞直捣黄龙,而是需要各种组合拳才能信手沾来,但是有时候使尽浑身解数也不能诚心如意。 前期信息收集 首先是拿到靶标的清单 访问系统的界面,没有什么能利用的功能点 首先进行目录扫描,…...
leetcode日记(64)最小覆盖子串
很复杂的题目,无论是思路还是实践都很难… 思路还是看了答案(?)设定两个指针“框”出一串字符串,初始两个指针都指在s的零位,先移动下指针,直到使框出的字符串中包含t中所有字符串,…...
C语言——编译与链接
目录 引言 翻译环境与运行环境 翻译环境 1.翻译环境的简述 2.编译过程 2.1 预处理(预编译) 2.2 编译 2.2.1 词法分析 2.2.2 语法分析 2.2.3 语义分析 2.3 汇编 3.链接 运行环境 结束语 引言 C语言编译与链接过程是理解程序如何从代码转化…...
你一定想看的LVS详细介绍及常见模式(NAT,DR,防火墙标记)实验详解
目录 一、什么是LVS 二、LVS的核心思想 三、 LVS的优势 四、LVS的调度算法 4.1. LVS的调度算法类型 4.2. LVS静态调度算法 4.3. LVS动态调度算法 4.4.在4.15版本内核以后新增调度算法 五、LVS软件相关信息 六、ipvsadm命令 七、 LVS的NAT模式实验详解 7.1实验环境 7.…...
嵌入式初学-C语言-十七
#接嵌入式初学-C语言-十六# 函数的递归调用 含义: 在一个函数中直接或者间接调用了函数本身,称之为函数的递归调用 // 直接调用a()->a(); // 间接调用a()->b()->a();a()->b()->..->a();递归调用的本质: 本是是一种循环…...
leetcode数论(2280. 表示一个折线图的最少线段数)-几何
前言 经过前期的基础训练以及部分实战练习,粗略掌握了各种题型的解题思路。现阶段开始专项练习。 数论包含最大公约数(>2个数)、最大公约数性质、最小公倍数、区间范围质因素计数(最下间隔)、质因素分解、判断质数、平方根、立方根、互质、同余等等。 描述 给…...
如何利用 LNMP 搭建 WordPress 站点
作者 乐维社区(forum.lwops.cn) 许远 在这个信息爆炸的时代,拥有一个能够迅速传达信息、展示个性、并能够与世界互动的在线平台,已成为企业和个人的基本需求。WordPress,以其无与伦比的易用性和强大的扩展性࿰…...
“Mutation Observer:让DOM变化尽在掌握
Mutation Observer(变动观察者) 定义 Mutation Observer是一种JavaScript API,用于异步监测DOM树的变动,包括元素的添加、删除、属性变化等。当DOM发生变动时,它可以触发回调函数,允许你对变动作出响应。 …...
oracle(19c)用户管理
简介 本文介绍 Oracle 中的用户管理,包含以下内容: 概念介绍 系统用户 解锁 hr 用户 创建用户 用户相关案例 使用 Profile 管理用户口令 Oracle 的认证方式 重置管理员(sys)密码 1. 概念介绍 使用前可以自行安装oracle数据库 oracle19c安装&a…...
浅谈安科瑞智慧用电系统在电气火灾中的应用
摘要:为了对电气火灾事故进行预测和预警,同时为了对电气火灾事故的应急救援提供 支持,将智慧用电监控系统应用于电气火灾中。该系统利用物联网、移动互联网、云平台、大数据技术,实现对电气线路电流、漏电、温度、谐波等参数进行…...
【Material-UI】Button 组件中的尺寸设置(Sizes)详解
文章目录 一、基础尺寸选项1. 小尺寸(Small)2. 中等尺寸(Medium)3. 大尺寸(Large) 二、尺寸的应用场景三、高级用法和最佳实践1. 使用主题调整默认尺寸2. 确保一致性3. 考虑无障碍设计 四、总结 在用户界面…...
Java学习Day20
Vue学习 nodejs的安装与环境配置 1.直接去官网下载合适版本的nodejs( https://nodejs.org/zh-cn/download/prebuilt-installer) 2.解压下载的安装包,将文件路径配置到系统变量的path中,然后确认后退出。可以使用终端来查看安装的nodejs版本。使用winR…...
代理IP怎么弄,如何在电脑中设置IPXProxy代理IP?
随着互联网的不断普及,人们可以利用网络在不同的领域实现更多的可能性。在这个过程中,许多新型网络技术受到人们的关注,代理IP就是其中之一。使用代理IP可以隐藏真实的IP地址,帮助我们突破网络限制、保护隐私、进行网页抓取等一系…...
Qwen3-TTS-VoiceDesign效果展示:会议纪要自动转语音+重点语句强调合成
Qwen3-TTS-VoiceDesign效果展示:会议纪要自动转语音重点语句强调合成 获取更多AI镜像 想探索更多AI镜像和应用场景?访问 CSDN星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域࿰…...
拖拉拽驱动高效开发:活字格低代码平台技术解析与实践
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
C++27 std::atomic_ref与memory_order_relaxed新用法:3个被90%工程师忽略的零开销优化场景
第一章:C27 std::atomic_ref与memory_order_relaxed的演进本质C27 将对原子操作基础设施进行关键性增强,其中 std::atomic_ref 的语义扩展与 memory_order_relaxed 的行为精化共同揭示了现代硬件内存模型与抽象编程模型之间持续收敛的本质。相较于 C20 中…...
终极指南:如何用WeChatExporter完整备份你的微信聊天记录
终极指南:如何用WeChatExporter完整备份你的微信聊天记录 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 微信聊天记录里藏着太多珍贵回忆:家人的…...
PSSE与IEEE数据格式互转实战:解决变压器参数异常的避坑指南
PSSE与IEEE数据格式互转实战:变压器参数异常分析与精准修正 电力系统仿真工程师在日常工作中经常面临不同软件平台间数据迁移的挑战。当您手头的IEEE标准潮流数据需要导入PSSE进行分析时,数据格式转换过程中的参数映射问题可能成为影响仿真精度的隐形杀…...
QML属性系统避坑指南:从alias到list,这8个高级用法让你的组件复用率翻倍
QML属性系统避坑指南:从alias到list,这8个高级用法让你的组件复用率翻倍 在构建企业级UI组件库时,我们常常遇到这样的困境:随着业务复杂度提升,组件间的耦合度越来越高,维护成本呈指数级增长。某金融科技公…...
告别手动录入!用Zotero+Jasminum插件自动抓取知网元数据,高效管理学位论文PDF
告别手动录入!用ZoteroJasminum插件自动抓取知网元数据,高效管理学位论文PDF 每次下载几十篇学位论文后,最头疼的莫过于手动录入文献信息——作者、标题、导师、学校、年份...这些字段一个个复制粘贴,不仅耗时费力,还…...
计算机视觉——疲劳检测、基于DNN的年龄性别预测
一、疲劳检测(基于 dlib 的人脸检测与 68 点关键点定位)1.1摘要疲劳检测是一类通过分析人体行为(如眼睛闭合、头部姿态、打哈欠等)来判断个体是否处于疲劳或注意力不集中的技术。它在驾驶员监控、驾驶安全、课堂学员状态检测、远程…...
Latex写论文必看:如何从谷歌学术获取完整的BibTeX引用信息(含Springer/Elsevier/IEEE案例)
LaTeX论文写作进阶:精准获取BibTeX引用数据的全流程指南 作为科研工作者,我们都经历过这样的场景:深夜赶论文时,发现从谷歌学术导出的BibTeX条目缺少关键字段,特别是那些期刊要求的卷号(number)、页码或DOI信息。这种…...
终极指南:如何为Evil Icons添加专属品牌图标
终极指南:如何为Evil Icons添加专属品牌图标 【免费下载链接】evil-icons Simple and clean SVG icon pack with the code to support Rails, Sprockets, Node.js, Gulp, Grunt and CDN 项目地址: https://gitcode.com/gh_mirrors/ev/evil-icons Evil Icons是…...
