本文将详述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