专栏首页QB杂货铺OTA之流式更新及shell实现

OTA之流式更新及shell实现

在OTA升级时,需要从网络下载OTA包,并写到flash上的对应分区中。

最简单的方式是将下载与更新分离,先将完整的数据包下载到本地,再将本地的OTA包更新到flash上。方便可靠。

但这种方式的问题是,本地需要有足够的空间存放OTA包,这对一些flash较小的产品来说,会起到很大的限制作用,需要在flash上留出一个不小于系统占用大小的空间,用于存放OTA包。

但空间确实不够啊,怎么办呢?这个时候就需要能支持流式更新了,让从网络下载的数据,直接写到flash中。

安卓在AB升级方案中,就支持了这种流式更新(streaming updates)的方式,无需临时空间存放OTA包。

那么具体怎么实现了,其实流式更新最简单的实现,只需几行shell脚本,调用外部现成的工具,通过管道的形式配合即可实现。

例如使用wget下载ota包的话,则可以使用 wget 的 -S 参数,滤出OTA包的长度

    file_length=$(wget -S "$file_download" 2>&1 | grep "Content-Length" | awk '{print $2}')

再通过wget与dd相配合,将数据直接写入对应分区。

 wget "$file_download" -q -O - | dd of="$partition"

最后再下载md5校验值,并将写入的数据流式读出,同样通过管道传给md5sum,算出校验值进行校验。

 md51=$(wget "$file_download.md5" -q -O -)
 md52=$(dd if="$partition" bs=512 count="$file_sectors" | md5sum | cut -d ' ' -f 1)

以上就是使用shell脚本,调用wget,dd,md5sum ,使用管道进行配合,完成的流式更新的核心部分了。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • spinor/spinand flash之高频通信延迟采样

    极性,一般表示为CPOL(Clock POLarity),即SPI空闲时时钟信号SCLK的电平(0:空闲为低电平; 1:空闲为高电平)

    zqb_all
  • 局域网内利用gitlab,jenkins自动生成gitbook并发布(nginx)

    基本的流程是这样的,每本书作为项目托管到gitlab上,每次提交,gitlab会触发jenkins,jenkins会把仓库的内容拉下来,gitbook buil...

    zqb_all
  • nor flash之写保护

    没有电池的嵌入式设备,很容易发生随机掉电。因此要让产品可靠稳定,就必须保证各种场景下的掉电安全。

    zqb_all
  • 一张图带你看懂区块链项目生态

    正如我之前在ICO的“泡沫”博客中写到的,区块链技术,加密货币和代币销售现在风靡一时。 在过去5年多的时间里,我一直在风险投资行业工作,这是在任何技术领域都没见...

    企鹅号小编
  • linux ulimit 调优

    概要: linux系统默认open files数目为1024, 有时应用程序会报Too many open files的错误,是因为open files 数目不...

    sunsky
  • 安装tesseract

    tesseract.exe下载地址:https://digi.bib.uni-mannheim.de/tesseract/

    祝你永远进步
  • 100万年薪只是起步价!跨境AI人才遭疯抢后最终去了哪儿?

    作者 | 张明明,鸽子 本文是《跨境AI人才潮》的第二篇特稿。想要详细了解AI人才话题,请参看:《AI人才缺失催生的“跨境猎头”,人才年薪高达300万,猎头直赚...

    AI科技大本营
  • C4.5决策树算法概念学习

    •分类(Classification)就是按照某种标准给对象贴标签,再根据标签来区分归类,类别数不变。

    用户3003813
  • 图片数据的收集 | 项目分享与演示

    hello,大家好,今天要分享的内容是关于如何获取所需的数据集,请看下面的图。下图经常被用来解释为什么深度学习如此强大,当你向深度学习模型系统提供更多数据的时候...

    AI算法与图像处理
  • Spring in Action笔记(更新至2.2)

    Web应用程序 : 是一种结构化的软件,它提供了该领域中常见的任务的自动化实现,同时作为一个内置的架构解决方案可以被在其上实现的应用程序轻松地继承。

    代码咖啡

扫码关注云+社区

领取腾讯云代金券