ESP32 OTA升级之HTTP OTA
ESP32 OTA升级之 HTTP OTA
文章目录
- ESP32 OTA升级之 HTTP OTA
- 1. 前言
- 2. 搭建http本地服务器
- 2. HTTP OTA
- 3. 补充学习
1. 前言
在所有电子设备中,OTA
功能目前都成为了必要之选,所谓 OTA
(空中升级),也就是当设备在客户现场正常运转过程中,亦可通过外部通讯的方式,获取新的固件,将新的固件存放到 flash
内,并在下一次启动或复位后运行。
由于 OTA
操作实际是和 flash
紧密结合的,因此在进行esp32
的 OTA
之前,首先需要对 esp32
的 flash
布局有充足的了解,关于 esp32
的 flash
布局,esp32
内采用分区表这个概念进行描述,关于分区表的详细介绍,大家可以自行阅读编程指南对应文章内的内容,再次不进行过多赘述: ESP32 分区表(点击跳转)。
本文主要描述如何采用http通讯方案获取升级固件完成esp32的ota升级。
本文主要采用官方提供的Example例程,虽然乐鑫官方提供了有关例程,但是对于OTA有关例程实际完整运行起来还是有着诸多复杂配置,本文将一步一步记录如何真正在本地实现ESP32的 HTTP OTA。此外本文主要介绍关于采用 http 通讯方案完成ESP32的OTA升级,如需了解 https 方案,可查看博主另外一篇博客: ESP32 OTA升级之https ota详解 (点击跳转)
2. 搭建http本地服务器
由于我们采用http进行升级,在调试阶段,我们可以采用 python
先建立一个简单的本地 http 服务器以方便我们进行调试,具体操作细节如下:
首先需要在电脑上安装
python
环境(推荐python3),具体操作自行上网学习采用
python
的内置http.server
模块搭建一个简易的http服务器(python2版本对应模块名称为SimpleHTTPServer
)在工程目录下打开
windows power shell
输入
python --version
检查python的版本以及是否可以正常使用
输入
python -m http.server 8080
命令,创建 http 本地服务器(python2 对应命令为python -m SimpleHTTPServer 7890
)-m
表示使用模块;8080
表示http对应的端口port
,此参数可自行修改
- 之后可在浏览器输入以下网址访问http本地服务器:
http://127.0.0.1:8080/
或http://localhost:8080/
进行访问(如果测试失败,有可能是你电脑上其他软件占用了端口所致,可尝试更换端口号测试)
- 通过以上简单操作,一行指令就完成了一个http服务器的搭建,并在电脑端可以进行访问,不过关于访问的域名地址,由于我们的服务器是在电脑上搭建的,所以在电脑上的浏览器可以使用
127.0.0.1
或localhost
进行访问,那其他电脑或设备如何进行访问呢? - 接下来我们介绍如何在局域网内访问我们刚刚建立的http服务器
- 首先需要知道开启服务器的电脑的ip地址,在
power shell
内输入ipconfig.exe
进行查看,其实对应的IPv4
地址也就是http服务器的地址啦
- 因此局域网内的其他机器需要访问我们这台电脑的http服务器内的内容,可将对应的url修改为:
http://(服务器电脑IPv4地址):(服务器端口号)
,我这对应的即http://192.168.1.5:8080
2. HTTP OTA
从
esp-idf
目录下的example
文件夹下拷贝相应示例工程具体路径为:
esp-idf\examples\system\ota\simple_ota_example
在新的目录下,进入
simple_ota_exmaple
文件夹下,单击右键,在当前目录下打开windows power shell
终端在
power shell
内输入get_idf
命令,完成此终端的esp32环境配置
(关于环境搭建请查看ESP32开发环境搭建 ESP-IDF+(PowerShell / Vscode) (windows)(点击跳转))
输入
idf.py build
直接编译示例工程
由于我们这里是直接编译的例程,什么都没有修改,因此正常编译是不会有什么问题的,如果有,请检查环境是否搭建成功,或者上述操作是否存在错误。
ps:编译错误,一般编译信息里面会有提示,可以根据提示查找问题原因!修改工程配置参数,输入
idf.py menuconfig
,打开menuconfig配置项修改 wifi 连接信息
修改升级文件路径, 注意此路径的填写,根据我们在第二章节所述,地址因修改为对应的 http 服务器电脑的地址,此外注意需要找到对应的 bin 文件的路径,工程bin文件一般在工程目录下的
./build
目录下
如果不知道具体的路径,可先使用浏览器访问,找到对应的bin文件,如果工程目录下没有bin文件,请检查工程是否执行过
idf.py build
编译过,新的工程是没有bin文件的!!!
此处路径参数填写,请参考第二章节描述!
退出menuconfig,重新编译工程
idf.py build
烧录下载进行测试
idf.py -p COM4 flash monitor
创作不易,转载请注明出处!
关注、点赞+收藏,可快速查收博主有关分享!
3. 补充学习
强烈推荐:
- 1) ESP32 OTA升级之https ota详解 (点击跳转!!!)
- 2) ESP32 bin文件生成及多个bin文件合并指南 (点击跳转!!!)
- 3) ESP32 分区表(点击跳转!!!)
- 4) ESP32 专栏(点击跳转!!!)
ESP32 OTA升级之HTTP OTA相关推荐
- RTOS设备如何快速实现OTA升级--快速接入OTA平台
目录 一. 创建产品和零件 1.1 登陆平台 1.2 添加产品 1.3 配置产品 1.4 添加升级零件 二. 添加设备 2.1 单个添加 2.2 批量添加 三. 设备注册激活 3.1 发起请求 3.2 ...
- 58 ESP32 OTA升级(双OTA分区无factory APP)
1 引言 产品功能实现后,就要对产品的维护进行考虑.产品出来后,卖了N台出去,如果突然发现自己一行代码写错了,怎么办,肯定不能去现场吧N台设备,免费出差旅游也累啊,所以一般需要有远程升级设备的功能,此 ...
- android ota 升级脚本,Android OTA升級包制作腳本詳解(五,升級腳本updater-script的執行1)...
寫在前面: 首先當我們執行升級腳本updater-script的時候,就表示我們已經進入了升級安裝狀態.那么在我們就從實際的安裝作為入口開始分析.也就是說我們從install.cpp中的install ...
- Android OTA升级(1):编译升级全包
Android原生系统中就已经支持OTA升级.所谓OTA升级就是通过空中接口获取升级包,然后更新系统固件.一般地,升级包无论如何获取,哪怕是直接TCard本地升级,也被称为OTA升级. ...
- AUTOSAR OTA升级
一.OTA技术概念 随着高级辅助驾驶的发展和自动驾驶的引入,汽车变得越来越智能,这些智能汽车被软件控制,装有巨量的软件程序,当出现一个软件程序问题或者更新时,如果 按照传统的解决方式 ,那都将是一项很 ...
- CSR8670学习笔记:OTA升级固件
为了方便大家学习,现与我爱蓝牙网联合推出[QCC300x/CSR867x/QCC30xx/QCC51xx开发板]. 技术交流QQ群号:743434463 开发板会员QQ群号:725398389(凭订单 ...
- MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区
MT6762 Android 8.1 打开custom分区,挂载custom分区,OTA升级custom分区 1.打开custom分区 2.挂载custom分区 3.OTA升级custom分区 1.打 ...
- Android 7.0 OTA升级(高通)
文章目录 1. Full OTA 方式升级介绍 1.1 Full OTA 制作第一步:生成 msm89xx-target_files-eng.XXX.zip 1.2 Full OTA 制作第二步:Mo ...
- esp8266使用Arduino编程实现自动浇水、OTA升级功能
创作前情: 上海疫情已有一段时间,从三月初算起来已过了一个多月,当时用了泡沫箱种了些小香葱,这几天把它搬到了室外阳台,由于浇水不方便,想着做一个自动浇水的设备. 实现目的: 可以远程控制浇水 可以实时 ...
最新文章
- C语言经典例96-计算字符串中子串出现的次数
- MATLAB R2022 最新中英文版 数据处理
- 栈一:用两个栈实现队列
- root用户登录mysql后新建用户提示1045错误
- python3高级 一 迭代器
- java 日期加一天_漫话:如何给女朋友解释为什么一到年底,部分网站就会出现日期混乱的现象?...
- 所以進入到二十一世紀之後
- clientv3 github.com与go.etcd.io冲突 /github.com/coreos/etcd/clientv3/auth.go:166:106: too many errors
- OpenCV threshold 二值化
- steam,epic,origin限免游戏推送,持续更新
- 条件运算符的嵌套_条件运算符
- 借助栈实现单链表的原地逆置
- android 相册png黑底,Android png透明图片转jpg时背景变黑的解决方法
- SPU和SKU都是什么意思
- 三个可替代“迅雷”的下载软件,速度超快!
- Android -- 每日一问:在项目中使用AsyncTask会有什么问题吗?
- yum 下载离线包 及其安装
- Taro2.* 小程序配置分享微信朋友圈
- c语言中错误c2062,C/C++编译器错误消息大全
- mandatory参数的使用
热门文章
- 推荐个非常非常好用的犀利搜索网站(资源搜罗),值得收藏!!
- android viewpager2,viewpager2原理和使用
- IE落幕,微软IE浏览器永久关闭
- 【SpringBoot】42、SpringBoot中自定义Favicon
- 盛大免费那天 史玉柱开始做网游
- GraphQL 渐进学习 06-graphql-采用-mockjs-mock数据
- python对电影进行预测评分_推荐系统—影视评分预测
- 请问C#中 if(fonrdlg .ShowDialog () ==DialogResult .OK )怎么理解
- 阿尔法狗是怎么用机器学习做决策的
- 自监督学习-MoCo-论文笔记