本文將詳述Nordic nRF51系列(包括nRF51822/nRF51802/nRF51422等)和nRF52系列(包括nRF52832/nRF52810/nRF52840)開發環境搭建。若是你英文比較好的話,建議直接閱讀Nordic官方的getting started教程,其中Segger embedded studio開發環境搭建請參考:html
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_gsg_ses%2FUG%2Fgsg%2Fintro.html&cp=1_1_0
java
Keil MDK開發環境搭建請參考:git
https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_gsg_keil%2FUG%2Fgsg%2Fintro.html&cp=1_1_1
github
我下面的文章也是對上述兩篇文章的總結和概括。app
1. 強制安裝項
以下工具必須安裝,不然沒法開發Nordic nRF51/52產品eclipse
1.1 安裝IDEjsp
Nordic nRF51/52支持Keil,GCC,IAR和SES(Segger Embedded Studio)四種IDE,你們隨便選擇其中一種安裝便可。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)post
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平臺
通常能夠經過Keil pack installer以下界面,把相應的CMSIS和Device family pack(又稱nRF MDK)安裝好。
因爲某些緣由,不少用戶在上述界面沒法安裝,所以能夠將CMSIS和Nordic Device family pack(又稱nRF MDK)從網上下載下來,單獨安裝。
ARM 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版本的選擇,與此相似,Keil提示你選擇哪一個版本,你就選擇哪一個版本(而不是選擇最新的版本)。好比SDK16.0.0,提示你下載8.27.0版本,那你就下載8.27.0(8.27.1也是能夠的,由於二者是兼容的,可是8.28及之後就不行)。nRF MDK下載連接爲:https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-MDK/Download#infotabs,選擇你的IDE和平臺(Keil5選擇pack哦,BSD license和Nordic license二選其一便可,推薦使用Nordic license(SDK16只能使用Nordic license)),以下:
nRF MDK安裝界面以下所示(安裝過程當中有可能會報錯,不要管它!)
若是你電腦上同時下載了多個版本的SDK,那麼頗有可能把device family pack版本搞混。若是你的原始SDK例子都會編譯報錯的話,那麼建議你把全部已經安裝好的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