[Solved] 请教:OTA时,由USER2.BIN更新USER1.BIN出错,无法启动.
[Solved] 请教:OTA时,由USER2.BIN更新USER1.BIN出错,无法启动.
Postby xyz769 » Tue Mar 01, 2016 10:06 pm
BOOT.BIN用的1.5版的.
SDK用的1.5.2,由USER1.BIN更新USER2.BIN时正常,重启后能运行到USER2.BIN,但随即从USER2.BIN更新USER1.BIN时,FLASH超时,触发WDT RESET ,系统一直报错,无法启动.重新通过串口刷一次USER1.BIN,重启后是从USER2.BIN启动.相关日志如下:
第一次启动信息:
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
SDK version:1.5.2(80914727)
------------------------------------
OAT升级USER2.BIN部分日志:
HEAD /agent/update/user2.bin HTTP/1.1
Host: 192.168.1.140
Connection: close
Content-Length: 0
Cache-Control: max-age=0
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
pusrdata = HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"236356-1456840445390"
Last-Modified: Tue, 01 Mar 2016 13:54:05 GMT
Content-Type: application/octet-stream
Content-Length: 236356
Date: Tue, 01 Mar 2016 13:55:07 GMT
Connection: close
sumlength = 236356
sec_block 58
..........................................................upgrade_get_sum_disconcb 41696
erase sector=129 ok
erase sector=130 ok
erase sector=131 ok
erase sector=132 ok
erase sector=133 ok
---------------------------------------------
执行OAT升级USER2.BIN时,启动信息:
totallen = 236356
upgrade file download finished.
flash_crc = 896672383
img_crc = 896672383
upgrade_check
upgrade successful
reboot to use2
state: 5 -> 0 (0)
rm 0
pm close 7
del if0
usl
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user2 @ 81000
SDK version:1.5.2(80914727)
----------------------------------------------
再次执行OAT,升级USER1.BIN日志信息:
HEAD /agent/update/user1.bin HTTP/1.1
Host: 192.168.1.140
Connection: close
Content-Length: 0
Cache-Control: max-age=0
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
pusrdata = HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"236356-1456840451625"
Last-Modified: Tue, 01 Mar 2016 13:54:11 GMT
Content-Type: application/octet-stream
Content-Length: 236356
Date: Tue, 01 Mar 2016 13:55:28 GMT
Connection: close
sumlength = 236356
sec_block 58
..........................................................upgrade_get_sum_disconcb 41696
erase sector=1 ok
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user2 @ 81000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
...................
后面一直是这个错误信息,重新上电直接报这个错误,无法启动.
通过串口单独烧录USER1.BIN到0X01000后,启动成功,启动信息:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user2 @ 81000
don't use rtc mem data
启动成功.
SDK用的1.5.2,由USER1.BIN更新USER2.BIN时正常,重启后能运行到USER2.BIN,但随即从USER2.BIN更新USER1.BIN时,FLASH超时,触发WDT RESET ,系统一直报错,无法启动.重新通过串口刷一次USER1.BIN,重启后是从USER2.BIN启动.相关日志如下:
第一次启动信息:
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
SDK version:1.5.2(80914727)
------------------------------------
OAT升级USER2.BIN部分日志:
HEAD /agent/update/user2.bin HTTP/1.1
Host: 192.168.1.140
Connection: close
Content-Length: 0
Cache-Control: max-age=0
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
pusrdata = HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"236356-1456840445390"
Last-Modified: Tue, 01 Mar 2016 13:54:05 GMT
Content-Type: application/octet-stream
Content-Length: 236356
Date: Tue, 01 Mar 2016 13:55:07 GMT
Connection: close
sumlength = 236356
sec_block 58
..........................................................upgrade_get_sum_disconcb 41696
erase sector=129 ok
erase sector=130 ok
erase sector=131 ok
erase sector=132 ok
erase sector=133 ok
---------------------------------------------
执行OAT升级USER2.BIN时,启动信息:
totallen = 236356
upgrade file download finished.
flash_crc = 896672383
img_crc = 896672383
upgrade_check
upgrade successful
reboot to use2
state: 5 -> 0 (0)
rm 0
pm close 7
del if0
usl
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user2 @ 81000
SDK version:1.5.2(80914727)
----------------------------------------------
再次执行OAT,升级USER1.BIN日志信息:
HEAD /agent/update/user1.bin HTTP/1.1
Host: 192.168.1.140
Connection: close
Content-Length: 0
Cache-Control: max-age=0
Accept: */*
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4
pusrdata = HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"236356-1456840451625"
Last-Modified: Tue, 01 Mar 2016 13:54:11 GMT
Content-Type: application/octet-stream
Content-Length: 236356
Date: Tue, 01 Mar 2016 13:55:28 GMT
Connection: close
sumlength = 236356
sec_block 58
..........................................................upgrade_get_sum_disconcb 41696
erase sector=1 ok
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user2 @ 81000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
Fatal exception (0):
epc1=0x40201a18, epc2=0x00000000, epc3=0x00000000, excvaddr=0x00000000, depc=0x00000000
...................
后面一直是这个错误信息,重新上电直接报这个错误,无法启动.
通过串口单独烧录USER1.BIN到0X01000后,启动成功,启动信息:
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x40100000, len 1856, room 16
tail 0
chksum 0x63
load 0x3ffe8000, len 776, room 8
tail 0
chksum 0x02
load 0x3ffe8310, len 552, room 8
tail 0
chksum 0x79
csum 0x79
2nd boot version : 1.5
SPI Speed : 40MHz
SPI Mode : QIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user2 @ 81000
don't use rtc mem data
启动成功.
Re: 请教:OTA时,由USER2.BIN更新USER1.BIN出错,无法启动.
Postby xyz769 » Wed Mar 02, 2016 3:38 pm
感谢您的回复,我的调用函数如下:
LOCAL void ICACHE_FLASH_ATTR user_webclient_upgrade_rsp(void *arg) {
struct upgrade_server_info *server = arg;
if (server->upgrade_flag == true) {
PERR("upgrade successful\n");
system_upgrade_reboot();
} else {
PERR("upgrade failed\n");
}
os_free(server->url);
server->url = NULL;
os_free(server);
server = NULL;
}
LOCAL void ICACHE_FLASH_ATTR user_webclient_begin_upgrade(void) {
struct upgrade_server_info *upsvc = (struct upgrade_server_info *) os_zalloc(sizeof(struct upgrade_server_info));
uint8 * user_bin=(uint8 *)os_zalloc(100);
upsvc->pespconn = &TcpClient;
upsvc->port = WEB_PORT;
upsvc->check_cb = user_webclient_upgrade_rsp;
upsvc->check_times = 120000;
os_memcpy(upsvc->ip, &tcp_server_ip, 4);
upsvc->url = (uint8 *) os_zalloc(512);
//
//os_bzero(user_bin, 100);
if (system_upgrade_userbin_check() == UPGRADE_FW_BIN1) {
os_sprintf(user_bin, UPDATE_URL, "user2.bin");
} else if (system_upgrade_userbin_check() == UPGRADE_FW_BIN2) {
os_sprintf(user_bin, UPDATE_URL, "user1.bin");
}
//
os_sprintf(upsvc->url, HTTP_HEAD_FRAME, "GET", user_bin, &server_url.server_host[0], 0);
//
os_free(user_bin);
//
if (system_upgrade_start(upsvc) == false) {
PERR("upgrade is already started\n");
os_free(upsvc->url);
os_free(upsvc);
}
}
请帮忙看看这个入口函数有没有问题,谢谢.
LOCAL void ICACHE_FLASH_ATTR user_webclient_upgrade_rsp(void *arg) {
struct upgrade_server_info *server = arg;
if (server->upgrade_flag == true) {
PERR("upgrade successful\n");
system_upgrade_reboot();
} else {
PERR("upgrade failed\n");
}
os_free(server->url);
server->url = NULL;
os_free(server);
server = NULL;
}
LOCAL void ICACHE_FLASH_ATTR user_webclient_begin_upgrade(void) {
struct upgrade_server_info *upsvc = (struct upgrade_server_info *) os_zalloc(sizeof(struct upgrade_server_info));
uint8 * user_bin=(uint8 *)os_zalloc(100);
upsvc->pespconn = &TcpClient;
upsvc->port = WEB_PORT;
upsvc->check_cb = user_webclient_upgrade_rsp;
upsvc->check_times = 120000;
os_memcpy(upsvc->ip, &tcp_server_ip, 4);
upsvc->url = (uint8 *) os_zalloc(512);
//
//os_bzero(user_bin, 100);
if (system_upgrade_userbin_check() == UPGRADE_FW_BIN1) {
os_sprintf(user_bin, UPDATE_URL, "user2.bin");
} else if (system_upgrade_userbin_check() == UPGRADE_FW_BIN2) {
os_sprintf(user_bin, UPDATE_URL, "user1.bin");
}
//
os_sprintf(upsvc->url, HTTP_HEAD_FRAME, "GET", user_bin, &server_url.server_host[0], 0);
//
os_free(user_bin);
//
if (system_upgrade_start(upsvc) == false) {
PERR("upgrade is already started\n");
os_free(upsvc->url);
os_free(upsvc);
}
}
请帮忙看看这个入口函数有没有问题,谢谢.
Re: 请教:OTA时,由USER2.BIN更新USER1.BIN出错,无法启动.
Postby xyz769 » Wed Mar 02, 2016 3:44 pm
另外,日志提示第二次是在擦除USER1.BIN区域了:
sec_block 58
..........................................................upgrade_get_sum_disconcb 41696
erase sector=1 ok
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
erase sector=1 ok ---->0x01000
可是不知什么原因卡住了,并触发了WDT RESET,奇怪的是明明提示只擦了USER1.BIN区域,但USER2.BIN区域却无法启动了.更怪的是,此时用串口重新擦USER2.BIN却不能正常启动USER2.BIN,只有重新擦写USER1.BIN才能让USER2.BIN正常启动.
感觉是BOOTLOADER从USER2.BIN启动时,还是要跳到USER1.BIN中转一圈才回到USER2.BIN中正常执行...
sec_block 58
..........................................................upgrade_get_sum_disconcb 41696
erase sector=1 ok
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
erase sector=1 ok ---->0x01000
可是不知什么原因卡住了,并触发了WDT RESET,奇怪的是明明提示只擦了USER1.BIN区域,但USER2.BIN区域却无法启动了.更怪的是,此时用串口重新擦USER2.BIN却不能正常启动USER2.BIN,只有重新擦写USER1.BIN才能让USER2.BIN正常启动.
感觉是BOOTLOADER从USER2.BIN启动时,还是要跳到USER1.BIN中转一圈才回到USER2.BIN中正常执行...
Re: 请教:OTA时,由USER2.BIN更新USER1.BIN出错,无法启动.
Postby ESP_Faye » Thu Mar 03, 2016 11:08 am
您好,
请确认,user1.bin 和 user2.bin 应该是不同的两个 bin 文件,编译步骤:
1. 编译 user1.bin
2. make clean 清除上次编译生成的临时文件
3. 与步骤 1 中的其他编译选项均一致,区别仅在于选择编译 user2
怀疑您是否在编译时异常,您的 user1.bin 和 user2.bin 其实都是 user1.bin。
或者麻烦提供一下您的 user1.bin 和 user2.bin,我们将协助您分析。
请确认,user1.bin 和 user2.bin 应该是不同的两个 bin 文件,编译步骤:
1. 编译 user1.bin
2. make clean 清除上次编译生成的临时文件
3. 与步骤 1 中的其他编译选项均一致,区别仅在于选择编译 user2
怀疑您是否在编译时异常,您的 user1.bin 和 user2.bin 其实都是 user1.bin。
或者麻烦提供一下您的 user1.bin 和 user2.bin,我们将协助您分析。
Who is online
Users browsing this forum: No registered users and 2 guests
Login
Newbies Start Here
Are you new to ESP8266?
Unsure what to do?
Dunno where to start?
Start right here!
Latest SDK
Documentation
Complete listing of the official ESP8266 related documentation release by ESPRESSIF!
Must read here!
- All times are UTC+08:00
- Top
- Delete all board cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. We are the manufacturer of ESP8266EX.