在上一篇博客的基础上添加了OTA空中升级功能。
实现的功能是一个WiFi-DTU模块,ESP32板子通过串口与下位机连接,我目前使用的下位机为51,ESP32第一次启动时,通过微信小程序连接wifi,连接上后ESP32作为tcp_client客户端与服务器进行通信,在服务器与51单片机之间传输数据,考虑到可能会有程序升级的需求,给ESP32添加了一个OTA功能。
参考文档:
乐鑫OTA官方文档:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-reference/system/ota.html
乐鑫ESP-SDK:https://www.espressif.com/zh-hans/support/download/sdks-demos?keys=&field_type_tid%5B%5D=624&field_type_tid%5B%5D=13
关于OTA的例子的路径:example/system/ota/simple_ota_example/main
参考的乐鑫关于OTA升级例子里面的README文件,在后面启动https的时候,关于OpenSll那部分看不懂,升级总出现出错,后面给服务器安装了nginx服务器才成功实现升级。
在乐鑫提供的ota例程里面编译不会出现问题,但是将其中的代码移植到其他工程就会出现问题,我对CMake编译不熟悉,我看网上对这个编译的问题说的比较少,不知道是不是我用法不正确,在其他工程中编译需要修改main文件夹下的CMakeLists.txt文件,让编译器包含组件,在编译时能够找到需要的头文件。
开启OTA功能
由于我编译出来的bin文件超过了1M,所有我在上图中选择了第三项,使用了自定义的分区表,分布表信息如下。
自定义分区表信息
指定更新固件的网址
最里层CMakeLists.txt
然后将simple_ota_example.c里面的ota任务函数拷贝到自己的工程中即可,然后在需要升级的地方启动这个任务就可以了。在浏览器里面输入固件更新的网址,只要能下载固件文件就表示https服务器没问题。
获取需要更新的固件
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)