Files
archery/design_doc/solution_record.md
gcw_4spBpAfv 28fb62e5d6 v1.2.1
2026-01-23 11:28:40 +08:00

1.4 KiB
Raw Blame History

  1. OTA 下载的时候,为什么使用十六进制下载,读取 URC 事件? 因为使用二进制下载的时候,经常会出现错误,并且会失败?然后最稳定传输的办法,是每次传输的时候,是分块,而且每次分块都要“删/建”http实例。推测原因是因为我们现在是直接传输文件的源代码代码中含有了一些字符串可能和 AT指令重复导致了 AT 模块在解释的时候出错。而使用 16 进制的方式,可以避免这个问题。因为十六进制直接把数据先转成了字符串,然后在设备端再把字符串转成数据,这样就不可能出现 AT的指令从而减少了麻烦。
  2. OTA 下载的时候,为什么不用 AT 模块里 HTTPDLFILE 的指令? 因为在测试中发现,使用 HTTPDLFILE其实是下载到了 4G 模块内部,需要重新从模块内部转到存储卡,而且 4G 模块的存储较小,大概只有 40k所以还需要分块来下载和转存比较麻烦于是最终使用了使用读取串口事件的模式。
  3. OTA 下载的时候,为什么不用 AT 模块里 HTTPREAD 的指令? 因为之前测试发现READ模式其实是需要多步 3.1. AT+MHTTPCREATE 3.2. AT+MHTTPCFG 3.3. AT+MHTTPREQUEST 3.4. AT+MHTTPREAD 它其实也是把数据下载到 4g 模块的缓存里,然后再从缓存里读取出来。所以也是比较繁琐的,还不如 HTTPDLFILE 简单。