HTTP-OTA下载固件失败!

2019-7-3 09:17 [复制链接] 16 729

如图,ESP8266通过AT Client模式连接到局域网Web服务器。
+ ?% z! e+ _/ b- ]6 l总是卡在84%这个节点,没有一次是下载完成的。4 c; p* ?6 `" v1 {. f
0 ]( b2 U% n# k# |% N0 Y

$ T# N7 j% n8 e+ L8 u4 o! ~
HTTP_OTA下载不完全.png
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-7-3 09:25:06 | 显示全部楼层
上面有错误信息提示, AT client接收数据失败,串口设备获取数据错误,可以跟踪看看
使用道具 举报 回复
发表于 2019-7-3 10:45:29 | 显示全部楼层
yangjie 发表于 2019-7-3 09:25. q9 z) J6 i' X0 m3 ], b! H5 [8 L
上面有错误信息提示, AT client接收数据失败,串口设备获取数据错误,可以跟踪看看 ...

6 w+ X! C. [, Q1 ^6 A# n, ?我将HTTP缓冲区大小(HTTP_OTA_BUFF_LEN)从128字节调整到8192字节,都是同样的问题。
使用道具 举报 回复
发表于 2019-7-3 10:48:28 | 显示全部楼层
本帖最后由 insect2006 于 2019-7-3 10:49 编辑
$ S9 w# }8 T& D3 g8 a2 G
+ }2 Q7 v+ s, M& n1 |1 j- Clength = webclient_read(session, buffer_read, file_size - total_length > HTTP_OTA_BUFF_LEN ? HTTP_OTA_BUFF_LEN : file_size - total_length); ) H6 Y$ S1 [9 A# K: ^  A1 s
5 c, f4 c1 W8 m  B. ?6 X
关于此函数,剩余读取大小超过HTTP缓冲区大小时,则读取HTTP_OTA_BUFF_LEN字节数据。否则读取剩下不足HTTP_OTA_BUFF_LEN的实际数据。9 Z2 b7 w' k) ^4 K/ |/ g

  _$ B- Q, ^( G: L2 Y/ Q; ~但是实测发现,即使我读HTTP_OTA_BUFF_LEN字节数据,实际返回的读取成功数据大小也不是HTTP_OTA_BUFF_LEN,而是小于HTTP_OTA_BUFF_LEN的一个数。即返回的读取数目不等于我想要读取的数目。原因未知。
使用道具 举报 回复
发表于 2019-7-3 12:07:30 | 显示全部楼层
1. free 命令查看一下设备最大内存占用有没有超,怀疑是内存不足
$ x/ q4 a" i! r1 {5 A$ `
3 s& g* z  v  K4 ?5 S9 W2. 换用小一点的文件(10K - 20K)测试是否出现同样的问题& ?' a% ]; b$ {6 v8 s2 d% d
  D6 q) \) h* G7 B$ Z! j" d
3. 读取数据的问题不用纠结,你这里应该是循环读取数据吧,AT 设备接收数据通过 URC 处理接收, URC 接收数据长度都是有限制的,每个设备不一样,一般都是 1K 左右,而且 TCP 连接是流式的即接收到数据就会返回,所以可能接收到一个 URC 就返回了一个URC 数据长度。这里的接收数据长度小于传入的长度应该没问题。
使用道具 举报 回复
发表于 2019-7-3 14:00:25 | 显示全部楼层
Cheney_Chen 发表于 2019-7-3 12:07
6 Z" K, ]$ k; P: P2 S( h1 p, O1. free 命令查看一下设备最大内存占用有没有超,怀疑是内存不足7 t+ o$ k" Z( `* R1 e4 C
& i) W, \/ M( Q; n9 K. i
2. 换用小一点的文件(10K - 20K)测试是 ...

$ g2 e0 n  g4 E' f+ v3 b" A4 ?" p1。见图,内存充足。2 _5 O( g' e  G' E

# ]! _. U4 v! N6 G( w2。我分别试了一个146KB和一个27KB的文件,大的卡在84%,小的卡在57%。
) q9 j. K1 s2 c
7 ~$ l7 z4 J: a: r8 |0 L1 A" o/ x. f" s% n: R

; o1 e) H0 C/ K. Z) u5 q% r: {) W
1.png
使用道具 举报 回复
发表于 2019-7-3 14:05:42 | 显示全部楼层
又试着下载一个4KB的图片,也提示失败。
2.png
使用道具 举报 回复
发表于 2019-7-3 14:43:55 | 显示全部楼层
本帖最后由 Cheney_Chen 于 2019-7-3 14:45 编辑 * }* Q8 r: y0 M& S8 V' g

2 ?7 u2 t/ P9 }) Q/ Q4 F, H  G是 IoT-Board 开发板吗,提供一下测试环境:开发板类型,系统版本号,at_device 版本,AT 设备类型,我帮你测试一下看能不能复现问题4 v/ k# b) ?1 v( v
使用道具 举报 回复
发表于 2019-7-3 14:47:43 | 显示全部楼层
Cheney_Chen 发表于 2019-7-3 14:431 @2 z. m" Z3 [
是 IoT-Board 开发板吗,提供一下测试环境:开发板类型,系统版本号,at_device 版本,AT 设备类型,我帮你 ...

9 Y# }; ^  ]: i$ {* O/ k$ D* B正点原子407探索者开发板) w+ [+ b! \7 R0 g  b
RT-Thread3.1.2
% |% G: N9 |& O- n0 N0 E0 r! mAT设备是ESP8266: x" R5 Z" N1 _$ X' [- @3 R
at_device版本:1.0.0
使用道具 举报 回复
发表于 2019-7-3 14:48:12 | 显示全部楼层
本帖最后由 insect2006 于 2019-7-3 14:49 编辑
( t. S& _8 [2 `+ Q* A
3 i  u  J# R' {/ q# W1 S9 b使用仿真调试,发现此处数据读取返回-1
11.png
使用道具 举报 回复
发表于 2019-9-13 12:16:28 | 显示全部楼层
insect2006 发表于 2019-7-3 14:48; Y' e: B( ~' \
使用仿真调试,发现此处数据读取返回-1
' @3 O( T( h# D5 F: C
我也遇到同样的问题,请问大神如何解决????
使用道具 举报 回复
发表于 2019-9-19 22:43:27 | 显示全部楼层
请问你OTA下载时卡死问题解决没?我也遇到同样的问题
使用道具 举报 回复
发表于 2020-3-15 15:25:29 | 显示全部楼层
遇到同样的问题,什么情况,rtthread的团队们。
使用道具 举报 回复
发表于 2020-3-15 15:30:49 | 显示全部楼层
我用的sim800c,2G模组,msh />http_ota http://fdgdfg/Uploads/5e6dcff2d5f6f.bin' K+ m. J% g* L3 {4 D9 H3 ~
http file_size:135356
8 G$ b: ?; v! Z: k. s6 T[I/http_ota] Start erase flash (download) partition!9 }& U. c3 f1 v; F$ H
[I/http_ota] Erase flash (download) partition success!
( f' |" E6 ~7 e7 h% x  N8 R' h[I/http_ota] Download: [====================================================================================>               ] 84%
. B/ Z# k; k. O7 y* X[I/http_ota] Download: [=====================================================================================>              ] 85%* U- w' y( a7 n# p' @, z
[E/http_ota] Exit: server return err (0)!
使用道具 举报 回复
发表于 2020-3-16 09:12:16 | 显示全部楼层
zhitao0609 发表于 2020-3-15 15:30( s( y+ D1 h, e  i2 E. n
我用的sim800c,2G模组,msh />http_ota http://fdgdfg/Uploads/5e6dcff2d5f6f.bin
# {4 t8 C4 E( n" s0 ]6 C2 phttp file_size:135356
& e4 X- A& f* O% Z7 e' E ...

# A* l6 m, p9 M0 o+ q$ {应该是擦除速度太慢导致,建议把http_ota函数中的擦除操作放到最开始试试。
使用道具 举报 回复
发表于 2020-3-16 10:14:48 | 显示全部楼层
小小李sunny 发表于 2020-3-16 09:128 z: f' i3 G2 T- E# ~$ ]
应该是擦除速度太慢导致,建议把http_ota函数中的擦除操作放到最开始试试。 ...
; H0 u' }) |9 _4 _" D  `- _
确实是这个问题,多谢多谢。
使用道具 举报 回复
发表于 2020-4-4 12:05:43 | 显示全部楼层
我之前也遇到这个问题,每次下载到87%就卡死了,我的解决方法是下永web_get_file把文件先下载下来保存到文件系统中,然后再读取文件写入到flash中,效果还不错,也就没有了卡死的问题,不知道能不能解决你的问题
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  1. 26 主题
  2. 400 帖子
  3. 400 积分

Ta的主页 发消息

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表