11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[メモ] BLE Nano(nRF51822) 無線でファームウェアアップデート(OTA-DFU)

Last updated at Posted at 2016-07-23

概要

  • nRF51822のDFU bootloaderサンプルを入れて、スマホアプリnRF ToolsのDFUから、OTAアップデートをする。
  • ちなみに、OTA = Over The Air 無線で。

環境

  • BLENano (nRF51822)
  • SoftDevice S110 v8.0 (nRF51SDK v10.0付属)
  • nRF Tools (スマホアプリ - iPhone使ってます)
  • MDK-ARM Lite v5.18
  • nRF51_SDK_10.0.0_dc26b5e.zip
  • nRFgo Studio
    • nrfutil.exe: C:\Program Files (x86)\Nordic Semiconductor\nRFgo Studio\
    • mergehex.exe: C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin

手順

DFUブートローダの作成

  1. nRF51_SDK_10.0.0_dc26b5e.zipをダウンロードして、解凍

  2. nRF51_SDK_10.0.0_dc26b5e\examples\dfu\bootloader\ ここらへんがDFU ブートローダ関連。

    => nRF51_SDK_10.0.0_dc26b5e\examples\dfu\bootloader\pca10028\dual_bank_ble_s110\arm5_no_packs\dfu_dual_bank_ble_s110_pca10028.uvprojxをダブルクリックして、MDK-ARMを立ち上げる

  3. nrf51422_xxac/Application/main.cを開いて、必要あれば、ボタンとか、LEDのあたりのポート番号を直す。

    • BOOTLOADER_BUTTONは、BSP_BUTTON_3 => BUTTON_4 => 20で、 BLENanoには関係なさそうなのでほっとく。ボタンつけたら、そのポート番号へ。
    • ボタンを押しながら起動で、DFUモードになる、ってことができる。
    main.c...LED周りだけ直す。といっても、書き込み中点灯、書き込み終了で消灯くらいだけど。

define BOOTLOADER_BUTTON BSP_BUTTON_3 /**< Button used to enter SW update mode. */

define UPDATE_IN_PROGRESS_LED BSP_LED_2 /**< Led used to indicate that DFU is active. */

//For BLENano

undef UPDATE_IN_PROGRESS_LED

undef LED_START

undef LED_STOP

undef LEDS_MASK

define UPDATE_IN_PROGRESS_LED (19)//P0_19 BLENano本体のLED.

define LED_START (19)

define LED_STOP (19)

define LEDS_MASK (1<<19)

4. ビルド `[F7]`<br>=> `_build/nrf51422_xxac.hex` ってのができる
5. SoftDeviceのHEXとマージする

    ```bat
    rem プロジェクトのあるフォルダに移動して.
    cd C:\BLE\nRF51_SDK_10.0.0_dc26b5e\examples\dfu\bootloader\pca10028\dual_bank_ble_s110\arm5_no_packs\
    rem HEXマージ => OUT_DFU_BL.HEXができる。
    "C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin\mergehex.exe" -m ..\..\..\..\..\..\components\softdevice\s110\hex\s110_nrf51_8.0.0_softdevice.hex _build\nrf51422_xxac.hex -o OUT_DFU_BL.HEX
  1. OUT_DFU_BL.HEXを焼いて起動して、スマホのBLEアプリ(nRF Connect)とかで検索かけてみると、DfuTarg というのが見える

テスト - nRF Toolsについてきてる、サンプルファームウェアでアップデート

  1. nRF Toolsを開く
  2. DFU
  3. Select Fileを押して、hrs_dfu_s110_8_0_sdk_8_0.zipを選択して、右上の Done
  4. [SELCT DEVICE]をおして、DfuTargってのを選択
  5. 真ん中辺りにあるUploadを押すと、アップロードが始まる

    IMG_5868.PNG
  6. nRF Toolsのトップメニューから、HRM => [CONNECT]からデバイス選択。Nordic_HRM(名前は、DfuTargのままかもしれないけど、スマホがキャッシュしてる??)
  7. さらに、DFUで、Nordic_HRMを選択して、アップグレードできる

    IMG_5869.PNG

自作のアプリケーションでのzipパッケージ作成

  • nrfutil.exeを使って、zipのパッケージを作る。

nrfutil.exe dfu genpkg application.zip --application dfu_test_app_hrm.hex --dev-revision 0xffff --dev-type 0xffff --sd-req 0x0064



## その他
1. プロジェクトの種類
 

    ```txt:nRF51_SDK_10.0.0_dc26b5e\examples\dfu\bootloader\pca10028
dual_bank_ble_s110
dual_bank_ble_s130
dual_bank_ble_s310
dual_bank_serial_s110
dual_bank_serial_s130
dual_bank_serial_s310
single_bank_serial_s110
single_bank_serial_s130
single_bank_serial_s310
- ble/serial : BLEのOTA経由 / シリアルケーブル経由 
- s110/s130/s310 : SoftDeviceの違い
- dualとsingle bank: (図はNordicのページへリンク) [=>参照](http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk51.v10.0.0%2Fbledfu_memory_banks.html&cp=6_0_1_4_3_1_3_1)
Dual Single
Flashのメモリマッピングの違い
(アドレスはS110v8.0だとちょいと違ったはず)
DualBank SingleBank
ということは、Dualだと、 - アプリケーションに使える領域は半分!? - 新しいファームウェアのをSwapのところに読み込んで、それから、アップデートするので安全。 - (BLE(OTA)は、Dualのみ?)
  1. 同様にシリアルケーブル経由でのnRFgo Studioからアップデートもできる。
    nRFgoStudio_nRF5xBootloader.png 
    ソースは、Pythonででてた。Cに移植して、Cortex-M3ベースのホストからアップデートというのもできた。
11
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?