2018年4月16日 星期一

Nordic nRF52832 DFU介紹

什麼是DFU?就是Device Firmware Update 。Nordic提供nRF Toolbox APP可以在Play商店下載。可以經由over-the-air(OTA)方式來更新程式。
Screenshot_20180222-131341
如何讓你裝置有DFU功能?可以分成三個部份。
1.先修改Bootloader程式,因為有專屬private key
2.燒錄檔.hex轉成.zip
3.利用nRF Toolbox的DFU來更新程式
Bootloader程式,請參考nRF5-SDK-zip 的examples/duf/bootloader_secure_ble的範例。我是用Keil去編譯,出現錯誤,如下。
dfu-1
顯示錯誤訊息如下
#error “Debug public key not valid for production. Please see https://github.com/NordicSemiconductor/pc-nrfutil/blob/master/README.md to generate it"
點選以上網址,根據網頁內容步驟去執行,步驟如下。
1.下載pc-nrfutil 的檔案。
3.安裝pip
4.在Windows系統,新增環境變數內系統變數的Path路徑如下。
C:\Python27\Scripts;C:\Python27\;
5.接下來的指令都是在DOS畫面下執行,請在開始的搜尋檔案處,打上cmd,就會出現如下圖示。
dos
6.Installing from PyPi ,請在DOS畫面輸入以下指令
pip install nrfutil
7.PyInstall,請在DOS畫面輸入以下指令
pip install pyinstaller
8.在DOS畫面,跳到下載pc-nrfutil檔案的pc-nrfutil-master資料夾下,執行以下的指令
pip install -r requirements.txt
python nordicsemi/__main__.py
python setup.py install
pyinstaller nrfutil.spec
9.產生key.pem,請在DOS畫面輸入以下指令,請把key.pem存到pc-nrfutil-master\nordicsemi\dfu\tests下。
nrfutil keys generate key.pem
10.把key.pem轉換成code ,請在DOS畫面輸入以下指令。把code如下圖紅色框框,複蓋到SDK的dfu_public_key.c
nrfutil keys display --key pk --format code key.pem
keypem
11.Keil編譯應該就可以成功了。
12.利用nRFgo Studio軟體把.hex燒錄到板子上,先燒錄SoftDevice,再燒錄Application,最後才燒錄Bootlader。這樣機板就有DFU功能。
13.把.hex轉成.zip檔案,請在DOS畫面輸入以下指令,選用nRF52xxx系列–hw-version 就填52,--sd-req 請參考下圖,--application填寫要燒錄的檔案名稱,--key-file key.pem就是dfu_public_key.c,不同key.pem就無法DFU,這一點要特別注意。app_dfu_package.zip是你要轉出的.zip檔案,名稱可以自訂。
nrfutil pkg generate --hw-version 52 --sd-req 0x9D --application-version 4 --application app.hex --key-file key.pem app_dfu_package.zip
SoftDevice
14.打開手機的nRF Toolbox APP,選擇DFU,把app_dfu_package.zip上傳到手機,選擇藍芽裝置,就可以更新程式了。
PS.  藍芽裝置要先進入Bootloader才可以DFU,藍芽裝置按住按鍵再上電就可以進入Bootloader。
#CSR #CSR8635 #藍芽 #藍芽立體聲喇叭 #電子外包 #PCB LAYOUT #電子設計 #學生專題製作#電路設計 #數位線路 #類比線路 #單晶片程式設計

沒有留言:

張貼留言