nrf52810DFU OTA空中升級教程

nrf52810爲nordic支持藍牙 5.0性價比最高的一款芯片,不過這個芯片的rom不得不吐槽下,只有192KB,不知道爲什麼定了個192,而不是大家所熟悉的256KB,估計價格是個原因吧,15.2的協議棧中S112 softdevice佔用了100KB,只剩92KB了,後面還要減掉bootloader的大小,所以給用戶使用的空間並不大,15.2中pca10040e爲52810的工程

1,需要用到的工具

(1)GCC,下載路徑 https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads/6-2017-q2-update

軟件安裝好,需要把安裝路徑下bin的路徑,添加到環境變量中,根據自己安裝的路徑找到添加C:\ProgramFiles (x86)\GNU Tools ARM Embedded\6 2017-q2-update\bin
 

(2) 安裝make,下載路徑  https://www.gnu.org/software/make/

    軟件安裝好,需要把安裝路徑下bin的路徑,添加到環境變量中,根據自己安裝的路徑找到添加C:\ProgramFiles            (x86)\GnuWin32\bin

(3)python-2.7.12.amd64.msi下載路徑 https://www.python.org/downloads/

     雙擊python-2.7.12.amd64.msi安裝 ,安裝完畢後,把python的路徑加入到環境變量中  

  1. C:\Python27\

  2. C:\Python27\Scripts

(4)

以下軟件:nrfjprog.exe,mergehex.exe 這兩個軟件需要安裝 nRFgo Studio的安裝目錄下找到

C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin

2,

進入命令行窗口,併到Python路徑,輸入python -m pip install nrfutil

nrfutil會被安裝到C:\Python27\Scripts目錄下, 我安裝的nrfutil版本是4.0.0,後面安裝可能會更新

3,缺少uECC.h

 

下載micro-ecc:到官網下載micro-ecc :https://github.com/kmackay/micro-ecc

把micro-ecc文件夾複製到

nRF5_SDK_15.2.0_9412b96\external\micro-ecc目錄下

4,缺少micro_ecc_lib_nrf52.lib

雙擊批處理文件nRF5_SDK_15.2.0_9412b96\external\micro-ecc\build_all.bat即可生成lib文件;

把生成的micro_ecc_lib_nrf52.lib添加到工程即可,

5,編譯報錯

#error "Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it",
缺少祕鑰造成的,需要大家添加一個祕鑰上去

寫一個批處理文件

nrfutil.exe keys generate private.pem

nrfutil.exe keys display --key pk --format code private.pem --out_file dfu_public_key.c

將nRF5_SDK_15.2.0_9412b96\examples\dfu目錄下的dfu_public_key.c直接替換掉

6,燒錄協議棧,APP,bootloader

app爲nRF5_SDK_15.2.0_9412b96\examples\ble_peripheral\ble_app_buttonless_dfu\pca10040e\s112\arm5_no_packs目錄下的工程,大家直接編譯就OK了

(1) 先要生成bootloader setting

執行nrfutil.exe settings generate --family NRF52810 --application nrf52810_xxaa.hex --application-version 3 --bootloader-          version 2 --bl-settings-version 1 bootloader_settings.hex

(2)合併bootloader和協議棧

mergehex.exe --merge nrf52810_xxaa_bootloader_s112.hex s112_nrf52_6.1.0_softdevice.hex --output btAndSd.hex

(3)合併 btAndSd.hex和APP

mergehex.exe --merge btAndSd.hex nrf52810_xxaa.hex --output btAndSdAndApp.hex

(4)合併btAndSdAndApp.hex和bootloader_settings.hex

      mergehex.exe --merge btAndSdAndApp.hex bootloader_settings.hex --output burn.hex

(5)燒錄

nrfjprog -f NRF52 --eraseall
nrfjprog --program "burn.hex" --verify
nrfjprog -f NRF52 --reset
pause

燒錄完成後拿手機搜索下,可以看到如下設備的廣播

7,生成空升文件

nrfutil pkg generate --hw-version 52 --sd-req 0xb0 --application-version 0xff --application nrf52810_xxaa.hex --key-file private.pem nrf52810_xxaa.zip

private.pem文件爲第5步中生成的

8,開始用手機空升設備

(1)連接藍牙

(2)點擊圖示地方

(3)繼續點擊圖示

(4)點擊send

此時手機藍牙會自動斷開,從新搜索會看到名爲DFUTARG的設備,連接成功後點擊右上角的DFU圖標

然後選擇空升文件,開始升級

如果安卓升及失敗請用最新4.2及以爲的nrf connect,4.1版本會升級失敗

燒錄及生成各種文件下載地址:

https://download.csdn.net/download/htaijqq/10792989

nrf connect 4.2下載地址

https://download.csdn.net/download/htaijqq/10790348

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