OTAとDFU¶
DFU v2は、DFU/OTA更新フロー向けのSiFli-SDKファームウェア更新ミドルウェアです。USB-CDC、BLE、Bluetooth PANの3つの転送経路に対応し、それぞれにユーザーアプリケーションと対応するローダーのサブプロジェクトがあります。
まず、製品の更新経路に合う転送方式を選びます。対応するアプリケーションのサンプルから始めれば、ローダーは自動的にビルドへ組み込まれます。
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リリースで利用できる設定を確認してください。
更新経路の選択¶
| 経路 | ドキュメントに記載された更新方法 | 主な用途 |
|---|---|---|
| USB-CDC | PCからUSB仮想シリアルポート経由でデバイスを更新する。 | 製造、ラボ、有線サービスでの更新。 |
| BLE | BLEペリフェラルアプリケーションが更新を受信する。 | モバイルアプリから接続中の製品を更新する。 |
| Bluetooth PAN | デバイスがBluetooth PANネットワークを使い、HTTPサーバーから更新をダウンロードする。 | 更新イメージを自ら取得するネットワーク接続製品。 |
製品更新のレビュー¶
- 選択した転送方式が、製品で利用できる接続経路に合っている。
- アプリケーションと対応するローダーを、一連の更新フローとしてビルド/試験している。
- 対象ボードがサンプルのREADMEでサポートされていることを確認している。
- 更新中断時の動作、復旧方法、工場でのサービス手順を定義している。
- 製品リリースに向け、ファームウェアイメージの真正性と完全性、バージョン方針、パーティション容量を確認している。
- アプリケーションが正常動作しない場合でも、更新失敗時のログを収集できる。
DFU v2サンプルのビルド¶
サンプルのproject/ディレクトリで、次のコマンドを実行します。
各サンプルのREADMEに対応ボードが記載されています。DFU v2ミドルウェアの設定はSiFli-SDKのmiddleware/dfu_v2にあります。
DFU v2 SDKサンプル¶
| 経路 | ユーザーアプリケーション | ローダーのサブプロジェクト |
|---|---|---|
| USB-CDC | cdc/app |
cdc/loader |
| BLE | ble/app |
ble/loader |
| Bluetooth PAN | bt_pan/app |
bt_pan/loader |
完全なソース一覧と最新のSDKナビゲーションは、SiFli-SDKのDFU v2サンプルを参照してください。
最終更新: