Nordic nRF51/nRF52开发环境搭建
本文将详述Nordic nRF51系列(包括nRF51822/nRF51802/nRF51422等)和nRF52系列(包括nRF52832/nRF52810/nRF52840)开发环境搭建。
1. 强制安装项
如下工具必须安装,否则无法开发Nordic nRF51/52产品
- 安装IDE。Nordic nRF51/52支持Keil,GCC,IAR和SES(Segger Embedded Studio)四种IDE,大家随便选择其中一种安装即可。
- Keil。大家自行下载安装,这里不再赘述。
- IAR。大家自行下载安装,这里不再赘述。
- SES(推荐)。SES跟Keil非常像,是Segger公司为Nordic芯片量身打造的,对Nordic用户来说,永久免费。SES支持Windows/MacOS/Linux三种平台,下载链接为:https://www.segger.com/downloads/embedded-studio。下载成功后,你将得到“Setup_EmbeddedStudio_v330_win_x64.exe”之类的安装包(Windows 64bit版本),成功安装后,SES软件界面如下所示:

- GCC。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文件供你使用。
- 安装SDK。SDK包含所有外设驱动,丰富的应用例子,以及跟本版本SDK配套的协议栈hex等。大家可以参考“Nordic官网/Infocenter/Devzone/Github简介”第1节“1. Nordic官网及资料下载”去下载自己芯片支持的SDK版本,比如nRF52系列最新版SDK下载链接为:https://www.nordicsemi.com/eng/nordic/download_resource/59012/70/52858981/116085
下完之后,你将得到 “nRF5_SDK_15.0.0_a53641a.zip”之类的压缩包,解压缩该压缩包,SDK即安装完成,如下所示:

- 安装与本SDK版本配套的ARM CMSIS软件包和IDE插件。如果你是Keil5用户,一般可以通过如下界面,把相应的CMSIS和Device family pack安装好。

由于某些原因,很多用户在上述界面无法安装,因此可以将CMSIS和IDE插件从网上下载下来,单独安装。
ARM CMSIS安装包下载地址:https://github.com/ARM-software/CMSIS/releases。从如下界面选择你需要的CMSIS版本。那具体选择哪个CMSIS版本呢?你可以随便打开SDK中一个例子,Keil或者其他IDE就会报错告诉你缺少那个版本的CMSIS(一般来说,缺少的都是CMSIS4.5.0),你再把它下下来即可。

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

所有IDE插件都可以到如下网址下载:https://www.nordicsemi.com/eng/Products/nRF52840#Downloads。根据自己的IDE,选择相应的插件:

注:上述所有插件都有2个版本,2个版本的功能是一模一样的,只是版权会有点不同。
以Keil5插件为例,Keil5的插件是Device family pack(其实上文已经提到它了),其安装界面如下所示(安装过程中有可能会报错,不要管它!)

- 安装nRF5x Command Line Tools。nRF5x command line tools为Nordic开发的一些命令行工具,主要包括Jlink驱动,nrfjprog,nrfutil以及mergehex等。下载链接为:https://www.nordicsemi.com/eng/Products/nRF52840#Downloads,选取如下选项之一。

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

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

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。下载链接为:https://www.nordicsemi.com/eng/Products/nRF52840#Downloads。选择如下选项之一:

桌面版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:

- nRFgo studio。图形化的Flash烧写工具,以及nRF24系列开发工具,而且还集成有DTM,DFU升级等功能,不过随着桌面版nRF connect功能越来越多,nRFgo studio越来越被边缘化,因为大部分nRFgo studio的功能都可以被桌面版nRF connect取代,比如Flash烧写,DFU等。nRFgo studio下载链接为:https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRFgo-Studio/(language)/eng-GB#Downloads。安装nRFgo studio的时候,请按照默认选项来安装(不要去更改默认的安装目录!),安装成功后,界面如下所示:

注:nRFgo studio安装包也自带Jlink驱动安装包,如果你前面通过nRF5x command line tools已经把jlink驱动装好了,那么安装nRFgo studio的时候就不要再安装Jlink驱动了。
- nrfjprog(必选)。nrfjprog用于代码擦除烧写读取,芯片复位,存储器访问等,其使用界面(Windows命令行或者Linux命令行或者MacOS命令行)如下所示:

由于在安装nRF5x command line tools的时候,系统就会自动安装nrfjprog,因此你不需要再额外安装nrfjprog。对于Windows系统,nrfjprog将位于如下目录“C:\Program Files (x86)\Nordic Semiconductor\nrf5x\bin” 你只需在Windows path变量(环境变量)中包含此目录,就可以直接在Windows‘Command Prompt’中执行nrfjprog命令了。

- Sniffer。Sniffer用于抓取空中蓝牙包以debug通信问题,sniffer包括硬件和软件两部分,硬件就是一个nRF51的dongle或者PCA10028开发板或者PCA10040开发板(将来还会支持PCA10056开发板以及PCA10059 dongle),硬件连接图如下所示:

软件就是Wireshark,界面如下所示:

Sniffer详细使用说明请参考:http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.tools%2Fdita%2Ftools%2Fsniffer%2Fsniffer_intro.html&cp=5_4
- 低版本(0.x.x)nrfutil。低版本nrfutil主要用于明文OTA/DFU时生成手机端新固件zip包,安装nRFgo studio的时候,会自动安装nrfutil,nrfutil所在目录为“C:\Program Files (x86)\Nordic Semiconductor\nRFgo Studio”。 你只需在Windows path变量(环境变量)中包含此目录,就可以直接在Windows‘Command Prompt’中执行nrfutil命令了

低版本nrfutil工作界面如下所示:

- 高版本nrfutil(>1.5.0)。高版本nrfutil用于签名OTA/DFU时生成手机端新固件 zip包,以及生成公私钥对,生成settings page,执行DFU操作等,高版本nrfutil和低版本nrfutil是两个完全不兼容的软件,使用的时候,一定要“二选一”,一般来说只有在早期的SDK9/10/11进行明文DFU的时候,才会用到低版本nrfutil,除此之外,都是要使用高版本nrfutil的。
高版本nrfutil安装说明及使用说明请参考链接:
可通过“nrfutil version”来得知当前nrfutil是高版本还是低版本,如下所示:

低版本nrfutil版本号一般为0.x.x,而高版本nrfutil版本号大于1.5.0。如果发现nrfutil版本弄错了,请通过修改Windows path变量(环境变量)来指向正确的nrfutil版本。
Nordic nRF51/nRF52开发环境搭建的更多相关文章
- Nordic nRF51/nRF52开发流程说明
Nordic nRF51系列包括nRF51822/nRF51422/nRF51802等芯片,nRF52系列包括nRF52832/nRF52840/nRF52810等芯片,硬件工程师可以按照如下流程去评 ...
- ubuntu下Nodic开发环境搭建
ubuntu下Nodic开发环境搭建 1.编译环境 ubuntu可直接装gcc编译环境 sudo apt install gcc-arm-none-eabi 也可以下载可执行文件download 2. ...
- python开发环境搭建
虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...
- IntelliJ IDEA安装及jsp开发环境搭建
一.前言 现在.net国内市场不怎么好,公司整个.net组技术转型,就个人来说还是更喜欢.net,毕竟不是什么公司都像微软一样财大气粗开发出VS这样的宇宙级IDE供开发者使用,双击sln即可打开项目, ...
- Qt for Android开发环境搭建及测试过程记录
最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...
- node.js之开发环境搭建
一.安装linux系统 (已安装linux可跳此步骤) 虚拟机推荐选择:VirtualBox 或者 Vmware (专业版永久激活码:5A02H-AU243-TZJ49-GTC7K-3C61N) 我这 ...
- TODO:小程序开发环境搭建
TODO:小程序开发环境搭建 1.第一步当然是要先注册小程序了 2.登录到小程序 a)完善小程序信息,如名称,图标,描述 3.绑定开发者 4.获取AppID,并设置服务器信息 5.下载并安装开发者工具 ...
- Eclipse中Python开发环境搭建
Eclipse中Python开发环境搭建 目 录 1.背景介绍 2.Python安装 3.插件PyDev安装 4.测试Demo演示 一.背景介绍 Eclipse是一款基于Java的可扩展开发平台. ...
- Windows 10 IoT Serials 1 - 针对Minnow Board MAX的Windows 10 IoT开发环境搭建
目前,微软针对Windows IoT计划支持的硬件包括树莓派2,Minnow Board MAX 和Galileo (Gen 1和Gen 2).其中,Galileo (Gen 1和Gen 2)运行的是 ...
随机推荐
- View,ViewGroup的Touch事件的分发机制
原帖地址:http://blog.csdn.net/xiaanming/article/details/21696315 ViewGroup的事件分发机制 我们用手指去触摸Android手机屏幕,就会 ...
- viewpager循环滚动和自动轮播的问题
ViewPager是一个常用的android组件,不过通常我们使用ViewPager的时候不能实现左右无限循环滑动,在滑到边界的时候会看到一个不能翻页的动画,可能影响用户体验.此外,某些区域性的Vie ...
- mpi中的广播
MPI可以实现一对多的集合通信,最常用的是广播:某个进程将数据广播到所有其他进程,最终的结果就是每个进程都有一份广播的数据.MPICH中的广播函数是MPI_Bcast(void* buffer,int ...
- Cocos2d中update与fixedUpdate的区别(五)
在真实情况中update:和fixedUpdate方法如何去调用? 由上所述,所以update方法在每帧被调用1次,从而给你一个机会去更新你的游戏对象的状态在其绘制之前.而fixedUpdate:方法 ...
- 嵌入式C语言查表法的项目应用
嵌入式C实战项目开发技巧:如果对一个有规律的数组表进行位移操作 就像下面的这个表 之前写过上面这个标题的一篇文章,讲的是以位移的方式去遍历表中的数据,效率非常高,但是,如果要实现一个乱序的流水灯或者跑 ...
- AngularJS进阶(十三)JS利用正则表达式校验手机号
JS利用正则表达式校验手机号 注:请点击此处进行充电! 绪 由于项目需求,需要在前端实现手机号码的校验.当然了,对于基本的格式校验应该放在客户端进行,而不需要再将待校验的手机号发送至服务端,在服务端完 ...
- Android Data Binding代码实践(告别findViewById)(四)
Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点 ...
- Socket层实现系列 — getsockname()和getpeername()的实现
本文主要介绍了getsockname()和getpeername()的内核实现. 内核版本:3.6 Author:zhangskd @ csdn blog 应用层 int getsockname(in ...
- 【34】包含min函数的stack
题目: 实现一个包含min函数的栈,min和push,pop都是o(1)时间 思路: 采用一个辅助的栈,来存储不同阶段的最小值 - 代码: push(int value){ //data是数据栈,mi ...
- listview中的adapter学习小结
概述 Adapter是数据和UI之间的一个桥梁,在listview,gridview等控件中都会使用到,android给我们提拱了4个adapte供我们使用: BaseAdapter是一个抽象类,继承 ...