ESP8266實現OTA的部分
使用的官方SDK版本:ESP8266_NONOS_SDK 3.1
使用SDK的時候主要注意兩點
1、根據自己的wifi模塊來配置upgrade.h文件裏面的兩個定義:
#define SPI_FLASH_SEC_SIZE 4096
#define LIMIT_ERASE_SIZE 0x1000
這兩個定義改變的時候要同時修改CFG_HOLDER這個定義的值,這個定義位置不固定,我使用的是mqtt功能,這個CFG_HOLDER定義在mqtt_config.h中,因爲只有這個值改變了纔會重新存儲改變的值。
2、根據flash的大小更改Makefile文件裏面SPI_SIZE_MAP定義。
SPI_SIZE_MAP | flash大小(MByte) | user1地址 | user2地址 |
---|---|---|---|
2 | 1024 | 0x1000 | 0x81000 |
3 | 2048 | 0x1000 | 0x81000 |
4 | 4096 | 0x1000 | 0x81000 |
5 | 2048 | 0x1000 | 0x101000 |
6 | 4096 | 0x1000 | 0x101000 |
用nodejs搭建服務器的部分
主要注意服務器反回http頭信息的時候如下:
‘Content-Disposition’:attachment; “filename=user2.1024.new.2.bin”,
’Content-Type’: ‘application/octet-stream’, //文件類型
‘Content-Length’: data.length
從USER1升級到USER2成功,但是從USER2升級到USER1就出現卡死然後看門狗復位的情況
目前具體原因沒找到,但是每次編譯USER1和USER2程序之前先clean一下工程再編譯,這樣生成的兩個二進制文件再燒錄到模塊中,並且更新服務器裏面的兩個程序文件,就可以解決了這個問題。經過多次升級測試目前還是挺穩定的。