Embedded OTA アップグレードの実装原理

https://blog.csdn.net/bulebin/article/details/108428643

1. はじめに

1.1 コンセプト

OTA: Over-the-Air Technology、つまり無線ダウンロード技術。

OTA アップグレード: ファームウェアまたはソフトウェアのアップグレードは OTA を通じて実現されます。

無線通信によるアップグレードであれば、ネットワーク/BluetoothなどのOTAアップグレードと呼ぶことができます。

有線方式によるアップグレードは、UART、USB、または SPI 通信インターフェイスを介したデバイス ファームウェアのアップグレードなど、ローカル アップグレードと呼ばれます。

ここに画像の説明を挿入します

1.2 利点

1. OTA方式により、運用保守員が出張することなく、各地に分散した機器のソフトウェア更新が可能です。

2. IoT プラットフォームは、スマート デバイスがシステムの脆弱性を修復し、システム アップグレードを実現する手段である OTA を介したデバイス ファームウェアのアップグレードをサポートします。

3. 急速に変化し発展するモノのインターネット市場では、新製品の需要が絶えず出現しているため、スマート ハードウェア デバイスの更新需要はますます高まっています。

これは史上最高値となっており、装備は従来の装備とは異なり、一度販売すると変更されません。ファームウェアのアップグレードを通じて、より良いサービスをユーザーに提供します。

1.3 実装原則

コアプロセス:

1. アップグレードパッケージを作成する

2. アップグレードパッケージをダウンロードする

3. アップグレード パッケージを確認する

4.アップデートプログラム

ここに画像の説明を挿入します

ダウンロード方法:

アップグレードに OTA または有線通信が使用されるかどうかに関係なく、アップグレード パッケージのダウンロード方法には、バックグラウンド ダウンロードと非バックグラウンド ダウンロードの 2 つのモードがあります。

バックグラウンドでのダウンロード:

アップグレード中、新しいファームウェアはバックグラウンドで静かにダウンロードされます。つまり、新しいファームウェアのダウンロードはアプリケーション機能の一部です。新しいファームウェアのダウンロード プロセス中、アプリケーションは通常どおり使用できます。つまり、ダウンロード プロセス全体がダウンロードが完了すると、システムはブートローダー プログラムにジャンプし、ブートローダーは古いファームウェアを新しいファームウェアで上書きする操作を完了します。たとえば、スマートフォンの Android または iOS システムのアップグレードにはバックグラウンド方式が採用されており、新しいシステムのダウンロードプロセス中、携帯電話は通常どおり使用できます。

ここに画像の説明を挿入します

非バックグラウンドダウンロード:

アップグレード時、システムはアプリケーションからブートローダー プログラムにジャンプする必要があり、ブートローダーは新しいファームウェアをダウンロードします。ダウンロードが完了した後も、ブートローダーは引き続き古いファームウェアを新しいファームウェアで上書きする操作を完了し、アップグレードします。完成されました。以前のフィーチャー フォンでは、オペレーティング システムのアップグレードに非バックエンドを使用していました。つまり、ユーザーは特定のボタンを長押ししてブートローダー モードに入り、その後アップグレードする必要がありました。アップグレード プロセス全体の間、電話機の通常の機能は利用できませんでした。

ここに画像の説明を挿入します

新旧ファームウェア上書きモード:

新しいファームウェアが古いファームウェアの適用範囲を置き換えるには、デュアルゾーン モードとシングルゾーン モードの 2 つの方法があります。

デュアルゾーンモード:

デュアルゾーン モードでは、古いファームウェアと新しいファームウェアがそれぞれフラッシュ内のバンク (記憶領域) を占有します。古いファームウェアがバンク 0 (実行領域) に配置され、新しいファームウェアがバンク 1 (ダウンロード領域) に配置されているとします。アップグレードするとき、アプリケーションは最初に新しいファームウェアをバンク 1 にダウンロードします。新しいファームウェアがダウンロードされ、正常に検証された場合にのみ、システムはブートローダー プログラムにジャンプし、古いファームウェアが配置されているバンク 0 領域を消去し、バンク 1 の新しいファームウェアをバンク 0 にコピーします。

バックグラウンド ダウンロードはデュアルゾーン モードでアップグレードする必要があります。

アドバンテージ:

アップグレード プロセス中に問題が発生した場合、または新しいファームウェアに問題があった場合は、影響を受けることなく以前の古いファームウェアと古いシステムを選択して実行を続行することもできます。

欠点:

システム リソースが不足している場合、フラッシュ スペースのもう 1 つのストレージ領域を占有することはさらに困難になります。

ここに画像の説明を挿入します

シングルゾーンモード:

シングルエリアモードの非バックグラウンドダウンロードにはバンク0(実行領域)が1つだけあり、旧ファームウェアと新ファームウェアはこのバンク0を共有します。アップグレードするときは、ブートローダー プログラムに入った後、まず古いファームウェアを消去し、次に新しいファームウェアを同じバンクに直接ダウンロードします。ダウンロードが完了したら、新しいファームウェアの有効性を確認します。新しいファームウェアは効果的にアップグレードされます。そうでない場合は、アップグレードされます。再度開始する必要があります。

アドバンテージ:

デュアルゾーン モードと比較して、シングルゾーン モードはフラッシュ領域を節約できるため、システム リソースが不足している場合は、シングルゾーン モードが適しています。

欠点:

アップグレード プロセス中に問題が発生した場合、または新しいファームウェアに問題が発生した場合、シングル ゾーン モードでこの状況が発生した場合、シングル ゾーン モードはブートローダーに留まり、別のアップグレードの試行を待つことしかできません。このとき、通常の機能は動作しません。ユーザーの使用という観点から見ると、この時点でデバイスは「ブリック」していると言えます。

比較すると、デュアルゾーン モードでは多くのストレージ スペースが犠牲になりますが、より優れたアップグレード エクスペリエンスが提供されます。

ここに画像の説明を挿入します

2. MCU OTAアップグレード

MCU(マイクロコントローラー)のファームウェアアップグレードを例に、組み込みベアメタルプログラムのOTAアップグレードについて説明します。ベアメタルファームウェアはデバイスのメモリ(フラッシュなど)に固定化されており、つまりマシンコードがメモリに保存されているため、MCUのOTAファームウェアアップグレードとは、メモリ内の古いファームウェアのマシンコードを置き換えることを意味します。 OTA マシンコードを介した新しいファームウェア。

ここに画像の説明を挿入します

3. Linux OTA アップグレード

Linux システムの構成:

主に、uboot (ブート プログラム)、kernel (カーネル)、rootfs (ルート ファイル システム) の 3 つの部分で構成されます。

フラッシュ内の 3 つのパーティションは次のとおりです。

アプリケーションは rootfs に保存されます。

ここに画像の説明を挿入します

Linux システムの起動プロセス:

ここに画像の説明を挿入します

3.1 システムのアップグレード

Linux システムは、uboot\kernel\rootfs の 3 つの部分で構成されています。Linux システムのアップグレードとは、フラッシュ内のこれら 3 つのパーティションのデータを更新して置き換えることを意味します。

MCU ファームウェアがバイナリ データをフラッシュに保存するのと同じように、uboot\kernel\rootfs はフラッシュ パーティションにバイナリ データとして保存されるため、uboot\kernel\rootfs を含むアップグレード ファイルもバイナリ形式で対応するファイルに直接書き込まれます。フラッシュ パーティション。アップグレード方法は基本的に MCU ファームウェアのアップグレード原理と同じです。

通常、BootLoader プログラムでの MCU アップグレードと同様に、uboot でアップグレード パッケージをダウンロードして uboot\kernel\rootfs をアップグレードできます。

ここに画像の説明を挿入します

3.2 アプリケーションのアップグレード

Linuxシステムでは、アプリケーションはファイルシステムに格納され、MCUファームウェアがフラッシュパーティションに格納されるのとは異なり、システム内のファイルである実行可能プログラムファイルとして存在します。

アプリケーションのアップグレード プロセスは、基本的に MCU ファームウェアおよび Linux システムのアップグレードと同じです。アプリケーションのアップグレードでは、実行可能ファイルのアップグレードに加えて、構成ファイルなどもアップグレードできます。

アプリケーションのアップグレード プロセス:

アップグレードパッケージの作成(パッケージ署名ツール)、アップグレードパッケージのダウンロード(ダウンロードツール)、アップグレードパッケージの署名検証、プログラムアップデート

MCU OTA アップグレードとの違い:

アップグレード パッケージを作成する: アプリケーション関連ファイル (実行可能プログラム、ライブラリ ファイル、構成ファイルなど) を圧縮パッケージにパッケージ化し、
全体として署名します。

ここに画像の説明を挿入します

アップグレード パッケージがダウンロードされ、署名検証に合格したら、圧縮パッケージを解凍してアプリケーションの関連ファイルを取得します。

アプリケーションは、MCU アップグレード用の BootLoader プログラムと同様に、スタートアップ スクリプトやスタートアップ プログラムなど、アプリケーションを起動するプログラムを通じて更新できます。

更新方法:

1. 古いプログラムを直接上書きします。

2. 古いプログラムを保持し、新しいプログラムを実装します。

古いプログラムを直接上書きします。

ここに画像の説明を挿入します

古いプログラムを保持し、新しいプログラムを実行します。

ピンポン操作など

ここに画像の説明を挿入します

4. まとめ

OTA アップグレードの核心:

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/qq_41483419/article/details/132365501