https://github.com/tlaehdtlr/nrf52_ble_base
nRF5_SDK_17.0.0_9d13099\examples\dfu\secure_bootloader\pca10100_s140_ble 의 예제 코드를 이용하여 secure bootloader 를 만들자
메모리 설정 (bootloader, application, softdevice)
이참에 프로젝트의 board 도 custom board 로 바꿔주자. (bootloader는 버튼 잠시 쓸거라 pca10100)
micro_ecc_lib_nrf52.a library 도 준비해야한다.
~\nRF5_SDK_17.0.0_9d13099\external\micro-ecc 에서 build_all.bat
commit 21 의 결과를 nrf connect 의 programmer 로 확인하면 밑의 그림과 같다. (시각적으로 메모리 영역을 보여주기 위한 그림이고, bootloader setting file 이 없어서 application 으로 주소를 못 옮긴다.)
nrfutil 이용하여 키쌍 만들기 (실제 프로젝트가 아니라서 private 키를 숨기지 않고 git 에 올렸더니 똑똑한 git 이 경고를 줬다.)
nrfutil keys generate base_private.pem
nrfutil keys display --key pk --format code base_private.pem --out_file base_public_key.c
1) settings file
nrfutil settings generate --family NRF52 --application my_base_ble.hex --application-version 1 --bootloader-version 1 --bl-settings-version 2 base_settings.hex
2) merge
mergehex -m my_base_ble.hex my_base_bootloader.hex s140_nrf52_7.0.1_softdevice.hex base_settings.hex -o base_merged.hex
3) zip
DFU 하기 위한 zip file 생성
nrfutil pkg generate --hw-version 52 --sd-req 0xCA --application-version 1 --application my_base_ble.hex --key-file base_private.pem base_dfu_package.zip
nrfutil pkg generate --help
원래 Bootloader 와 OTA DFU 에 대해서도 깊이 있게 다루고자 하였으나 자르고 갈 필요를 느꼈다. secure bootloader, log, OTA DFU 정상 동작하는 것까지만 확인하였다.
(ToDo : Customizing bootloader, handling error of DFU)
devzone 을 통해 현재 SDK 17.0.0 버전에서 업그레이드해라는 조언을 받아서 이걸 먼저 해볼까 고민 중이다... (코드는 그렇다쳐도 포스팅 내용들은 어떻게 해야좋을지;)
Application 부분이 바뀌는게 없어서 굳이 남길 필요가 없을 듯하다. (flash 가 220.3 KB 가 되었긴하다.)
2-1) Nordic의 secure bootloader 튜토리얼
2-2) OTA DFU 시퀀스에 대해 설명들이 많다.
2-3) Bootloader, DFU 모듈에 대한 설명들
2-4) 궁금점이 생겨 처음으로 nordic devzone에 문의하였다.