Nordic SDKを使ったnRF52でのSecureDFUの方法

nRF52832が搭載されているMDBT42QとNordicSDKを利用して、SecureDFUをする方法を書きます。

前準備

こちらができていることが前提なので、まずはこちらの記事をどうぞ!
JLINKとNordic SDKを使ったnRF52開発方法

準備物

  • nrfutil (python2.7以上と対応したpip、Python3は使用不可)

書き込み用のプログラムの準備

SecureDFUであるため、公開鍵の生成と署名が必要になります

鍵の生成

秘密鍵の生成

コマンド
nrfutil keys generate private.pem

公開鍵の生成

コマンド
nrfutil keys display --key pk --format code private.pem

プログラムに直接組み込むことになるため(ハードコードされてるため)、拡張子が.cのファイルが生成されます

Embedded Studioでのプログラム書き出し

まずは、書き出したいプログラムをEmbedded Studioで開き、ナビゲーションバーからBuild->Build Solutionを選択します。

hexファイルがプロジェクトファイルと同じディレクトリ上に生成されます。

ディレクトリ
some-app/pca10040/s132/ses/Output/Release

DFU用のファイルを生成

生成されたhexファイルをDFU用のzipファイルにコンバートします。

コマンド
nrfutil pkg generate --hw-version 52 --sd-req 0xAF,0xA8,0xA5,0x9D,0xA9,0xAE --application-version 1 --application {{path_to_file.hex}} --key-file {{path_to_private.key}} {{package_name_you_want.zip}}

これで秘密鍵で署名されたDFU用のファイルが生成されます。

ブートローダの書き込み

まずは、NordicSDKのパッケージ内の

ディレクトリ
NordicSDK/examples/dfu/secure_bootloader/pca10040_ble/ses

のプロジェクトをEmbedded Studioで開きます。

dfu_public_key.cの中身を先程生成した公開鍵のc言語のソースコードに上書きします。

プロジェクトをコンパイルし、JLINKを介して書き込みします。
これでOKです。

書き込み手順

Nordicが提供している「nRF Toolbox」「nRF Connect」を使用して書き込みます。

nRF Toolbox

nRF Toolbox

Nordic Semiconductor ASA無料posted withアプリーチ

コメントを残す

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