ESP8266 Upgrade FOTA升级被折腾那些“小”事

                                                                     ESP8266 Upgrade FOTA升级被折腾那些“小”事

       FOTA升级,顾名思义就是空中升级,再顾名思义就是云端升级!就是通过把目标文件放到网上,然后触发下载并升级程序,最后就执行最新程序。就有小伙伴会问:我直接用线下载不就完事儿了(开发的时候确实可以这样)!但想想如果产品在用户手中了的话,举个例子

若我们产品给卖到非洲去,而我们发现了八阿哥踪影,想要解决掉,那你怎么处理呢:1-搭乘枯燥牌灰机过去烧写更新程序(明显不合理);2-让客户寄过来升级后再寄回去(貌似可行),但如果下一个BUG呢?(貌似还是不能这样折腾,估计要被开除警告了);3-联网升级(非洲应该通网了),这个就比较靠谱。因此,FOTA就应运而生了!

       最近在学习的是乐鑫ESP8266这款WIFI芯片,想着折腾FOTA升级,这样到时候就可以脱离USB线下载了!因此,本着学习的心,到各大视频网站(其实就B站了)去看相关资料,发现很多都是基于arduino开发,但是,不习惯使用这个啊(毕竟每天都是和C和汇编打交道的码农),最终找到了基于ESP8266_RTOS_SDK-2.0.0带系统相关视频,就照着学照着做呗!开始也还都顺风顺水,都愉快地把各类函数SDK给用上,期间好多问题也能在官方文档和视频上找到对应答案(此过程省略1万字____(虽然也不容易,但它不是今天主角啊))……

       因为前面问题都能解决,因此不做赘述,毕竟问题不大嘛。但是有一个问题是一直困扰自己啊!!你能想象到春节前没放假就被它困扰,期间已经放弃好些回,午夜梦回,也依然没能解决好!其实现在看来问题很简单诶:1、ESP8266_RTOS_SDK-2.0.0这个文件里没有upgrade升级所需的文件,因此需要自己官网找(难度2 );2、升级命令发出后能够GET到服务器文件,但是死活就下载不下来(难度8);3、从服务器下载好文件后CRC校验不通过,无法升级(难度4)。

       问题1:官方提供的SDK(ESP8266_RTOS_SDK-2.0.0)中并未有升级所需要的文件,因此升级所需要的函数system_upgrade_start(upgrade_server_info)就没法链接通过,因此就扒官方文档,从官方文件ESP8266_IOT_PLATFORM中提取到upgrade文件

就是这三个家伙!!!也就解决了编译不通过的问题!你以为这就好了嘛!too young too simple ,这才刚刚是开始,重头戏在后边啊!

       问题2:当升级请求发出后,能通过HTTP协议GET到文件,但就死活下载不下来,一直报错误:串口打印错误1-超时了(一直不知道为啥):err1,exceed max time value,max val is 000689D0

                                                                                            《超过最大时间》

问题2—不知道服务器回应啥?

:server response with something else,check it!

《不知服务器应答啥了》

 

                                                                                  《一直回应一直在GET文件》

 

这两个问题困扰了很久很久很久很久,每天晚上下班回来就找问题。什么服务器不行啊!烧录线问题啊!供电问题啊!协议问题啊!能想到和能度娘到的统统都做了,依然毫无门路,就那么个放弃了!!但,但是,嘴上这么说,身体却很实诚啊!时不时还是想要解决这个问题啊。因此又经过零零散散时间实验和思考总结,最后根据打印信息锁定到upgrade.c文件的问题,但又不知道怎么改,又去网上找了好久好久(这个问题实在太少人遇到了,反正也根据差到的零星信息来调整),最后的最后,还是在前天中午午休时间查到了相关文档,简单地修改upgrade文件下的upgrade.c就可以了!!!那个文件说的是官方这个,C升级文件需要稍作修改,否则就无法进行相应下载,同时也解决了第一个超时问题,那叫一个舒心啊:

                                                                            《服务器响应异常处理-修改upgrade.c文件》

                                                                           《超过最长时间处理-修改upgrade.c文件》

 

       问题3:正当晚上回来尝试后,发现确实可以第一次下载user2.bin并能正常启动,但是再重复升级user1.bin的时候,就出现CRC校验失败,参数不同:

                                                                                               《CRC校验失败》

这个问题比较容易,在乐鑫论坛bbs.espressif.com上找到了答案

                                                                   《CRC问题处理—修改tools / gen_appbin.py文件》

 

       最后的最后实现了正常的FOTA功能:

/***************************************************************************

SDK:基于官方提供的ESP8266_RTOS_SDK-2.0.0进行调试

硬件:ESP-12E开发板

平台:官方提供的Oracle VM VirtualBox和Ubuntu以及Windows开发

烧录软件: win下的烧录软件flash_download_tools_v3.6.8

服务器:MiniWebServer.exe搭建

***************************************************************************/

 

参考:

1: https://wenku.baidu.com/view/b34ae42880eb6294dc886c51.html
2:https://bbs.espressif.com/viewtopic.php?f=9&t=10398&p=20969&hilit=upgrade+crc#p20969

3-B站视频

4-各种相关文档

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值