1308|2

422

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

【nRF7002-DK Wi-Fi® 6开发套件评测】#5 基于nRF7002开发matter协议入门 [复制链接]

1、概述

     前帖介绍了nRF SDK基于zephyr的开发,具体可以参考Bindings index — Zephyr Project Documentation, 这里有完整的zephyr原理和线程开发指南,总体来说并不容易,需要完整配置环境,参数,硬件树和功能选择配置以及cmake参数。这个过程在keil等开发工具中一部分用图形化的属性配置,可以直接参照。使用zephyr则都要文本编辑,比较考验能力,需要先当专家再开发简单程序,否则就只能下载范例浅尝辄止。

      nRF SDK并不是简单的照搬zephyr而是自己独立维护这个库,扩展了独立的库,其中适用于nRF7002的库nRF70 Series Wi-Fi driver — nRF Connect SDK 2.5.99 documentation (nordicsemi.com)是支持这个开发板开发的关键。这个nRF7002是一个协处理内核,不能单独工作,需要作为从处理器运行,适用QSPI的端口访问,但是加入这个库就很简单,需要再Kconfig中配置CONFIG_WIFI_NRF700X这个参数,然后根据其他指令逐个选择就可以启动了。其内核逻辑如下

直接在drivers/wifi/nrf700x/zephyr/这个目录下引用这个库的源代码到新建工程中。开发过程中选择nrf7002dk_nrf5340_cpuapp这个内核,直接是哦那个nRF5340的无线内核,不启动nRF7002,而只有nrf7002dk_nrf5340_cpunet这个选择,才能是启动nRF7002这个协处理内核。这个内核下,有些引脚被占用,所以ADC这样的功能也不能适用了,具体如下
具体配置如下

The connections and IOs supported by the development kit are listed in this section.

LED
  • LED1 (green) = P1.06

  • LED2 (green) = P1.07

Push buttons
  • BUTTON1 = SW1 = P1.08

  • BUTTON2 = SW2 = P1.09

  • BOOT = SW5 = boot/reset

Wi-Fi control
  • BUCKEN = P0.12

  • IOVDD CONTROL = P0.31

  • HOST IRQ = P0.23

  • COEX_REQ = P0.28

  • COEX_STATUS0 = P0.30

  • COEX_STATUS1 = P0.29

  • COEX_GRANT = P0.24

    随后各种wifi功能的使用可以参照这个Developing with nRF70 Series — nRF Connect SDK 2.5.99 documentation (nordicsemi.com)说明来照搬。

    那么使用这个协处理内核nRF7002的好处是什么,本来主内核就可以搞wifi和蓝牙,使用nRF7002的最大好处就是提升了性能,扩展了可以使用的外存和内存,这样就可以用matter协议了。这个matter协议最近突然走红,这款开发板算是率先支持这个生态的工具。所以,就要仔细看一下。

 

2、Matter协议

      Matter协议是几个美国巨头讨价还价的结果,因为Wifi,BLE,Thread,Zigbee都各自在2.4GHz频段上各不相让,然后Apple,Google,Samsung,Amazon等又在各自的智能生态中加入私货,在BLE再套个皮,成google xxx协议。本来就是想搞小院高墙,自留地独占,不让别人进来,这样的结果很美好,但是效果很骨感,一个无线灯灯智能终端必须要原配的无线环境才行,分成春秋战国,结果地方占差不多了,小的市场就不能搜更多银子发展。于是,这个几个霸王就说我们集体搞墙吧,就把别人搞外面去,提高入场门槛,这样Matter就再撕扯之后快快乐乐的出场了。Matter单独形成一个收费社区,需要matter认证,matter密码验证,又出了一堆生意,这个套路我们看多了也就慢慢晓得了。

    所以这个matter搞得非常非常复杂,搞得专业整活的人看都不想看一眼,而且特别吃内存,如果嵌入式开发完整支持这个生态,要1M内存起步,所以能够支持matter的 都是斗士,都是芯片飞机中的战斗机,比如本nRF7002开发板。不过,这样好吗?中国人口大致是美国的3-4倍,所以,细分市场即使很小的地盘就能喂饱一个小的生态开发者。如果像小米一样已经自己成体系,如果不介意就用小米全家桶,那么起始可以不搭理这个matter协议。不过,就看小米打算不打算去搞美国市场,或者让不让小米进她们地盘,如果想抢地盘,小米这些还要弄一个海外特供版,用高价芯片去攻占地盘。这个是废话,让小米自己去想吧。

    Matter这样看起来就非常高大上,每个小网中都需要一个matter控制器,在不同的网络协议中,需要连接网关,这样,就把各家的设备都可以联通起来了。

最终就形成这样的格局,终端设备可以被原生系统管控,经过matter一搞,还可以同时被多个生态访问和控制,这个不同小院之间用数据封包的方式,通过安全传输信道,实现数据交换性的安全访问。是不是真安全,那个只有云知道。

Matter: Testing the nRF Connect platform with Apple, Google and Samsung ecosystems - Blogs - Nordic Blog - Nordic DevZone (nordicsemi.com)这个帖子就说明了,如果一奴多主的,先登入一个系统,因为她们已经都准备好了接受别人家的matter信道,所以,添加设备的时候可以发现具有matter封包的终端设备,然后再搞一个二次认证,就可以进入两个以上的网络。对于用户来说,这个独立的网络就是不同的物联网控制app,比如Amazon的语音控制音箱,苹果的Apple Home等。大致是这么个样子

作为嵌入式开发,就是最左边的Matter Accessary,真正搞事情的是Matter 控制器,这样能把信号再套一个快递纸箱,传给下一个接收者。目前,有两种结构,一个是Matter over Wifi,这个是本代码想弄的,另一个是matter over thread,这个小复杂,我也没看懂,就先跳过了。因为,thread在国内就没有热乎起来,大家用脚投票已经把他淘汰了,用自行车就很好,哪里用得着比亚迪。
相比蓝牙等协议,matter第一重要的步骤,也是第一个步骤,commission,我这里按照实际效果,称为配网,就是通过一系列勾心斗角的互不信任的验证和确认过程,让不是一家人的进入一家门。看着就头大,如下图,
这个过程的核心就是需要把这64位的身份证纳进去,
  • 16-bit 厂家ID和16-bit产品ID,这个估计要从Matter海盗公会去申请去花钱购买,先到先得,可以先弄一个吉祥号段,

  • 12-bit设备编号

  • 27-bit 起始密码

  • 8-bit 入网掩码

当然,这个matter协议的最大含金量在这里Matter network security,构建了一个非常赞的数据加密验证体系,包括两部分Passcode-Authenticated Session Establishment (PASE) 和Certificate-Authenticated Session Establishment (CASE),分别使用于初始验证,也就是配网,以及运行加密。这个过程,所有数据都额外增加了加密验证的计算量。

   不过,这个还是很可以的,因为,我朝很多物联网产品近乎裸奔,所有数据都是明文发送,就是当中途数据劫包的中继器不存在,所以就有了监控摄像头被别人呢破解后视频在网上直播,智能门锁直接用手机APP通用开锁的故事。

 

3、Matter范例开发环境创建

    那么这里先简单说一下matter over wifi的开发环境如何生成。

    首先准备一个ubuntu20.04以上的主机,插入一个无线收发器,再准备一个可以接入ipv6的高速路由器,并取消广播信号屏蔽功能,因为,这些metter终端节点要无时无刻地不停的发彪,这样再把nRF7002开发成终端节点,写入代码。其中最重要的就是matter controller,这个是用CHIP tool这个工具实现的,需要运行在主机上。这样就构成了一个完整的生态。才能开始设置matter节点。

 

4、新建matter工程

 按照前面的新建过程,复制了这个light bulb范例,就是一个智能照明灯设计

代码如下,完全是RTOS的线程在跑。先苦后甜,忙乎大半天,到最后了,其实真需要写的代码工作量不大。
#include "app_task.h"

#include <zephyr/logging/log.h>

LOG_MODULE_REGISTER(app, CONFIG_CHIP_APP_LOG_LEVEL);

int main()
{
	CHIP_ERROR err = AppTask::Instance().StartApp();

	LOG_ERR("Exited with code %" CHIP_ERROR_FORMAT, err.Format());
	return err == CHIP_NO_ERROR ? EXIT_SUCCESS : EXIT_FAILURE;
}

 

 

此帖出自RF/无线论坛

最新回复

开发环境的搭建麻烦,可能还要梯子。   详情 回复 发表于 2023-11-21 09:02
点赞 关注
 

回复
举报

6587

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

需要写的代码工作量确实不大,方便

此帖出自RF/无线论坛
 
 

回复

6069

帖子

4

TA的资源

版主

板凳
 

开发环境的搭建麻烦,可能还要梯子。

此帖出自RF/无线论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表