泰州景点:swupdate 之 readback handler

admin 6个月前 (05-05) 科技 54 0

靠山

使用 swupdate 作为 OTA 方案 ,有项目要求在写入数据到分区之后需要再次读出校验。

开端实现:readout-verify attribute

开端剖析有两种方式

  • 方案一

在每一笔数据写入后,马上读出校验。此时原始数据还在 buffer 中,读出的数据直接跟原始 buffer 做对照即可

  • 方案二

在将分区数据完全写入后,再读出校验。

注意在流式升级的情形下,源数据是分片传输写入的,用完即弃,因此写完整个分区之后已经没有原始数据可以对照了。

此时要么重新从数据源获取(不可取,相当于下载两次 OTA 包),要么需要在 OTA 包中分外设置好校验值,对读出数据盘算获得的校验值举行对照。

出于简朴思量,选择了方案一举行实现,为 image 增加了一个 readout-verify 属性,设置后在每笔数据写入后均会读出校验,校验的方式是直接跟源 buffer 对照。

功效很简朴,但由于源码中并未思量这种情形,因此用于校验的 buffer 无法通报,只能频频申请和释放,问题不大只是看着有点别扭。

实验把 patch 发出来,想听听作者的意见,效果作者回复已经有一个 readback handler 用于支持读出分区数据举行校验了。

社区实现: readback handler

这个 reabback handler 接纳 scripts 的形式,在所有 image 写入完成后,再对 image 举行读出校验,sha256 校验值需要在 sw-description 中预先设置好。

举个例子:

scripts: (
{
    device = "/dev/mmcblk2p1";
    type = "readback";
    properties: {
        sha256 = "e7afc9bd98afd4eb7d8325196d21f1ecc0c8864d6342bfc6b6b6c84eac86eb42";
        size = "184728576";
        offset = "0";
    };
}
);

功效顾名思义,就是读出指定 device 的指定局限的数据,算出 sha256 值,验证与设置中的 sha256 值是否一致。

详细的设置形貌如下表。

字段 类型 形貌
device string 要校验的分区节点
type string 标注handler
sha256 string 分区的sha256值
size string 要校验的数据巨细(单元:字节)。若是未设置或设置为0,则会自动获取分区巨细
offset string 要校验的数据偏移(单元:字节)。若是未设置,默以为0

总结

稍微对照下两种实现(以下列出的瑕玷是相对另一个而言,以是优点就不赘述了)

readback handler 的瑕玷在于

  1. 实现较为庞大,使用也较为庞大,需要设置sha256 (固然一样平常是通过剧本自动化天生)
  2. 先完全写入再校验,即出问题时不会马上报错保留现场,而是在所有 image 均写入完成后,才举行校验
  3. 对某些定制不方便实现,例如要求在失足时重试该笔数据的写入

readout-verify attribute 的瑕玷在于

  1. 在某些情形下不适用,例如配合ubi handler,配合rdiff handler
  2. 只能保证该笔数据写入准确,无法保证完整数据未被窜改。例如写入 A 数据后读出校验乐成,再写入 B 时影响到了 A,则无法被检测到

综上,优先选择社区默认的 readback handler,着实有无法知足的定制化需求时,再思量自行实现特殊属性和行为。

blog: https://www.cnblogs.com/zqb-all/p/12827506.html
民众号:https://sourl.cn/T4Skam

,

sunbet

www.0379st.com信誉来自于每一位客户的口碑,Sunbet贴心的服务,让你尊享贵宾通道,秒速提现,秒速到账,同行业中体验最佳。

Sunbet声明:该文看法仅代表作者自己,与本平台无关。转载请注明:泰州景点:swupdate 之 readback handler

网友评论

  • (*)

最新评论

文章归档

站点信息

  • 文章总数:642
  • 页面总数:0
  • 分类总数:8
  • 标签总数:1010
  • 评论总数:267
  • 浏览总数:7544