コンテンツにスキップ

OTAとDFU

DFU v2は、DFU/OTA更新フロー向けのSiFli-SDKファームウェア更新ミドルウェアです。USB-CDC、BLE、Bluetooth PANの3つの転送経路に対応し、それぞれにユーザーアプリケーションと対応するローダーのサブプロジェクトがあります。

まず、製品の更新経路に合う転送方式を選びます。対応するアプリケーションのサンプルから始めれば、ローダーは自動的にビルドへ組み込まれます。

DFU v2の構成

図: DFU v2のサンプル構成
dfu_v2/
├── cdc/       USB-CDC channel
│   ├── app/       User application and PC update tool
│   └── loader/    CDC DFU loader
├── ble/       BLE channel
│   ├── app/       BLE peripheral application
│   └── loader/    BLE DFU loader
└── bt_pan/    Bluetooth PAN channel
    ├── app/       Application that downloads firmware from a server
    └── loader/    PAN DFU loader

各経路のアプリケーションとローダーは、組み合わせて使うよう設計されています。アプリケーションをビルドすると、SDKはbuilding.pyのAddDFU_*ロジックを使って対応するローダーをサブプロジェクトとして追加するため、ローダーを個別にビルドする必要はありません。BLEサンプルでは、アプリケーションの実行中にHCPU以外のファームウェアイメージを更新できます。HCPUのファームウェアイメージを更新する場合は、ローダーに切り替えて実行します。

互換性と設定

DFU v2は既定で無効です。ミドルウェアの設定でUSING_DFU_V2を明示的に有効にしてください。対象はHCPU(BF0_HCPU)のみで、旧DFUオプションBSP_USING_DFUまたはUSING_DFU_PANとは併用できません。DFU v2を有効にすると、再開可能な転送のためFlashDB(PKG_USING_FLASHDB)が選択されます。

USB CDCとBLEはプッシュ型の転送方式で、相互排他的です。DFU_V2_USE_CDC_TRANSPORTまたはDFU_V2_USE_BLE_TRANSPORTのどちらか一方を選択します。Bluetooth PANはプル型の転送方式です。DFU_V2_USE_PAN_TRANSPORTとデバイス主導モード(DFU_V2_USE_DEVICE_MODE)を有効にし、WebClientを有効にしてください。製品の更新方式を決める前に、対象SDKリリースで利用できる設定を確認してください。

更新経路の選択

表: DFU v2の転送方式の選択
経路 ドキュメントに記載された更新方法 主な用途
USB-CDC PCからUSB仮想シリアルポート経由でデバイスを更新する。 製造、ラボ、有線サービスでの更新。
BLE BLEペリフェラルアプリケーションが更新を受信する。 モバイルアプリから接続中の製品を更新する。
Bluetooth PAN デバイスがBluetooth PANネットワークを使い、HTTPサーバーから更新をダウンロードする。 更新イメージを自ら取得するネットワーク接続製品。

製品更新のレビュー

  • 選択した転送方式が、製品で利用できる接続経路に合っている。
  • アプリケーションと対応するローダーを、一連の更新フローとしてビルド/試験している。
  • 対象ボードがサンプルのREADMEでサポートされていることを確認している。
  • 更新中断時の動作、復旧方法、工場でのサービス手順を定義している。
  • 製品リリースに向け、ファームウェアイメージの真正性と完全性、バージョン方針、パーティション容量を確認している。
  • アプリケーションが正常動作しない場合でも、更新失敗時のログを収集できる。

DFU v2サンプルのビルド

サンプルのproject/ディレクトリで、次のコマンドを実行します。

scons --board=<board-name> -j8

各サンプルのREADMEに対応ボードが記載されています。DFU v2ミドルウェアの設定はSiFli-SDKのmiddleware/dfu_v2にあります。

DFU v2 SDKサンプル

表: SF32LB58x向けSiFli-SDK公式DFU v2サンプル
経路 ユーザーアプリケーション ローダーのサブプロジェクト
USB-CDC cdc/app cdc/loader
BLE ble/app ble/loader
Bluetooth PAN bt_pan/app bt_pan/loader

完全なソース一覧と最新のSDKナビゲーションは、SiFli-SDKのDFU v2サンプルを参照してください。

最終更新: