nrf52832 DFU詳細步驟 SDK13

1. 以下是我測試的環境,大家的環境和我的有不同也不需要太擔心,隨機應變。 
環境:win7,64位,IAR集成開發環境
Sdk:nRF5_SDK_13.0.0_04a0bfd
協議棧:s132_nrf52_4.0.2_softdevice.hex
Bootloader工程:secure_dfu_ble_s132_pca10040
application工程:ble_app_buttonless_dfu_pca10040_s132
硬件平臺:pca10040開發板
2. 在做空中升級過程中可能遇到的問題
1.缺少uECC.h文件
2.缺少micro_ecc_lib_nrf52.lib文件
3.出現報錯:#error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it"
4.升級過程中出現:fw version錯誤
3. 安裝所需的軟件
(1)gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe:
https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update
根據提示安裝 4.9-2015-q3-update 版本的 GCC compiler toolchain for ARM
(2)make-3.81.exe:
http://gnuwin32.sourceforge.net/packages/make.htm
(3)python-2.7.12.amd64.msi
https://www.python.org/downloads/
(4)nRFgo Studio
主要提供nrfjprog.exe和mergehex.exe
這兩個軟件在nRFgo Studio的安裝目錄下找到
C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin
安裝之後用cmd輸入nrfjprog和mergehex,查看是否安裝可用
 


(5)oreutils-5.3.0.exe:
http://gnuwin32.sourceforge.net/packages/coreutils.htm

4. 安裝步驟
1.安裝編譯環境:
(1)雙擊安裝make-3.81.exe ,
(2)安裝coreutils-5.3.0.exe,
(3)安裝gcc-arm-none-eabi-4_9-2015q3-20150921-win32.exe 
把路徑Path : C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2015q3\bin;C:\Program Files (x86)\GnuWin32\bin添加到環境變量
 
 (4)安裝python-2.7.12.amd64.msi。
 雙擊python-2.7.12.amd64.msi安裝 ,安裝完畢後,把python的路徑加入到環境變量中
C:\Python27\
C:\Python27\Scripts
進入命令行窗口,併到Python路徑,輸入python -m pip install nrfutil等待安裝完成
 
 nrfutil會被安裝到C:\Python27\Scripts目錄下, 我安裝的nrfutil版本是3.3.0,後面安裝可能會更新,所以可能會遇到版本兼容問題。nrf studio的安裝目錄下也有這個軟件,可以拿來代替。


2.解決缺少uECC.h文件問題
(1)下載micro-ecc:
直接用我下載好的或到官網下載micro-ecc :https://github.com/kmackay/micro-ecc
注意:官網上下載的文件夾名稱的名字要改成micro-ecc
(2)把micro-ecc文件夾複製到nRF5_SDK_13.0.0_04a0bfd\external\micro-ecc目錄下
 
 (3)打開micro-ecc目錄可以看見uECC.h
 
3.解決缺少micro_ecc_lib_nrf52.lib的問題
(1)方法1:雙擊批處理文件nRF5_SDK_13.0.0_04a0bfd\external\micro-ecc\build_all.bat即可生成lib文件;
 
 (2)方法2:也可以進入nRF5_SDK_14.0.0_3bcc1f7\external\micro-ecc\nrf52_keil\armgcc路徑,輸入make 生成lib文件。
 
以上兩種方法都是用到了micro-ecc\nrf52_keil\armgcc\makefile
把生成的micro_ecc_lib_nrf52.lib添加到工程即可。
4. 解決編譯報錯問題
編譯過程中會出現報錯:#error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it",看報錯就知道這是缺少祕鑰造成的,這個故意報錯,需要大家添加一個祕鑰上去。
打開cmd命令行,鍵入一下指令
nrfutil.exe keys generate private.pem
nrfutil.exe keys display --key pk --format code private.pem --out_file public_key.c 
這樣生成的祕鑰就保存在 public_key.c中,打開public_key.c。把數組pk複製到報錯的位置。
 
5. 燒錄協議棧、應用層、bootloader
(1)先要生成bootloader setting, 這個文件包含了app version ,bootloader version , hw version, 等信息。
執行nrfutil.exe settings generate --family NRF52 --application nrf52832_xxaa_app.hex --application-version 3 --bootloader-version 2 --bl-settings-version 1 bootloader_settings.hex
 
 (2)合併所有文件,注意自己的hex文件名。
合併BootLoader文件和softdevice文件:mergehex.exe --merge nrf52832_xxaa_bootloader.hex s132_nrf52_4.0.2_softdevice.hex --output production_final1.hex 
將上一個合併文件與app程序合併:mergehex.exe --merge production_final1.hex nrf52832_xxaa_app.hex --output production_final2.hex
將上一個合併文件與配置settings 文件合併:mergehex.exe --merge production_final2.hex bootloader_settings.hex --output production_final.hex
刪除:del production_final1.hex
刪除:del production_final2.hex
 
最後生成燒錄文件production_final.hex
(3)燒錄一個文件即可,燒錄前先用nRFgo Studio擦除芯片。
nrfjprog -f NRF52 --eraseall
nrfjprog -f NRF52 --program "production_final.hex" --verify
nrfjprog -f NRF52 --reset
 
 
 這時打開手機app nRF Connect即可看到程序中設置的藍牙名稱的設備了。
 (4)打包OTA所需的zip文件。這裏只介紹升級應用層,至於升級bootloader和協議棧下次有空再研究。
執行nrfutil pkg generate --hw-version 52 --sd-req 0x98 --application-version 0xff --application nrf52832_xxaa_app.hex --key-file private.pem nrf52832_xxaa_app.zip
 
--sd-req 0x98 : 0x98是 協議棧版本,如下圖所示
 
--application-version 0xff :0xff是應用層版本。 
 --key-file private.pem 這個是"解決編譯報錯問題 "中生成的祕鑰文件。


6. 手機空中升級的實現
(1)連接藍牙
 
(2)點擊圓圈處
 
(3)發送請求,設備將復位並進入bootloader狀態。
 
(4)發送完以後,可以看到名爲DFUTARG的設備,說明此時設備進入bootloader 狀態。連接藍牙DfuTarg設備。
 
(5)點擊右上角的DFU按鈕,選擇zip文件,開始升級
      
 
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章