原创 ESP8266 云端升级

2018-8-18 09:56 4016 16 16 分类: 物联网 文集: ESP8266
我一直想远端升级。但是也就是做到了BOOTLOARD.
BOOTLD 可以让客户来进行升级程序。 但是总是不方便,比较要麻烦别人,比较步骤比较多,客户有畏难情绪。
当我看到ESP8266 可以云端升级,不禁眼前一亮。
如果实现,那硬件不就可以和软件一样,可以迅速升级迭代了吗?

首先  要生成软件。
我用的是 WROOM-02模块  。里面有2M的FLASH .
书写软件用的Eclipse.  编译器用的是cygwin  。安可信把他们整合起来叫AiThinkerIDE_V0.5

具体步骤 :
1 打开工程 ,修改Makefile 文件的中的参数,并生成可以下载的文件


boot赋值为new,意思就是可以升级
APP 赋值为1,就可以生成user1的bin 文件  如果要生成user2的文件 把它改为2就可以了
SPI_SPEED是下载的速度
SPI_MODE是下载模式
SPI_SIZE_MAP是flash的大小这个可以看上面那个文档详细介绍 赋值为3表示使用的flash是2MB

( 此段参考  作者:做了不一定能实现但不做一定不会实现 

原文:https://blog.csdn.net/chen244798611/article/details/51375337 

)


在Makeflie 中改了之后, 编译。结果如下。

Support boot_v1.2 and +

Generate user1.2048.new.3.bin successully in folder bin/upgrade.

boot.bin------------>0x00000

user1.2048.new.3.bin--->0x01000

编译器给出了在FLASH中的地址。


当APP= 2时,编译结果如下:

boot.bin------------>0x00000

user2.2048.new.3.bin--->0x81000


我用的是2M ,  SIZE_MAP 应该设置为3。

乐鑫的flash是FM25Q32. 用0x81000.




(乐鑫官网提供的云端升级的DEMO程序。 

https://github.com/dheeptuck/esp8266-ota



第二步 把生成的BIN文件  烧写到模块中


2M 的FLASH 有512+512 布局的,还是1024 +1024布局。   

从串口输出的信息中知道手头的模块是512+512 的结构。

### Flash size 16Mbit: 512KB+512KB

    boot_v1.2+.bin              0x00000

    user1.1024.new.2.bin        0x01000

    esp_init_data_default.bin   0x1fc000 (optional)

    blank.bin                   0x7e000 & 0x1fe000               //my used


用下载工具 把user1.bin  下载进模块。 准备升级user2.bin


第三步, 把user2.bin 放到服务器上。


ESP8266_NONOS_SDK 应用

• 升级接口说明:参考文档《ESP8266 Non-OS SDK API 参考》。

• 升级应用示例:参考

ESP8266_NONOS_SDK\examples\IoT_Demo\user\user_esp_platform.c,由

user_esp_platform_upgrade_begin 系列函数实现。



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

昨天花了10块大洋,买了半颗心的博客上的DEMO。

下载下来,看了一下,和官网ESP8266_NONOS_SDK\examples\IoT_Demo\user\user_esp_platform.c,中的user_esp_platform_upgrade_begin 差不多。

只不过user_esp_platform_upgrade_begin  写的乱七八糟,让人头疼。 半颗心的有注释,并去掉一些无关的程序,看起来简单多了。

配合其博客,我觉得值。时间上值。

下载的程序,在我的服务器上不能获取。  找上位机程序的高手看了一下, 是GET的格式不对,改一下就好了。 

可能每个人用的服务器不同,别人亲测可用,自己不一定能用。





升级失败。 升级的程序死机。

如果恢复, 需要下载一个没有BOOT的程序来覆盖。 

否则, 如果还下载一个支持BOOT的程序,里面的运行选择标志位 没有被清除。会造成程序还是会运行那个死机的程序。 


同时,我还发现云端升级的一些问题。     

 1 设备自动上网去找对应的BIN文件。 并自动升级。 

    缺失版本判断

    没法选择性的升级。   把升级文件一放入,全部设备都会升级。

2 没有回滚机制。    

    就像我这样,升级一个错误的文件,莫名其妙的就死机了,  至少得回复成先前没有错误的程序里去吧。


今天升级成功了, 也运行正常。 

但是在有限不多的升级中,其中有一次就卡在中间,一动不动。  重新上电就像没有程序了一样。 


我觉得好像不太稳定。           

-----------2018 8 24

文章评论0条评论)

登录后参与讨论
我要评论
0
16
关闭 站长推荐上一条 /2 下一条