swapdateのreadback handler
2767 ワード
背景
swupdate
をOTA
スキームとして使用すると、データがパーティションに書き込まれた後に再度チェックアウトを読み出す必要がある項目がある.初歩的な実装:readout-verify attribute
初歩的な分析には2つの方法がある.
buffer
にあり、読み出したデータは元のbuffer
と直接比較すればよいストリームアップグレードの場合、ソースデータはスライス転送で書き込まれ、使い終わったら破棄されるため、パーティション全体を書き終わった後、元のデータは比較できません.
この場合、データソースから再取得(
OTA
パケットのダウンロードに相当)するか、OTA
パケットに検証値を追加して構成し、読み出しデータ計算で得られた検証値を比較する必要がある.単純な考慮から、スキーム1を選択して実装し、
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
パーティションのsha 256値
size
string
検証するデータサイズ(単位:バイト).0に設定または設定されていない場合は、パーティションサイズが自動的に取得されます.
offset
string
検証するデータオフセット(単位:バイト).設定されていない場合は、デフォルトは0です.
まとめ
次の2つの実装を少し比較する(以下の欠点は別のものであるため、利点は後述しない)
readback handler
の欠点はsha256
(もちろんスクリプト自動化によって生成される)image
の書き込みが完了した後、検証readout-verify attribute
の欠点はubi handler
、rdiff handler
A
のデータを書き込む読み出しチェックに成功し、さらにB
を書き込むとA
に影響する、以上、コミュニティのデフォルトの
readback handler
を優先的に選択し、本当に満足できないカスタマイズの需要がある場合は、独自に特殊な属性と行為を実現することを考慮する.blog: https://www.cnblogs.com/zqb-all/p/12827506.html公衆番号:https://sourl.cn/T4Skam