[메모] BLE Nano(nRF51822) 무선으로 펌웨어 업데이트(OTA-DFU)

6005 단어 nRF51822BLEnanoBLE

개요


  • 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
  • RF51_SDK_10.0.0_dc26b5 에. 지 p

  • nRFgo Studio
  • nrfutil.exe : C:\Program Files (x86)\Nordic Semiconductor\nRFgo Studio\
  • mergehex.exe : C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin


  • 절차



    DFU 부트 로더 만들기



  • RF51_SDK_10.0.0_dc26b5 에. 지 p 다운로드 및 압축 해제
  • 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 시작
  • 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)
    

  • 빌드 [F7] => _build/nrf51422_xxac.hex 수 있습니다

  • SoftDevice의 HEX와 병합
    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
    
  • OUT_DFU_BL.HEX를 구워서 시작하고 스마트 폰의 BLE 앱 (nRF Connect)으로 검색하여 보면 DfuTarg라는 것이 보인다

  • 테스트 - nRF Tools에 대한 샘플 펌웨어로 업데이트


  • nRF Tools 열기
  • DFU
  • Select File를 눌러 hrs_dfu_s110_8_0_sdk_8_0.zip를 선택하고 오른쪽 상단의 Done
  • [SELCT DEVICE]를 선택하고 DfuTarg를 선택
  • 중간에있는 Upload를 누르면 업로드가 시작됩니다.

  • nRF Tools의 최상위 메뉴에서 HRM => [CONNECT]에서 장치 선택. Nordic_HRM (이름은 DfuTarg 그대로있을 수 있지만 스마트 폰이 캐시하고 있습니까??)
  • 또한 DFU에서 Nordic_HRM를 선택하여 업그레이드 할 수 있습니다.


  • 자체 제작 응용 프로그램에서 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
    


  • 기타



  • 프로젝트 유형

    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 페이지로 링크) => 참조

    듀얼
    Single

    플래시 메모리 매핑의 차이 (주소는 S110v8.0이라고 조금 다를 것)






    라는 것은, 듀얼이라고,
  • 어플리케이션에 사용할 수 있는 영역은 절반! ?
  • 새로운 펌웨어를 Swap 곳에 읽어들인 다음, 업데이트하기 때문에 안전.
  • (BLE (OTA)는 듀얼 전용입니까?)

  • 마찬가지로 직렬 케이블을 통해 nRFgo Studio에서 업데이트 할 수 있습니다.

    소스는 파이썬으로 나왔다. C에 이식하여 Cortex-M3 기반 호스트에서 업데이트라는 것도 가능했다.
  • 좋은 웹페이지 즐겨찾기