nrf52832開發之DFU基本攻略

一、DFU必備工具
1.micro-ecc源碼
nordic的DFU採用了micro-ecc實現ECDSA算法,需要用到micro-ecc源碼
2.gcc-arm-none-eabi-6-2017-q2-update-win32
編譯micro-ecc源碼
3.Cygwin
Windows下實現Makefile,爲後續編譯micro_ecc_lib_nrf52.lib準備
4.nRF5x-Command line tools
主要需要用到mergehex和nrfjprog兩個命令
5.python2.7
用來安裝nrfutil
6.MDK-ARM 5.23
Keil MDK集成開發環境,編譯Bootloader和應用程序
7.nRF Connect for Mobile_v4.11.0.apk
Nordic發佈的手機端調試APP,可用來執行DFU

二、工具下載
百度雲鏈接:https://pan.baidu.com/s/1ygd9giSs7InIgmVgk_lF8A

三、工具安裝
1.micro-ecc源碼
將micro-ecc源碼拷貝至sdk源碼路徑:nRF5_SDK_15.2.0_9412b96\external\micro-ecc下即可
2.gcc-arm-none-eabi-6-2017-q2-update-win32
這個交叉編譯軟件直接雙擊根據提示安裝即可,記住安裝路徑後面需要用到
3.Cygwin

雙擊軟件,然後點擊下一步,彈出以下界面

選擇第一個,聯網下載並安裝組件,點擊下一步

設置安裝路徑,點擊下一步

設置下載的組件要保存的本地路徑,點擊下一步

選擇網絡連接方式,選第二個,點擊下一步

添加國內鏡像,這裏添加了阿里雲鏡像http://mirrors.aliyun.com,點擊下一步

這裏我們切換Pending到Full,然後Search欄內輸入make,如下

點擊下一步完成make組件的安裝,至此就是Cygwin的基本安裝的流程。

4.nRF5x-Command line tools

這個軟件雙擊根據提示點擊安裝即可

5.python2.7

python2.7的安裝過程很簡單,根據提示點擊安裝即可,主要有以下兩點需要注意:

1)添加安裝路徑至系統的環境變量

C:\installPath\python2.7.14;C:\installPath\python2.7.14\Scripts這是我需要添加的路徑

2)python的安裝和環境變量的配置完成後,打開cmd窗口輸入python -V出現如下提示即說明安裝成功

最後我們需要鍵入pip install nrfutil安裝nrfutil工具,安裝完成後,鍵入nrfutil出現如下提示即說明nrfutil安裝成功

6.MDK-ARM 5.23的安裝請移步https://blog.csdn.net/qq_33575901/article/details/89643818

7.nRF Connect for Mobile_v4.11.0.apk安裝至安卓手機即可

四、DFU相關工程編譯和無線DFU操作

1.編譯bootloader程序

以官方例程nRF5_SDK_15.2.0_9412b96\examples\dfu\secure_bootloader\pca10040_ble\arm5_no_packs爲例:

初次編譯這個例程會出現如下錯誤

提示缺少micro_ecc_lib_nrf52.lib文件,故而我們下載的Cygwin就派上用場了,分兩步解決:

1)修改Makefile關於交叉編譯軟件的使用,我的修改如下

2)打開Cygwin終端cd到nRF5_SDK_15.2.0_9412b96/external/micro-ecc/nrf52hf_keil/armgcc目錄執行make即可解決報錯問題

接下來需要生成我們的公私密鑰對,即bootloader程序用到的公鑰和應用程序用到的私鑰,執行以下命令:

nrfutil keys generate priv.pem //生成私鑰
nrfutil keys display --key pk --format code priv.pem --out_file dfu_public_key.c //生成公鑰

然後用dfu_public_key.c替換工程中如下文件,重新編譯工程,下載協議棧和工程hex文件至nordic開發板

如下爲手機端nRF Connect app掃描到的下載了bootloader程序的開發板

2.編譯應用程序

以官方例程D:\bluetooth_dogChain\sdk\nRF5_SDK_15.2.0_9412b96\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040\s132\arm5_no_packs爲例

直接編譯即可

3.開始DFU階段

1)創建一個DFU目錄

2)將編譯bootloader生成的hex文件重命名爲bootloader.hex,編譯應用程序生成的hex文件重命名爲app.hex,還有協議棧hex文件s132_nrf52_6.1.0_softdevice.hex(nRF5_SDK_15.2.0_9412b96\components\softdevice\s132\hex目錄下),祕鑰文件priv.pem放到此目錄

3)執行以下命令打包需要通過DFU更新的應用程序

nrfutil pkg generate --hw-version 52 --application-version 1 --application app.hex --sd-req 0xAF --key-file priv.pem dfufile.zip

4)將dfufile.zip通過QQ或者微信發送至手機

5)手機打開nRF Connect app,連接名稱爲DfuTarg的開發板

6)如下截圖,點擊1處彈出菜單,然後使能CCCDs,最後點擊3處DFU圖標選擇我們下載的dfufile.zip文件升級即可

截圖一張升級進度圖

升級至完成(整個過程大概20多秒左右),最後重新打開nrf Connect app可以看到開發板已經跑到應用程序裏面了,如下截圖

最後奉上在Cygwin下對nordic開發板基本的DFU操作命令封裝腳本,有意者自取:https://pan.baidu.com/s/1Z95EbqnUHszbWXk4xZdCXA

至此,本文關於DFU基本攻略介紹完畢,萬事開頭難,不容易啊老鐵,點個讚唄,各位看官

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