mqtt连接失败_MQTT之ESP8266 OTA固件升级(FOTA爱之初体验)

问:为何OTA升级?

答:非常方便更新模块固件,实现最方便的更新固件的方法。

开始----》

1、环境:安信可IDE,模块8266

2、实现功能:OTA在线一键升级。

结果展示:(不知道为何图片上传不了一直提示失败??尾部看连接吧)

bd21a3abdf2e966638c16e14d45e5086.png
b49162ec54fece7c9e96c1ff8636e31f.png
a8c1943ee5daaa11f0f034250ad07d63.png

需要说明:写入flash之前必须先擦除指定扇区。准备中。。。

至此,模块收到升级指令--准备下载--擦除扇区--写入扇区--重启模块

注意关于flash分配问题,

27a3c58eb1d3c530fe76860d6fe25d96.png

服务端下载(我是IIS,搭建比较简单)不会搭建可以留言

488919b673d81135d7c8346e2f77fe3a.png
526393620a4dac901e625761207a703b.png

在您已经备案的域名下直接新建个文件夹比如(updatebin放入user1.xxx.bin,user2.xxx.bin文 件和说明文件xxx.txt)

user1.4096.new.4.bin 这2个文件可以一样,也可以不一样;文件名不要一样。

user2.4096.new.4.bin 不同模块,或许名称不一样,当然可以重命名。一般默认。我的是4MBflash=32Mbit

比如您的模块运行的(boot引导的是user1,下载就下载user2,否则下载user1)

主要代码及总结

1、烧录事项(生成user1.xxx.bin时)找到项目根目录的makefile修改如下

软件:

主要代码参考:(2个文件 fotaxxx.c,fotaxxx.h)

1、升级调用时机(很多实例都是联网成功后即升级,我这是MQTT下发升级指令),我可以在内网任意一台电脑或手机对某个模块下发指令均可自动升级(当然需要知道一些列参数,有token身份验证等)

2、初始化---设置链接和断开回调函数-联网成功-设置发送接收回调-开始升级-升级过程回调-成功重启模块。

LOCAL void ICACHE_FLASH_ATTR

fota_upgrade_begin(struct espconn *pespconn, struct upgrade_server_info *server)

{

uint8 user_bin[30] = {0};//升级的文件名称

server->pespconn = pespconn;

os_memcpy(server->ip, pespconn->proto.tcp->remote_ip, 4);//ip(如果是域名此前DNS解析后传过来)

server->port = OTA_SERVER_PORT;//升级的端口(如果http即80)其他端口请设置(配置文件user_config.h)port

//可加个版本号的判断是否需要升级

server->check_cb = fota_upgrade_rsp;//升级过程回调*****

server->check_times = 120000;//120秒(此值视网络环境好坏定,建议一般不少于20秒)

if (server->url == NULL) {

server->url = (uint8 *)os_zalloc(1024);//分配http连接头 空间

}

//注意事项(如果当前运行的是user1.bin升级的文件名是user2的升级包文件,反之为user2.bin-->user1.xxxx.bin)

//文件名根据您的升级包文件修改(规范写法),注意根据flash大小,文件名会不同!!!!

//如果灵活,文件名通过参数传递过来也行

if (system_upgrade_userbin_check() == UPGRADE_FW_BIN1) {//user1.bin时

os_memcpy(user_bin, "user2.4096.new.4.bin

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值