本文將詳述Nordic nRF51系列(包括nRF51822/nRF51802/nRF51422等)和nRF52系列(包括nRF52832/nRF52810/nRF52840)開發環境搭建。如果你英文比較好的話,建議直接閱讀Nordic官方的getting started教程,其中Segger embedded studio開發環境搭建請參考:
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_gsg_ses%2FUG%2Fgsg%2Fintro.html&cp=1_1_0
Keil MDK開發環境搭建請參考:
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_gsg_keil%2FUG%2Fgsg%2Fintro.html&cp=1_1_1
我下面的文章也是對上述兩篇文章的總結和歸納。
1. 強制安裝項
如下工具必須安裝,否則無法開發Nordic nRF51/52產品
1.1 安裝IDE
Nordic nRF51/52支持Keil,GCC,IAR和SES(Segger Embedded Studio)四種IDE,大家隨便選擇其中一種安裝即可。
-
- Keil (僅支持Windows平台) 。大家自行下載安裝,這里不再贅述。
- IAR (僅支持Windows平台)。大家自行下載安裝,這里不再贅述。
- SES(強烈推薦,同時支持Windows,Mac和Linux)。SES跟Keil非常像,是Segger公司為Nordic芯片量身打造的,對Nordic用戶來說,永久免費。另外Nordic后續的nRF91以及nRF53系列產品都會強力支持SES,所以強烈推薦使用SES來開發和調試Nordic產品。SES支持Windows/MacOS/Linux三種平台,下載鏈接為:https://www.segger.com/downloads/embedded-studio。下載成功后,你將得到“Setup_EmbeddedStudio_ARM_v410a_win_x64.exe”之類的安裝包(ARM Windows 64bit 版本,版本號4.10),成功安裝后,SES軟件啟動界面如下所示:
- GCC (同時支持Windows,Mac和Linux)。GCC下載鏈接:https://gcc.gnu.org/。GCC和Eclipse開發環境搭建請參考:https://devzone.nordicsemi.com/tutorials/b/getting-started/posts/development-with-gcc-and-eclipse。
如果你是硬件工程師,IDE不是必須安裝的,因為Nordic SDK所有例子都有已經編譯好的hex文件供你使用。
1.2 安裝nRF Command Line Tools (同時支持Win/Mac/Linux)
nRF5x command line tools包括Jlink驅動以及Nordic自己開發的一些命令行工具,具體包括Jlink驅動,nrfjprog,nrfutil以及mergehex等。下載鏈接為:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Command-Line-Tools/Download#infotabs,選擇自己的平台以及需要的版本:
以Windows系統為例,下載上圖中的紅圈中的win32版本,得到“nRF5x-Command-Line-Tools_9_8_1_Installer.exe”之類的可執行文件,雙擊安裝,界面如下所示:
安裝過程中,不要去更改默認選項,直接按照默認選項去安裝即可。不過如下界面,一定要選擇“select all”
1.3 安裝nRF5 SDK
nRF5 SDK就是一個壓縮包,所以在Windows,MacOS以及Linux系統上都可以運行。SDK包含所有外設的驅動代碼,大量的HAL庫,豐富的應用例子,以及與本版本SDK配套的各種協議棧hex等。SDK下載鏈接為:https://www.nordicsemi.com/Software-and-Tools/Software/nRF5-SDK/Download#infotabs,nRF52系列產品開發請選擇最新版SDK,目前為SDK16.0.0。由於最新版SDK不支持nRF51系列產品,所以開發nRF51系列產品推薦使用SDK12.3.0. 下完之后,你將得到 “nRF5_SDK_15.2.0_9412b96.zip”之類的壓縮包,解壓縮該壓縮包,SDK即安裝完成。SDK16.0.0解壓縮后界面如下所示:
欲了解更多SDK知識,請參考:Nordic nRF5 SDK和softdevice介紹
1.4 SDK插件安裝
下面按照SES,Keil5,Keil4,IAR和GCC等情形分別講述SDK插件的安裝。
1.4.1 SES平台
SES平台無需安裝任何插件。如果要把老的Keil工程(SDK14.0之前的Keil項目)導入到SES中,需要安裝一個package,如下:
另外nRF5 SDK有一個非常重要的配置文件:sdk_config.h,這個文件的格式是按照CMSIS規范來寫的,所以Keil可以原生態的支持這個文件格式,也就是說,Keil用戶可以通過圖形界面去更改sdk_config.h里面的內容,如下所示:
SES用戶可以添加如下腳本,以通過外部工具(CMSIS Configuration Wizard)來圖形化解析sdk_config.h文件:
打開SES,選擇 File -> Open Studio Folder... -> External Tools Configuration,然后tools.xml文件將會打開,在 </tools>行之前插入如下文本 :
<item name="Tool.CMSIS_Config_Wizard" wait="no">
<menu>&CMSIS Configuration Wizard</menu>
<text>CMSIS Configuration Wizard</text>
<tip>Open a configuration file in CMSIS Configuration Wizard</tip>
<key>Ctrl+Y</key>
<match>*config*.h</match>
<message>CMSIS Config</message>
<commands>
java -jar "$(CMSIS_CONFIG_TOOL)" "$(InputPath)"
</commands>
</item>
注意:由於CMSIS Configuration Wizard是一個Java應用程序,所以你必須先安裝Java運行時環境(JRE)才能運行該工具。
然后你可以通過如下界面編輯sdk_config.h文件:
1.4.2 Keil5/Windows平台
ARM CMSIS安裝,CMSIS安裝包下載地址:https://github.com/ARM-software/CMSIS/releases。從如下界面選擇你需要的CMSIS版本。那具體選擇哪個CMSIS版本呢?你可以隨便打開SDK中的一個例子,然后Keil5會告訴你缺少哪個版本的CMSIS(一般來說,缺少的都是CMSIS4.5.0),你再把它下下來即可。
ARM CMSIS4.5.0 Windows/Keil5安裝界面如下所示:
Device family pack(又稱nRF MDK)安裝,nRF MDK下載鏈接為:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-MDK/Download#infotabs,選擇你的IDE和平台(Keil5選擇pack哦,BSD license和Nordic license二選其一即可,SDK17推薦使用BSD license,SDK16推薦使用Nordic license)以及相應的版本(版本選擇說明請見后文),如下:
nRF MDK安裝界面如下所示(安裝過程中有可能會報錯,不要管它!)
這里要特別強調一下Device family pack版本的選擇,不是說選擇最新版本就好,而是要遵循你SDK例子里面Keil工程的提示,Keil提示你選擇哪個版本,你就用那個版本(而不是選擇最新的版本)。比如SDK16.0.0,提示你下載8.27.0版本,那你就下載8.27.0(8.27.1也是可以的,因為兩者是兼容的,但是8.28及以后就不行)。注:你也可以直接打開如下界面去查看本版本SDK例子依賴的device family pack版本,如下所示:
重要提示:請不要讓Keil自動下載Device family pack,請按照上面的方法,手動去官網下載和安裝,否則極有可能出現編譯失敗的情況。
Nordic SDK原生態的例子都是開箱即用,直接就可以編譯和運行的。如果你原生態的SDK例子都會編譯報錯的話,那么很有可能就是device family pack搞錯了,或者可能是你安裝了多個版本的device family pack,但安裝的時候沒有按照“低版本先裝高版本后裝”的順序去裝。此時建議你把所有已經安裝好的device family pack都卸載了(卸載界面見下圖),然后按照低版本先裝高版本后裝的順序,把有關的device family pack都重裝一遍,然后重新把Nordic原始SDK壓縮包解壓,此時再去編譯,應該就不會有問題了。
1.4.3 Keil4/Windows平台
Keil4只需安裝SDK自帶的如下插件即可:
1.4.4 IAR/Windows平台
IAR只需安裝SDK自帶的如下插件即可:
SDK IAR例子默認都使用IAR7進行測試和開發的,由於IAR8和IAR7有一點點不兼容,使用IAR8直接編譯某些帶庫的例子會報錯,請參考SDK目錄:nRF5_SDK_15.x\documentation里面的release_notes.txt中提供的解決方案來解決IAR8編譯報錯問題。
1.4.5 GCC平台
GCC無需安裝任何插件,需要注意的是編譯器的版本以及一些環境變量的設置。另外GCC平台下也可以使用CMSIS Configuration Wizard工具來圖形化配置sdk_config.h文件,命令為:make sdk_config。 注意:由於CMSIS Configuration Wizard是一個Java應用程序,所以你必須先安裝Java運行時環境(JRE)才能運行該命令。
2. 推薦安裝項
- 安卓版nRF connect或者iOS版nRF connect。nRF connect是Nordic開發的一個通用性BLE app,支持BLE掃描,BLE連接,BLE廣播,BLE交互,BLE監視,BLE服務發現等多種功能。iOS版nRF connect請到蘋果app store下載,搜索“nRF”即可以找到。安卓版nRF connect是放在Google play里面的,如果你無法訪問Google play,那么可以到Nordic Github官網上下載,下載鏈接為:https://github.com/NordicSemiconductor/Android-nRF-Connect/releases,安裝成功后,你將看到如下所示的nRF connect。注:nRF connect源代碼是不向用戶開放的。
- 桌面版nRF connect (同時支持Windows/MacOS/Linux平台)。下載鏈接為:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Connect-for-desktop/Download#infotabs,選擇你的平台和版本。
桌面版nRF connect安裝成功后,將如下所示:
確切地說,桌面版nRF connect更像一個容器,它可以裝載各種不同的應用,前面提到的手機版nRF connect只是桌面版nRF connect的一個“Bluetooth Low Energy”應用。點擊“Add/remove apps”,可以安裝或者卸載Nordic其他的應用。另外,你也可以基於桌面版nRF connect(使用HTML5或者Javascript)來開發自己的應用,比如量產測試程序。
注:桌面版nRF connect前身是Master Control Panel(MCP),Nordic現已正式停止對MCP的支持,MCP所有功能都可以通過桌面版nRF connect來取代和實現。
3. 可選安裝項
- 安卓版或者iOS版nRF toolbox。nRF toolbox是Nordic開發的一系列BLE應用集,包括心率應用,藍牙透傳應用,DFU等。iOS版nRF toolbox請到蘋果app store下載,搜索“nRF”即可以找到。安卓版nRF toolbox是放在Google play里面的,如果你無法訪問Google play,那么可以到Nordic Github官網上下載,下載鏈接為:https://github.com/NordicSemiconductor/Android-nRF-Toolbox/releases。nRF Toolbox代碼(包括iOS版和安卓版)是開源的,可以直接到上述Nordic Github上下載。安裝成功后,你將看到如下所示的nRF toolbox:
- nrfjprog(強制安裝,同時支持Windows/MacOS/Linux平台)。nrfjprog是一個命令行工具,通過命令行的方式進行代碼擦除燒寫讀取,芯片復位,存儲器/寄存器訪問等,其使用界面(Windows命令行或者Linux命令行或者MacOS命令行)如下所示:
由於在安裝nRFx command line tools的時候,系統就會自動安裝nrfjprog,因此你不需要再額外安裝nrfjprog。對於Windows系統,nrfjprog將位於如下目錄“C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin” ,你只需在Windows path變量(環境變量)中包含此目錄,就可以直接在Windows CMD中執行nrfjprog命令了。
nrfjprog詳細說明請直接參考help,命令nrfjprog –help,或者參考網上文檔:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrf5x_cltools%2FUG%2Fcltools%2Fnrf5x_nrfjprogexe.html&cp=6_1_3
- nrfutil(強制安裝,同時支持Windows/MacOS/Linux平台)。nrfutil有兩個不兼容的版本:傳統版(版本號0.5.2)和現代版(版本號大於1.5.0)。nrfutil版本是跟SDK版本緊密配合的,不同的SDK版本要求使用不同版本的nrfutil。最新版本的nrfutil支持SDK12.0之后的所有SDK。
- SDK12.0及以后版本SDK,請使用現代版nrfutil。現代版nrfutil支持的功能比較多,包括生成DFU用的zip包,生成settings page,生成密鑰,執行DFU操作等,SDK12.0之后都必須使用現代版nrfutil。現代版nrfutil又包括很多版本,有些老版本的現代版nrfutil跟最新的SDK也是不兼容的,所以務必參考SDK中BootLoader例程的說明文檔,選擇正確版本的nrfutil。現代版nrfutil是通過Python來安裝和使用的,安裝命令:pip install nrfutil(MacOS安裝命令為:pip install --ignore-installed six nrfutil)。另外Windows系統安裝過程中有可能會缺少MSVC,請下載 Visual Studio 2013 或者Visual Studio 2015
- SDK11.0及更早版本SDK,請使用傳統版nrfutil,即0.5.2版,主要用於明文OTA/DFU時生成手機端新固件zip包。安裝nRFgo studio的時候,會自動安裝傳統版nrfutil,傳統版nrfutil所在目錄為“C:\Program Files (x86)\Nordic Semiconductor\nRFgo Studio”。 你只需在Windows path變量(環境變量)中包含此目錄,就可以直接在Windows CMD中執行nrfutil命令了
-
- 記住,傳統版nrfutil和現代版nrfutil是兩個完全不兼容的軟件,使用的時候一定要二選其一。一般來說只有在早期的SDK9/10/11進行明文DFU的時候,才會用到傳統版nrfutil,除此之外,都要使用現代版nrfutil的。可通過“nrfutil version”來得知當前nrfutil的版本號,如果發現nrfutil版本弄錯了,請通過修改Windows path變量(環境變量)來指向正確的nrfutil版本。
nrfutil詳細使用說明請參考:https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_nrfutil%2FUG%2Fnrfutil%2Fnrfutil_intro.html&cp=6_5
- nRFgo studio(僅支持Windows)。圖形化的Flash燒寫工具,以及nRF24系列開發工具,而且還集成有DTM,DFU升級等功能,不過隨着桌面版nRF connect功能越來越多,nRFgo studio越來越被邊緣化,因為nRFgo studio所有功能都可以被桌面版nRF connec所取代,比如Flash燒寫,DFU,DTM等。nRFgo studio下載鏈接為:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRFgo-Studio/Download#infotabs。安裝nRFgo studio的時候,請按照默認選項來安裝(不要去更改默認的安裝目錄!),安裝成功后,界面如下所示:
注:nRFgo studio安裝包也自帶Jlink驅動安裝包,如果你前面通過nRF5x command line tools已經把jlink驅動裝好了,那么安裝nRFgo studio的時候就不要再安裝Jlink驅動了。
- nRF Sniffer。nRF Sniffer用於抓取空中藍牙包以debug通信問題,nRF sniffer包括硬件和軟件兩部分,硬件可以選擇PCA10040開發板,PCA10056開發板,PCA10059 dongle,PCA10028開發板等,硬件連接圖如下所示:
軟件就是Wireshark,界面如下所示:
nRF Sniffer詳細使用說明請參考:https://infocenter.nordicsemi.com/pdf/nRF_Sniffer_UG_v2.1.pdf?cp=6_4_0
【轉】https://www.cnblogs.com/iini/p/9043565.html