一、获取资源包
本教程使用的全部资源包,都以QQ群文件的形式提供下载。大家可以根据本文文初或文末的提示加群(拿破仑ZigBee:263671349),即可直接免费下载获取。
(更多丰富的示例工程代码、软硬件资料,也都会在群文件该目录下持续更新,欢迎大家关注。)
- documentation_v4.0.2.0.zip:内含完整版的Gecko SDK v4.0.2.0相关的所有官方文档资料,解压出来就可以直接查阅;
- gecko_sdk_v4.0.2.0.zip:内含完整版的Gecko SDK v4.0.2.0(含EmberZnet 7.0.2.0)的源码,免安装,解压出来直接就可以正常使用;
- simplicity_commander_1v12p2b1085:内含完整版的Simplicity Commander 1v12p2b1085,免安装,主要用做烧录固件等用,解压出来直接就可以正常使用;
- simplicity_studio_v5.3.2.0.zip:内含完整版的Simplicity Studio v5.3.2.0和GNU v10.2.2020.q4,免安装,解压出来直接就可以正常使用。
二、资源包说明
资源包中的documentation和simplicity_commander这两部分都是比较常规的,这里就不做详细描述了,下面着重介绍一下simplicity_studio和gecko_sdk两部分。
2.1 Simplicity Studio
Silicon Labs的Simplicity Studio是一个集成开发环境,大家熟知的主要有v4和v5两个版本。
v4版本相对老一些,之前Silicon Labs官方还在官网同时维持着v4版本和v5版本的下载链接,以及两个版本的差异对比等等,现在官方已经彻底删除v4相关的下载和说明了,仅保留了v5版本,并对齐进行了非常完善的全方位支持。所以,现在很多新的开发工程师大多都已经不知道v4版本的存在了。
后面官方推出的新版的SDK也仅支持最新的Simplicity Studio v5了。比如,你想使用最新的SDK,你就必须使用最新的Simplicity Studio,才能对最新的SDK进行开发。
新的SDK修复了老版SDK的很多bug,也增加了很多优化和新的内容。我们必须跟着技术发展走,所以这里也建议还在使用v4版本Simplicity Studio的老工程师们尽快升级到最新的v5版本上来。
(注:最新版本的Simplicity Studio不再需要手动Generate了,而是会根据用户的修改实时自动生成代码!)
2.2 Gecko SDK
Silicon Labs为开发者全方位提供了多种SDK,比如有:
- 8051 SDK:主要面向8位处理开发使用;
- Gecko SDK:主要面向32位处理器开发使用;
- 等等。
本教程主要是针对ZigBee无线协议的开发,所基于的硬件主要是Silicon Labs的EFR32MG21、EFR32MG22、EFR32MG24系列的无线MCU,这些MCU都是ARM Cortex-M33内核的32位处理器,所以自然是需要基于Gecko SDK进行开发的。
Gecko SDK本身其实是一个大的“SDK包”,里面包含了许多“子SDK”。就以本教程所基于的 4.0.2.0 版本的 Gecko SDK 为例,其中所包含的“子SDK”如下图所示:
从图中可以看出,我们常用的Bluetooth、Bluetooth Mesh、Z-Wave、ZigBee等协议相关的SDK都是包含在内的。
Silicon Labs的Gecko SDK也经历了好几个版本的更新迭代:
- 在Gecko SDK 4.0.0.0之前,所有的SDK的开发,主要是通过“基于Application Framework的AppBuilder方式”进行,示例界面如下图所示:
- 从Gecko SDK 4.0.0.0开始往后,所有的SDK开发,变成了通过“基于Component的Project Configurator方式”进行,示例界面如下图所示:
2.4 EmberZnet
前面提到,本教程主要是针对ZigBee无线协议的开发,所以这里有必要专门说明一下Gecko SDK“SDK包”中的ZigBee“子SDK”——EmberZnet。
本教程所使用的 Gecko SDK 4.0.2.0,其中包含的ZigBee SDK是 EmberZnet 7.0.2.0。
大家从官网可以获取到关于 EmberZnet 极其详细的介绍。下图是 EmberZnet 7.0.2.0 版本的更新信息,以及最近的一些历史版本:
从中可以看出,Silicon Labs官方对于自家的SDK(比如EmberZnet)更新得相当频繁。从上图(截止至本文的发布时间)可以看出,Silicon Labs的ZigBee协议栈——EmberZnet几乎是每1~2个月就会发布一个新的版本。
在新发布的SDK中,既有老版本SDK中bug的修复,也会有许多优化、新内容的增加等等。这里举例跟大家说明一下为什么推荐使用新版本的SDK,主要从各个版本仍存在的Known Issues in the Current Release(取自于各个版本EmberZnet的release note)的数量来说明:
- EmberZnet 6.10.3.0:约占4.5页篇幅;
- EmberZnet 7.0.0.0:约占4.5页篇幅;
- EmberZnet 7.0.1.0:约占3页篇幅;
- EmberZnet 7.0.2.0:约占2.5页篇幅;
由此可见,目前最新的7.0.2.0版的EmberZnet是目前可用的版本中Known Issues最少的版本,这个还是非常有吸引力的!
比如直到7.0.0.0版本的EmberZnet发布都一直长期存在的“Known Issue 488977和702802”,终于在7.0.1.0 版本的EmberZnet中得到了修复。(感兴趣的朋友,可以去查阅EmberZnet 7.0.0.0和7.0.1.0的release note去查看详情。)
三、离线开发模式
一般来说,指定版本的SDK一般只能用指定版本的IDE才能进行开发。要使用新版的SDK,前提一般都是必须先把升级IDE。
虽然IDE和SDK都推荐用最新版本的,但是频繁更新开发使用的IDE和SDK往往会给开发人员带来很多的麻烦。
比如,等我们把IDE升级了,新的SDK也下载下来了,结果:
- 可能,基于旧版SDK开发的工程,原本编译没问题,现在编译却开始报一大堆奇奇怪怪的错,明明升级之前都是编译成功了的呀?!明明只是升级,前提啥都没动呀?!
- 可能,想把基于老版SDK开发的工程移植到新版的SDK上,但也是会产生各种报错和警告,过程很艰难,折腾很久之后也不一定能完全解决;
- 可能,IDE和SDK的风格都变了,跟之前的开发风格完全不一样了,想退也退不回旧版本了。
大家在开发过程中,具体遇到的由于版本混乱导致的问题可能还有很多。
这里,经过安装、测试、卸载、再安装、再测试等等一系列的实验验证后,终于总结出来一套针对于Silicon Labs的IDE和SDK全新的开发模式——离线开发模式。主要体现在前面提到的资源包的中这2个:
- simplicity_studio_v5.3.2.0.zip:内含完整版的Simplicity Studio v5.3.2.0和GNU v10.2.2020.q4,免安装,解压出来直接就可以正常使用;
- gecko_sdk_v4.0.2.0.zip:内含完整版的Gecko SDK v4.0.2.0(含EmberZnet 7.0.2.0)的源码,免安装,解压出来直接就可以正常使用。
资源包可用解压到电脑上任意位置,免安装就可以直接开发使用。
(注:资源包中Simplicity Studio软件的自动更新功能已关闭,不用担心IDE和SDK被意外或强制更新可能带来的问题。)
等Simplicity Studio和Gecko SDK迭代了几个版本,有了重大更新之后,我会重新制作新版本的资源包上传至群文件。到时候需要的朋友可以自行下载使用。
由于是使用离线资源包的形式,而不是exe可执行文件安装或是在线获取,所以新旧版的IDE或SDK都是可以完全共存使用,互不影响的!