nRF52832 BLEモジュール向けのセキュアなDFU OTA: hex/zipファイル作成ガイド – Part 1 (ブートローダー&アプリケーション)


今回はnRF52832 BLEモジュール(RaytacのnRF52832モジュールシリーズページへのリンク)を使用する際に、セキュアDFU OTA(無線通信でのファームウェア更新)を実装するためのガイドラインを紹介します。

■環境

IC: nRF52832
DK: PCA10040 (nRF52832用)
SDK: 16.0.0
Softdevice: s132_nrf52_7.0.1_softdevice.hex
IDE: Keil C
PC: Windows 10

 

以下は、RaytacのnRF52832モジュールとSDK 16.0.0を使用して、セキュアDFU OTAを実装するためのガイドラインです。(2つのパートに分かれています)

Part 1. ブートローダー&アプリケーション

 *本記事

Part 2. ビルドファイルの結合

 *次回記事

 

「Bootloader(ブートローダー)」

パス: ..\nRF5_SDK_16.0.0_98a08e2\examples\dfu\secure_bootloader\pca10040_s132_ble\arm5_no_packs
 *特にnRF52832の場合、プログラマーはECC(Elliptic Curve Cryptography)をブートローダーに組み込む必要があります。

 

(1)’micro_ecc_lib_nrf52.lib’ライブラリは以下のパスにありますが、最初に起動する必要があります。

 

 

(2)’micro-ecc-master.zip’を以下のパスに解凍します(最初に新しい「micro-ecc」フォルダを作成してください)。

 

 

(3) ‘gcc-arm-none-eabi-7-2018-q2-update-win32.exe’を実行します。

 

 

(4)Windows 10の環境変数が以下のように設定されていることを確認します。(ステップ1から6に従います)

 

 

(5)DOSを開き、「make」コマンドをarmgccパスで実行して’micro_ecc_lib_nrf52.lib’を生成します。

 

 

(6)‘micro_ecc_lib_nrf52.lib’をフォルダ: nRF_micro-eccに追加します。

 

(7)パブリックキーがない状態でブートローダーをビルドするとエラーが発生する場合があります: (以下のスクリーンショットの赤枠で表示)

 

 

(8) ブートローダーでパブリックキーのファイルを生成する方法: A. パス: ..\Python27\ScriptsでDOSを起動します。
B. 次のコマンドを実行します:

nrfutil keys generate private.pem
nrfutil keys display --key pk --format code private.pem --out_file public_key.c

 

 

(9)(public_key.c) から pk[64] コードを (dfu_public_key.c) にコピーします。
(以下のスクリーンショットの赤枠で表示)

※注意: 生成された3つのファイルを必ず保存してください:

  • private.pem
  • public_key.c
  • dfu_public_key.c

 

(10)コードファイルを再コンパイルしてブートローダーファイル: nrf52832_xxaa_s132.hexを生成します。

 

 

「アプリケーション」

パス:
..\nRF5_SDK_16.0.0_98a08e2\examples\ble_peripheral\ble_app_uart\pca10040\s132\arm5_no_packs
アプリケーションコードをビルドする前に、DFU関連の設定やコードの修正が必要です。

 

(1) C/C++の定義に以下のコードを追加します:

  BL_SETTINGS_ACCESS_ONLY NRF_DFU_SVCI_ENABLED

  NRF_DFU_TRANSPORT_BLE=1
  (合計3つの定義を設定する必要があります)

 

(2) DFUを機能させるために、以下に示す3つのパスをC/C++に追加します。

 

 

(3)以下のスクリーンショット1&2の赤枠内にある.cファイルを追加し、プロジェクトにnRF_DFUとnRF_SVCの2つのグループを追加します。

 

(4) アプリケーションのmain.cファイルにコードを追加します(..\examples\ble_peripheral\ble_app_uart\main.c)。
(参照先: ..\examples\ble_peripheral\ble_app_buttonless_dfuのmain.cファイル)」

 

 

 

(5)アプリケーション内のファイル: sdk_config.h (..\examples\ble_peripheral\ble_app_uart\pca10040\s132\config\sdk_config.h) のコードを修正する必要があります。

 

 

(6)DFUサービスを実装した後、ターゲットのIRAM1値を調整します:
IRAM1の *p_app_ram_start 値を、
デフォルトの 0x20002AD8 0xD528 から 0x20002AE8 0xD518 に修正します。
右下隅の赤枠で示されているように変更します。

これでプログラムが正常に動作し、アドバタイズが成功するはずです。

 

 

(7)アプリケーションコードファイルをビルドした後、nrf52832_xxaa.hex ファイルを作成します。

 

(8)DOSを使用して、nrf52832_bootloader_secure_settings.hex というブートローダー設定ファイルを作成します。
nrfutil settings generate –family NRF52 –application nrf52832_xxaa.hex –application-version 3 —
bootloader-version 2 –bl-settings-version

1 nrf52832_bootloader_secure_settings.hex –no-backup

 

*次の記事は「ビルドファイルの結合」についてです。

nRF52832 BLEモジュール向けのセキュアなDFU OTA: hex/zipファイル作成ガイド – Part 1 (ブートローダー&アプリケーション)” への1件のフィードバック

  1. ピンバック: nRF52832 BLEモジュール向けのセキュアなDFU OTA: hex/zipファイル作成ガイド – Part 2 (ビルドファイルの結合) | Bluetooth®モジュール (BT4.2 / 5 / 5.1 / 5.2 / 5.3 / 5.4)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください