記事のディレクトリ
関連記事
1。「[Nordic] nRF52810 OTAアップグレード(1)-DFU環境のセットアップ」
2。「[Nordic] nRF52810 OTAアップグレード(2)-DFUの使用方法」
3。「[Nordic] nRF52810 OTAアップグレード(3)-DFU理論分析》
1はじめに
この記事は、「[Nordic] nRF52810 OTA Upgrade(1)-DFU Environment Setup」に基づいて、DFUOTAファームウェアアップグレード機能を実現しています。
2.micro_ecc_lib_nrf52.libライブラリを生成します
Nordicは、OTAアップグレードにDFUを使用する場合、ECCを使用してファームウェアを検証および認証するため、DFUプロジェクトで作成する必要がありますmicro_ecc_lib_nrf52.lib
。
-
前の記事でダウンロードした
micro-ecc-master
ソースコードをSDKディレクトリにコピーし、external\micro-ecc
名前を変更しますmicro-ecc
-
Cygwinコマンドラインを開きます
-
micro-eccプロジェクトディレクトリにcdします。
nRF5_SDK_17.0.2_d674dde\external\micro-ecc\nrf52nf_keil\armgcc
-
実行
make
コマンドを
gccのエラーが発生した見つけるために特別な工具がないのでここでは、ファイルを変更します。nRF5_SDK_17.0.2_d674dde\components\toolchain\gcc\Makefile.windows
GNU_INSTALL_ROOT := C:/Program Files (x86)/GNU Tools ARM Embedded/9 2019-q4-major/bin/ GNU_VERSION := 9.2.1 GNU_PREFIX := arm-none-eabi
gccの実際のインストールディレクトリを変更します。
GNU_INSTALL_ROOT := D:/Program Files (x86)/GNU Arm Embedded Toolchain/10 2020-q4-major/bin/ GNU_VERSION := 10.2.1 GNU_PREFIX := arm-none-eabi
再度実行する
make
と、コンパイルは成功します。
3. dfu_public_key.cを生成し、参加します
- 秘密鍵の生成
Dドライブに新しいフォルダーを作成し、 keyという名前を付けて、cmdコマンドに次のように入力します。nrfutil keys generate D:\key\private.key
コマンド、秘密鍵ファイルprivate.keyを生成します。
注:秘密鍵private.keyを保存するには、今後のすべての新しいファームウェアアップグレードに、この秘密鍵で署名する必要があります。失われると、DFUは続行できなくなります。
- 公開鍵の生成公開鍵
を生成するコマンドを入力します。nrfutil keys display --key pk --format code D:\key\private.key --out_file public_key.c
デスクトップで公開鍵public_key.cを生成します。
- プロジェクトに公開鍵を追加します。
公開鍵の名前をpublic_key.cからdfu_public_key.cにnRF5_SDK_17.0.2_d674dde\examples\dfu
変更し、ディレクトリ内のファイルをdfu_public_key.cに置き換えます。
4.ブートローダーをコンパイルします
ここで使用しているnRF52810プラットフォームのため、次のようにdfuブートローダーパスを選択します。
nRF5_SDK_17.0.2_d674dde\examples\dfu\secure_bootloader\pca10040e_s112_ble\arm5_no_packs
コンパイルは成功しました。
5.ブートローダーとSoftDeviceの16進ファイルを書き込む
jlinkを使用して書き込みbootloader
、SoftDevice
:
- ブートローダーを書き込む
nRF5_SDK_17.0.2_d674dde\examples\dfu\secure_bootloader\pca10040e_s112_ble\arm5_no_packs\_build\nrf52810_xxaa_s112.hex
- SoftDeviceを書き込む
nRF5_SDK_17.0.2_d674dde\components\softdevice\s112\hex\s112_nrf52_7.2.0_softdevice.hex
書き込み後、電話にインストールされているnRF Connect
APPを使用してBLEを検索すると、DfuTargがブートローダーモードに入ったことを示しているように見えます。アプリケーションヘクスは書き込まれないため、直接ブートローダーモードになります。
6.OTAアップグレード用のnRFConnect APP
アプリケーションファームウェアを前のプロジェクトでコンパイルされたファームウェアにアップグレードします。nRF5_SDK_17.0.2_d674dde\examples\ble_peripheral\ble_app_uart\pca10040e\s112\arm5_no_packs\_build
-
OTAアップグレードパッケージを作成する
nrfutil pkg generate --hw-version 52 --application-version 1 --application nrf52810_xxaa.hex --sd-req 0x0103 --key-file D:\key\private.key dfufile.zip
-
OTAアップグレードパッケージ
dfufile.zip
を電話にコピーします -
BLEDfuTargを接続します
-
右上隅にある小さなDFUアイコンをクリックして、ZIPファイルを選択します
dfufile.zip
-
アップグレード中…
-
アップグレードが成功し、次の図に示すように、アプリケーションbleのNordic_UARTという名前が表示されます。
7.発生するエラー
-
エラー1
..\..\..\..\..\components\libraries\crypto\backend\micro_ecc\micro_ecc_backend_ecc.h(52): error: #5: cannot open source input file "uECC.h": No such file or directory #include "uECC.h" ..\..\..\..\..\components\libraries\bootloader\dfu\nrf_dfu_validation.c: 0 warnings, 1 error
エラー分析:
プロンプトというuECC.h
ヘッダファイルがされていません。
解決策:
を参照してください2. micro_ecc_lib_nrf52.libライブラリーを生成する問題を解決します。 -
エラー2
compiling dfu_public_key.c... ..\..\..\dfu_public_key.c(20): error: #35: #error directive: "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it" #error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it" ..\..\..\dfu_public_key.c: 0 warnings, 1 error
エラー分析:
有効なDFU暗号公開鍵がありません。
解決策:
を参照してくださいdfu_public_key.cを生成し、追加3.問題を解決するために、それを。