1. Home
  2. 博客

    Nordic nRF5 SDK开发环境搭建(nRF51/nRF52芯片平台)

Nordic nRF5 SDK开发环境搭建(nRF51/nRF52芯片平台) 2023-07-01

该文章详细介绍了如何为Nordic nRF51和nRF52系列微控制器设置开发环境。它涵盖了安装必要工具的步骤,包括IDE(Keil、IAR、Segger Embedded Studio和GCC)、nRF命令行工具以及nRF5 SDK。

The nRF5 SDK is in maintenance mode, see nRF Connect SDK and nRF5 SDK statement for more info. For new projects, we recommend the nRF Connect SDK.

本文将详述Nordic nRF51系列(包括nRF51822/nRF51802/nRF51422等)和nRF52系列(包括nRF52832/nRF52810/nRF52840/nRF52833/nRF52820/nRF52811/nRF52805等)nRF5 SDK开发环境搭建。如果你英文比较好的话,建议直接阅读Nordic官方的getting started教程,其中Segger embedded studio开发环境搭建请参考:

Keil MDK开发环境搭建请参考:

我下面的文章也是对上述两篇文章的总结和归纳。

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三种平台,下载链接为:

下载成功后,你将得到“Setup_EmbeddedStudio_ARM_v410a_win_x64.exe”之类的安装包(ARM Windows 64bit 版本,版本号4.10),成功安装后,SES软件启动界面如下所示:

nRF51 nRF52 Nordic SDK5

如果你是硬件工程师,IDE不是必须安装的,因为Nordic SDK所有例子都有已经编译好的hex文件供你使用。

1.2 安装nRF Command Line Tools (同时支持Win/Mac/Linux)

nRF5x command line tools包括Jlink驱动以及Nordic自己开发的一些命令行工具,具体包括Jlink驱动,nrfjprog,nrfutil以及mergehex等。下载链接为:

选择自己的平台以及需要的版本:

nRF51 nRF52 Nordic SDK5

以Windows系统为例,下载上图中的红圈中的win32版本,得到“nRF5x-Command-Line-Tools_9_8_1_Installer.exe”之类的可执行文件,双击安装,界面如下所示:

nRF51 nRF52 Nordic SDK5

安装过程中,不要去更改默认选项,直接按照默认选项去安装即可。不过如下界面,一定要选择“select all”

nRF51 nRF52 Nordic SDK5

1.3 安装nRF5 SDK

nRF5 SDK就是一个压缩包,所以在Windows,MacOS以及Linux系统上都可以运行。SDK包含所有外设的驱动代码,大量的HAL库,丰富的应用例子,以及与本版本SDK配套的各种协议栈hex等。

SDK下载链接为:

nRF52系列产品开发请选择最新版SDK,最新版本为nRF5 SDK v17.1.0。由于最新版SDK不支持nRF51系列产品,所以开发nRF51系列产品推荐使用nRF5 SDK v12.3.0. 下完之后,你将得到 “nRF5_SDK_17.1.0_ddde560.zip”之类的压缩包,解压缩该压缩包,SDK即安装完成。SDK17.1.0解压缩后界面如下所示:

nRF51 nRF52 Nordic SDK5

欲了解更多SDK知识,请参考:

1.4 SDK插件安装

下面按照SES,Keil5,Keil4,IAR和GCC等情形分别讲述SDK插件的安装。

1.4.1 SES平台

SES平台无需安装任何插件。如果要把老的Keil工程(SDK14.0之前的Keil项目)导入到SES中,需要安装一个package,如下:

nRF51 nRF52 Nordic SDK5

另外nRF5 SDK有一个非常重要的配置文件:sdk_config.h,这个文件的格式是按照CMSIS规范来写的,所以Keil可以原生态的支持这个文件格式,也就是说,Keil用户可以通过图形界面去更改sdk_config.h里面的内容,如下所示:

nRF51 nRF52 Nordic SDK5

SES用户可以添加如下脚本,以通过外部工具(CMSIS Configuration Wizard)来图形化解析sdk_config.h文件:

打开SES,选择 File -> Open Studio Folder... -> External Tools Configuration,然后tools.xml文件将会打开,在 行之前插入如下文本:

<item name="Tool.CMSIS_Config_Wizard" wait="no">
  <menu>&amp;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 &quot;$(CMSIS_CONFIG_TOOL)&quot; &quot;$(InputPath)&quot;
  </commands>
</item>

注意:由于CMSIS Configuration Wizard是一个Java应用程序,所以你必须先安装Java运行时环境(JRE)才能运行该工具。

然后你可以通过如下界面编辑sdk_config.h文件:

nRF51 nRF52 Nordic SDK5

1.4.2 Keil5/Windows平台

ARM CMSIS安装,CMSIS安装包下载地址:

从如下界面选择你需要的CMSIS版本。那具体选择哪个CMSIS版本呢?你可以随便打开SDK中的一个例子,然后Keil5会告诉你缺少哪个版本的CMSIS(一般来说,缺少的都是CMSIS4.5.0),你再把它下下来即可。

nRF51 nRF52 Nordic SDK5

ARM CMSIS4.5.0 Windows/Keil5安装界面如下所示:

nRF51 nRF52 Nordic SDK5

Device family pack(又称nRF MDK)安装,nRF MDK下载链接为:

选择你的IDE和平台(Keil5选择pack哦,BSD license和Nordic license二选其一即可,SDK17推荐使用BSD license,SDK16推荐使用Nordic license)以及相应的版本(版本选择说明请见后文),如下:

nRF51 nRF52 Nordic SDK5

nRF MDK安装界面如下所示(安装过程中有可能会报错,不要管它!)

nRF51 nRF52 Nordic SDK5

这里要特别强调一下Device family pack版本的选择,不是说选择最新版本就好,而是要遵循你SDK例子里面Keil工程的提示,Keil提示你选择哪个版本,你就用那个版本(而不是选择最新的版本)。比如SDK16.0.0,提示你下载8.27.0版本,那你就下载8.27.0(8.27.1也是可以的,因为两者是兼容的,但是8.28及以后就不行)。注:你也可以直接打开如下界面去查看本版本SDK例子依赖的device family pack版本,如下所示:

nRF51 nRF52 Nordic SDK5

重要提示:请不要让Keil自动下载Device family pack,请按照上面的方法,手动去官网下载和安装,否则极有可能出现编译失败的情况。

Nordic SDK原生态的例子都是开箱即用,直接就可以编译和运行的。如果你原生态的SDK例子都会编译报错的话,那么很有可能就是device family pack搞错了,或者可能是你安装了多个版本的device family pack,但安装的时候没有按照“低版本先装高版本后装”的顺序去装。此时建议你把所有已经安装好的device family pack都卸载了(卸载界面见下图),然后按照低版本先装高版本后装的顺序,把有关的device family pack都重装一遍,然后重新把Nordic原始SDK压缩包解压,此时再去编译,应该就不会有问题了。

nRF51 nRF52 Nordic SDK5

1.4.3 Keil4/Windows平台

Keil4只需安装SDK自带的如下插件即可:

nRF51 nRF52 Nordic SDK5

1.4.4 IAR/Windows平台

IAR只需安装SDK自带的如下插件即可:

nRF51 nRF52 Nordic SDK5

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)才能运行该命令。

nRF51 nRF52 Nordic SDK5

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官网上下载,下载链接为:

nRF51 nRF52 Nordic SDK5

桌面版nRF connect (同时支持Windows/MacOS/Linux平台)。下载链接为:

nRF51 nRF52 Nordic SDK5

桌面版nRF connect安装成功后,将如下所示:

nRF51 nRF52 Nordic SDK5

确切地说,桌面版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:

nRF51 nRF52 Nordic SDK5

  • 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命令了。

nRF51 nRF52 Nordic SDK5

  • 记住,传统版nrfutil和现代版nrfutil是两个完全不兼容的软件,使用的时候一定要二选其一。一般来说只有在早期的SDK9/10/11进行明文DFU的时候,才会用到传统版nrfutil,除此之外,都要使用现代版nrfutil的。可通过“nrfutil version”来得知当前nrfutil的版本号,如果发现nrfutil版本弄错了,请通过修改Windows path变量(环境变量)来指向正确的nrfutil版本。

nRF51 nRF52 Nordic SDK5

nrfutil详细使用说明请参考:https://docs.nordicsemi.com/bundle/nrfutil/page/guides-nrf5sdk/intro.html

  • 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详细使用说明请参考:

nRF5 SDK 处于维护模式,更多信息请参阅 nRF Connect SDK 和 nRF5 SDK 声明。对于新项目,我们推荐使用 nRF Connect SDK

订阅Nordic新闻简报

了解最新信息!订阅后即可获取最新Nordic及物联网资讯

立即订阅