Nordic有2套并存的SDK
1、老的nRF5 SDK
2、新的NCS SDK
两套SDK相互独立,
大家选择其中一套进行开发即可。
一般而言,如果你选择的芯片是nRF51或者nRF52系列,那么推荐使用nRF5 SDK
如果你选择的是Nordic最新产品系列,比如nRF53或者nRF9160,那么请选择NCS SDK
还有一种特殊情况,虽然你选择的是nRF52芯片,但需要使用最新的一些射频技术,比如蓝牙测向,蓝牙Mesh v1.1,低功耗蓝牙音频,那么也需要使用NCS SDK。
换句话说,最新的射频技术,Nordic都只会在NCS上进行开发,而nRF5 SDK将进入维护阶段不再增加新的特性(如发现bug,会对其进行修复的)。
目录1、NCS SDK介绍
2、NCS SDK 安装
2.1 - 百度网盘下载 (仅适用于Windows)
2.2 - 通过nRF connect桌面版直接下载GitHub下载(Windows/ Linux/ macOS)
2.3 - nRF command line tools安装
3、NCS SDK开发环境说明
3.1 - SES 开发环境搭建
3.1.1. nRF52项目示例
3.1.2. nRF53项目示例
3.1.3. nRF9160项目示例
3.1.4. 自定义项目装载示例
3.2 - 命令行方式开发环境搭建
3.2.1. nRF52项目示例
3.2.2. nRF53项目示例
3.2.3. nRF9160项目示例
3.3 - 命令行方式开发环境搭建
4、NCS SDK项目的配置或选项
4.1 - NSC项目配置介绍(autoconf.h和devicetree_unfixed.h)
4.1.1. Kconfig (Kconfig, prj.conf及autoconf.h)
4.1.2. Device Tree (*.dts, *.overlay及devicetree_unfixed.h)
4.1.3. 配置程序起始地址和大小
4.2 - 图形化查看Kconfig选项
4.2.1. SES查看
4.2.2. 命令行方式查看
5、NCS SDK中几个比较重要的目录
5.1 - 例子目录
5.2 - API目录
5.3 板子定义目录
6、开发你的第一个NCS程序
6.1 - 修改hello_world main.c文件
6.2 - 在项目中添加一个新的文件blinky.c
6.3 修改blinky.c文件
6.4 编译和运行你的第一个hello_world程序
6.5 使用prj.conf和.overlay配置项目
7、开发你的第一个multi-image(多image)应用
7.1 - 分区管理 (Partition Manager)
7.2 多image的hello_world程序开发
8、NCS编译系统几个要注意的点
8.1 - NCS几个重要的编译系统变量
8.2 - conf文件命名规则及编译顺序
8.3 - overlay 文件命名规则及编译顺序
nRF5 SDK的介紹
关于nRF5 SDK的介绍,请参考这篇博文之前的博文,基本上都是基于nRF5 SDK进行阐述的,尤其是这篇:
Nordic nRF51/nRF52开发环境搭建
详细讲解了nRF5 SDK开发环境的搭建,这里不再赘述。下面将只对NCS SDK进行阐述,以期让大家快速了解这个Nordic最新SDK,并尽快熟悉和上手。
1、NCS SDK介紹NCS全称nRF Connect SDK,是Nordic最新的SDK平台,该平台将支持Nordic所有产品线,包括低功耗蓝牙,蜂窝网,2.4G,蓝牙Mesh,Zigbee,Thread,CHIP等。
换句话说,由于短距离无线网络和长距离无线网络共用同一个SDK,将使得你同时具备两种网络的开发经验,因为他们的框架是一样的,驱动是一样的,网络协议栈的编写风格也是相仿的。
只要你熟悉了其中一种网络的开发,那么相关的经验可以迅速复制到新网络平台上。
NCS SDK内嵌Zephyr RTOS,并沿用了Zephyr project的编译系统。Zephyr Project是Linux基金会推出的一个Apache2.0开源项目,版权非常友好,适合用于商业项目开发。
°Zephyr Project
Zephyr Project是一个合作社区,其产品就是Zephyr,具体包括Zephyr RTOS,Zephyr组件以及Zephyr编译系统等
Zephyr很多地方都模拟了Linux,比如使用了DeviceTree和Kconfig,对Linux很熟的同学,阅读Zephyr代码会感到很亲切的
经常有人问:为什么NCS要使用Zephyr RTOS?
其实答案就蕴含在Zephyr Project的愿景中:The Zephyr™ Project strives to deliver thebest-in-class RTOS for connected resource-constrained devices, built be secureand safe
Zephyr的愿景跟Nordic的产品策略高度吻合,这也是为什么Nordic要选Zephyr的主要原因
NCS SDK和Zephyr Project两者最大的区别有3个:
owner不同,NCS SDK由Nordic负责,Zephyr SDK由Linux基金会负责。NCS开发中碰到的所有问题,Nordic都将负责解决
产品管理不一样,NCS SDK将由Nordic完成所有相关测试和考核,并符合Nordic产品开发,测试,发布和质量控制流程,因此NCS有自己的版本,并跟Zephyr版本控制解耦
NCS具有很多增强特性,比如Nordic特有的蓝牙链路层等
所以,从产品角度看,NCS SDK和Zephyr SDK是两套完全不同的SDK。但是,如果从代码角度看,那么NCS SDK和Zephyr SDK又基本上是一样的。
在本文章的下面部分,在不引起混淆的情况下,经常会把NCS和Zephyr两个概念换着使用,因为本质上他们是一个东西。
°NCS使用了CMake编译系统
并使用了大量Python脚本以辅助生成一些头文件,代码和hex,这些都大大增加开发的可移植性和便利性。
°NCS SDK放在GitHub上
里面包含多个代码库,其主代码库(Manifest)是nrf,同时还包含Zephyr,MCUBoot,mbedtls,nrfxlib等其他代码库。NCS SDK可以同时在Windows,macOS和Linux上运行。
°于Zephyr和NCS的build系统是一样的
于Zephyr和NCS的build系统是一样的,如果你正在学习Zephyr RTOS,那么也可以参考本篇文章,从NCS SDK开始学习Zephyr。由于NCS SDK新增了很多特性,比如图形化的DEBUG,丰富的例程,你会发现从NCS SDK学习Zephyr是一条便捷通道。
NCS SDK开发包比较大,目前大概4G(后续有可能会更大),由于GitHub网络带宽的问题,很多人下载的时候会出现超时错误,为此我们提供如下两种安装方案。
如果你能在早上6点左右起床,请参考2.2方案(GitHub直接下载);如果你不想早点起来,请参考2.1方案(百度网盘下载)。
°2.1 百度网盘下载(仅适用于Windows)
代码链接
地址如下所示:
下载链接:https://pan.baidu.com/s/1FKTfY3Q_zBVvviO7KC7Gyg#list/path=%2Fblog
提取码:y8fb
进入目录“开发你的第一个NCS(Zephyr)应用程序”,选择相应的版本,推荐使用最新版本。本篇博文完成之时最新量产tag为:
ncs_v1.4.1
后续还会有ncs_v1.5.0,ncs_v1.6.0等。
直接把相应的压缩包下载下来并解压到本地目录,SDK即算安装完成。
注意,这个压缩包只能在Windows系统上运行,不能在Linux和macOS上运行。
*注:ncs_v1.4.99-dev1是专为nRF53准备的一个临时开发版本,量产版本需要等到v1.5.0或者更新。
°2.2 通过nRF connect桌面版直接GitHub下载(同时支持Windows, Linux和macOS)
采用这个方案,你必须早上6:00左右起床,切记!
首先,下载桌面版nRF connect (同时支持Windows/macOS/Linux平台)。下载链接为:
https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Connect-for-desktop/Download#infotabs,选择你的平台和版本。
桌面版nRF connect安装成功后,将如下所示:
在nRF connect桌面版中有2个app都可以完成NCS SDK安装:
一个是Toolchain Manager
一个是Getting Started Assistant
如果你是GitHub老手,可以按照Getting Started Assistant的步骤一步一步来安装。如果你嫌一步一步安装麻烦,那么建议你使用Toolchain Manager一键安装。
下面将会以Toolchain Manager的方式(支持Windows和macOS)来讲解安装过程(Getting Started Assistant的方式自己有兴趣可以自己去摸索,而且Linux系统目前只能采用这种方式)。
首先install Toolchain Manager,然后open,进入settings界面,选择安装目录,如下:
然后重新选择SDK ENVIRONMENTS页面,并选择SDK相应版本进行安装,如下所示:
根据网速不同,这个过程持续时间变化很大,我这边网络大概需要20分钟完成所有下载和安装,安装成功后你将得到如下目录内容:
°2.3 nRF command line tools安装
下载完SDK压缩包,再下载 “nRF-Command-Line-Tools_10_11_1_Installer.exe”, 即nRF command line tools,nRFcommand line tools包括Jlink驱动以及Nordic自己开发的一些命令行工具,如nrfjprog,nrfutil以及mergehex等,这些工具对开发非常有帮助。nRF command line tools下载链接为: https://www.nordicsemi.com/Software-and-Tools/Development-Tools/nRF-Command-Line-Tools/Download#infotabs 3、NCS SDK开发环境说明NCS支持的工具链有2套:
一套是SEGGER Embedded Studio,简称SES,图形化的IDE
一套是命令行方式(沿用了Zephyr工具链),其实就是GCC工具链
两套工具链选其一即可,推荐大家使用SES,因为它的debug功能非常好使。(GCC工具链的debug功能使用起来就比较复杂了)。
下面将分别对SES和命令行方式两种开发环境进行介绍,大家可以参考其中一种或者两种结合一起使用。
°3.1 SES开发环境搭建
通过百度网盘或者Toolchain Manager安装的SDK, 必须进入如下目录: install folder\toolchain 并双击SEGGER Embedded Studio.cmd以打开SES,而不能在其他地方直接打开SES,如下所示 :SES启动成功后,进入Tools->Options,我们需要先对IDE进行配置。
如下两种方式的配置有可能都能工作起来,选择一种适合你的(一般来说,推荐配置二,这个配置方式可以适用任何电脑环境)。
°配置一:
° 配置二: 配置好了之后,我们就可以打开一个工程进行编译了。进入File->Open nRF Connect SDK Project。 在NCS中,项目是通过CMakeLists.txt表示的,如下: 而开发板一般是在如下目录的: