ESP8266 Developer Zone The Official ESP8266 Forum 2019-06-26T11:01:24+08:00 https://bbs.espressif.com:443/feed.php?f=9&t=10398 2019-06-26T11:01:24+08:00 2019-06-26T11:01:24+08:00 https://bbs.espressif.com:443/viewtopic.php?t=10398&p=48389#p48389 <![CDATA[Re: 一个关于:ESP8266_RTOS 在线升级FOTA CRC问题]]> Statistics: Posted by Her Mary — Wed Jun 26, 2019 11:01 am


]]>
2019-06-19T20:00:19+08:00 2019-06-19T20:00:19+08:00 https://bbs.espressif.com:443/viewtopic.php?t=10398&p=43943#p43943 <![CDATA[Re: 一个关于:ESP8266_RTOS 在线升级FOTA CRC问题]]> Statistics: Posted by Guest — Wed Jun 19, 2019 8:00 pm


]]>
2018-07-19T15:03:54+08:00 2018-07-19T15:03:54+08:00 https://bbs.espressif.com:443/viewtopic.php?t=10398&p=22126#p22126 <![CDATA[Re: 一个关于:ESP8266_RTOS 在线升级FOTA CRC问题]]> 1> 在PC端,生成测试程序(从Esp8266源码中抽出upgrade相关代码,直接调用upgrade_crc_check函数)计算CRC值。发现生成的CRC值和用Esp8266编译出来的CRC值有时候相等,有时候不等。
2> 怀疑是Esp8266编译产生的CRC有问题,跟踪makefile文件。发现Esp8266生成bin文件后,是通过调用\tools\gen_appbin.py脚本产生CRC。
3> 对\tools\gen_appbin.py脚本单独进行测试,发现问题出在函数gen_appbin()的最后对all_bin_crc的判断上:
if boot_mode == '1' or boot_mode == '2':
all_bin_crc = getFileCRC(flash_bin_name)
if all_bin_crc < 0:
all_bin_crc = abs(all_bin_crc) - 1
else :
all_bin_crc = abs(all_bin_crc) + 1
print "bin crc: %x"%all_bin_crc
如果all_bin_crc < 0,那么计算出的CRC就是正确的,否则错误。这就是为何有时候CRC相等,有时候不等的原因。
4> 修改上述代码为如下,CRC问题解决。

if boot_mode == '1' or boot_mode == '2':
all_bin_crc = getFileCRC(flash_bin_name)
all_bin_crc = ~all_bin_crc

:D :D :D :D

Statistics: Posted by John Liu — Thu Jul 19, 2018 3:03 pm


]]>
2018-07-18T10:31:22+08:00 2018-07-18T10:31:22+08:00 https://bbs.espressif.com:443/viewtopic.php?t=10398&p=22112#p22112 <![CDATA[(搞定)一个关于:ESP8266_RTOS 在线升级FOTA CRC问题]]>
1> 对\tools\gen_appbin.py脚本单独进行测试,发现问题出在函数gen_appbin()的最后对all_bin_crc的判断上:
if boot_mode == '1' or boot_mode == '2':
all_bin_crc = getFileCRC(flash_bin_name)
if all_bin_crc < 0:
all_bin_crc = abs(all_bin_crc) - 1
else :
all_bin_crc = abs(all_bin_crc) + 1
print "bin crc: %x"%all_bin_crc
如果all_bin_crc < 0,那么计算出的CRC就是正确的,否则错误。这就是为何有时候CRC相等,有时候不等的原因。

2> 修改上述代码为如下,CRC问题解决。

if boot_mode == '1' or boot_mode == '2':
all_bin_crc = getFileCRC(flash_bin_name)
all_bin_crc = ~all_bin_crc

Statistics: Posted by John Liu — Wed Jul 18, 2018 10:31 am


]]>
2018-07-11T17:28:19+08:00 2018-07-11T17:28:19+08:00 https://bbs.espressif.com:443/viewtopic.php?t=10398&p=22054#p22054 <![CDATA[Re: 一个关于:ESP8266_RTOS 在线升级FOTA CRC问题]]> 2. 是不是编译 user 2 之前没有先 make clean 删除上一次编译生成的文件?

Statistics: Posted by Her Mary — Wed Jul 11, 2018 5:28 pm


]]>
2018-06-29T16:18:33+08:00 2018-06-29T16:18:33+08:00 https://bbs.espressif.com:443/viewtopic.php?t=10398&p=20969#p20969 <![CDATA[一个关于:ESP8266_RTOS 在线升级FOTA CRC问题]]> 问题:
1. 做FOTA时,从Server端下载文件成功,但调用upgrade_crc_check函数时,计算出来的img_crc不正确。读出来的flash_crc正确。
2. 有时候编译出来的user1.bin或者user2.bin放在Server端,进行在线升级时,img_crc又是正确的。
问题2,是非常令我困惑的地方。要么img_crc总是不正确,为何有时候又是正确的呢?程序只是增加了一个串口打印。

Statistics: Posted by John Liu — Fri Jun 29, 2018 4:18 pm


]]>