0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Matter工厂数据使用介绍(二)

泰凌微电子 来源:泰凌微电子 2024-04-03 10:47 次阅读

接上一篇分享,我们将使用工厂数据构建一个示例应用,讨论如何工厂数据以及大致介绍如何使用自己的工厂数据的实现。

1

使用工厂数据构建一个示例应用

您可以使用上述步骤手动生成工厂数据集,也可以使用 Telink 平台构建系统,该系统使用 Kconfig 选项自动创建工厂数据内容。

要启用自动生成工厂数据集,请转到示例应用的目录,并使用以下选项构建示例应用:

westbuild---DCONFIG_CHIP_FACTORY_DATA=y-DCONFIG_CHIP_FACTORY_DATA_BUILD=y

或者,您还可以将 `CONFIG_CHIP_FACTORY_DATA_BUILD=y` 的Kconfig设置添加到示例应用的 `prj.conf` 文件中。

注意,如果这一步遇到了 ModuleNotFoundError 的报错,请在 connectedhomeip 目录下执行以下命令更新依赖项后,再次尝试构建:

.environment/pigweed-venv/bin/python3-mpipinstall-rscripts/setup/requirements.telink.txt

构建成功后会得到开启了工厂数据分区的应用的固件,和独立的工厂数据集二进制文件,烧录时需要分别烧录它们。

每个工厂数据参数都有一个默认值。这些在Kconfig文件中有描述。要为工厂数据参数设置一个新值,可以通过将其作为构建参数列表提供,或使用交互式 Kconfig 界面来完成。

1

提供工厂数据参数作为生成参数列表

这种提供工厂数据的方式可以与第三方构建脚本一起使用,因为它只使用一个命令。可以通过west命令的附加选项开启工厂数据功能:

westbuild---DCONFIG_CHIP_FACTORY_DATA=y--DCONFIG_CHIP_FACTORY_DATA_BUILD=y--DCONFIG_CHIP_DEVICE_DISCRIMINATOR=0xF11

或者,也可以将相关的 Kconfig 选项行添加到示例应用的 `prj.conf` 文件中。

2

分开烧录应用固件和工厂数据集

我们的应用固件和工厂数据集都是二进制 BIN 文件,可以使用 BDT 工具和 Telink burning key 烧录到设备的Flash指中。

烧录时使用 Telink BDT 工具的多地址烧录即可:

选择 Tool 中的 Multi-address download

91d16238-f15c-11ee-a297-92fbcf53809c.png

此处以 v1.1-branch 分支上的固件为例,工厂数据的偏移值是 `0x104000`:

91de8d5a-f15c-11ee-a297-92fbcf53809c.png

2

设置工厂数据

将独立的工厂数据集,合并到示例应用的固件之中的一种方法,是使用在[使用工厂数据构建一个示例应用](#使用工厂数据构建一个示例应用)中描述的Telink平台构建系统,并使用附加下面的选项构建示例应用 `-DCONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=y`:

westbuild--

-DCONFIG_CHIP_FACTORY_DATA=y

-DCONFIG_CHIP_FACTORY_DATA_BUILD=y

-DCONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=y

为了更好地理解以上设置项所对应的需求场景,可以参见下面的表格:

91f994ec-f15c-11ee-a297-92fbcf53809c.png

9209a45e-f15c-11ee-a297-92fbcf53809c.png

您还可以构建一个使用自动生成的新CD、DAC和PAI证书的示例应用。新生成的证书将被自动添加到工厂数据集里。要生成新证书,通过使用附加选项构建示例应用来禁用默认证书 `-DCHIP_FACTORY_DATA_USE_DEFAULT_CERTS=n`:

westbuild--

-DCONFIG_CHIP_FACTORY_DATA=y

-DCONFIG_CHIP_FACTORY_DATA_BUILD=y

-DCONFIG_CHIP_FACTORY_DATA_MERGE_WITH_FIRMWARE=y

-DCONFIG_CHIP_FACTORY_DATA_USE_DEFAULT_CERTS=n

注意:要使用Telink平台构建系统生成新的证书,您需要系统变量PATH中的 `chip-cert` 可执行文件。要了解如何获取 `chip-cert`,请参考[构建matter工具](#构建-matter-工具)中的步骤,并将新构建的可执行文件添加到系统变量PATH中。Cmake构建系统将自动找到这个可执行文件。

然后,在示例应用目录中,可以使用生成的一个二进制固件,便可以同时写入应用固件和新生成的工厂数据。

3

使用自己的工厂数据实现

上面介绍的工厂数据生成过程仅是对Telink平台有效的示例应用。根据用途和格式的不同,可以用不同的方式从设备的闪存中读取工厂数据集。在Telink示例中,工厂数据以 `CBOR` 格式存储。

还可以创建一个包含任意格式的所有工厂数据组件表的HEX文件,然后实现一个解析器来读取所有参数并将它们传递给提供程序。每个制造商都可以通过在Matter栈中实现解析器和工厂数据访问器来自行实现工厂数据集。

使用 Telink工厂数据提供程序(FactoryDataProvider.h)和工厂数据解析器(FactoryDataParser.h)作为示例。设备使用工厂数据解析器(FactoryDataParser.h)读取输出原始数据,将其解码并存储在 `FactoryData` 结构中。工厂数据提供程序(FactoryDataProvider.h)实现使用这个解析器获取所有需要的工厂数据参数,并将它们提供给Matter核心。

在Telink示例中, `FactoryDataProvider`是一个模板类,继承自`DeviceAttestationCredentialsProvider`, `CommissionableDataProvider`, 和 `DeviceInstanceInfoProvider` 类。

自定义实现必须继承这些类并实现它们的功能来从设备的闪存中获取所有工厂数据集。这些类是虚类,需要由派生类重写。

要覆盖继承的类,请完成以下步骤:

1、覆盖以下方法:

//=====MembersfunctionsthatimplementtheDeviceAttestationCredentialsProvider

CHIP_ERRORGetCertificationDeclaration(MutableByteSpan&outBuffer)override;

CHIP_ERRORGetFirmwareInformation(MutableByteSpan&out_firmware_info_buffer)override;

CHIP_ERRORGetDeviceAttestationCert(MutableByteSpan&outBuffer)override;

CHIP_ERRORGetProductAttestationIntermediateCert(MutableByteSpan&outBuffer)override;

CHIP_ERRORSignWithDeviceAttestationKey(constByteSpan&messageToSign,MutableByteSpan&outSignBuffer)override;

//=====MembersfunctionsthatimplementtheCommissionableDataProvider

CHIP_ERRORGetSetupDiscriminator(uint16_t&setupDiscriminator)override;

CHIP_ERRORSetSetupDiscriminator(uint16_tsetupDiscriminator)override;

CHIP_ERRORGetSpake2pIterationCount(uint32_t&iterationCount)override;

CHIP_ERRORGetSpake2pSalt(MutableByteSpan&saltBuf)override;

CHIP_ERRORGetSpake2pVerifier(MutableByteSpan&verifierBuf,size_t&verifierLen)override;

CHIP_ERRORGetSetupPasscode(uint32_t&setupPasscode)override;

CHIP_ERRORSetSetupPasscode(uint32_tsetupPasscode)override;

//=====MembersfunctionsthatimplementtheDeviceInstanceInfoProvider

CHIP_ERRORGetVendorName(char*buf,size_tbufSize)override;

CHIP_ERRORGetVendorId(uint16_t&vendorId)override;

CHIP_ERRORGetProductName(char*buf,size_tbufSize)override;

CHIP_ERRORGetProductId(uint16_t&productId)override;

CHIP_ERRORGetSerialNumber(char*buf,size_tbufSize)override;

CHIP_ERRORGetManufacturingDate(uint16_t&year,uint8_t&month,uint8_t&day)override;

CHIP_ERRORGetHardwareVersion(uint16_t&hardwareVersion)override;

CHIP_ERRORGetHardwareVersionString(char*buf,size_tbufSize)override;

CHIP_ERRORGetRotatingDeviceIdUniqueId(MutableByteSpan&uniqueIdSpan)override;

2、将新创建的解析器和提供程序文件移动到项目目录中。

3、把文件添加到 `CMakeList.txt` 中。

4、禁用工厂数据提供程序的默认实现和Telink实现,以开始使用您自己的工厂数据解析器和提供程序实现。这可以通过以下方式之一来实现:

把Kconfig设置 `CONFIG_CHIP_FACTORY_DATA_CUSTOM_BACKEND=y` 加到 `prj.conf` 文件中。

用以下选项构建一个示例:

westbuild---DCONFIG_CHIP_FACTORY_DATA_CUSTOM_BACKEND=y


审核编辑:刘清
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1627

    浏览量

    147819
  • 二进制
    +关注

    关注

    2

    文章

    794

    浏览量

    41609
  • 泰凌微
    +关注

    关注

    7

    文章

    145

    浏览量

    10798

原文标题:【技术专栏】Matter工厂数据使用介绍(二)

文章出处:【微信号:telink-semi,微信公众号:泰凌微电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    什么是Matter?为什么使用MatterMatter的主要内容干货分享BF2 Matter网络技术应用

    BF2 matter应用 :什么是Matter?为什么使用MatterMatter的主要内容; 在BF2上开发Matter应用;什么是
    的头像 发表于 07-13 21:35 4576次阅读
    什么是<b class='flag-5'>Matter</b>?为什么使用<b class='flag-5'>Matter</b>?<b class='flag-5'>Matter</b>的主要内容干货分享BF2 <b class='flag-5'>Matter</b>网络技术应用

    Matter生态中Multi-Fabric使用介绍

    地改善用户体验。 接下来我们就以Apple和Google生态为例,为大家介绍如何将一个泰凌 Matter设备
    的头像 发表于 04-10 10:22 1439次阅读
    <b class='flag-5'>Matter</b>生态中Multi-Fabric使用<b class='flag-5'>介绍</b>

    matter芯片选型指南

    matter芯片选型指南matter作为CSA联盟推出的一项新的技术,新的技术意味着新的机会,这将让CSA联盟耕耘多年的公司(Zigbee产品)和刚加入CSA联盟并计划开发matter的公司回到
    发表于 02-14 07:55

    工厂供电 第2()版

    工厂供电 第2()版共10章。首先,介绍工厂供配电工作意义、要求及课程任务,扼要讲述供配电相关的基本知识;然后,分别介绍
    发表于 12-30 14:24 0次下载
    <b class='flag-5'>工厂</b>供电 第2(<b class='flag-5'>二</b>)版

    Matter设备的测试与认证

    泰凌微电子积极参与了Matter协议中的Matter设备的功能开发,Matter设备的测试与认证,以及Matter标准中文解读等方面的工作。作为致力于低功耗高性能无线连接SoC芯片解决
    的头像 发表于 08-10 09:03 2764次阅读

    如何将非Matter设备桥接到Matter网络

    Matter桥接设备可为 Matter 结构中的非 Matter 物联网设备提供连接。消费者可以在使用新Matter 设备的同时,继续使用现有的非
    的头像 发表于 10-24 16:30 1292次阅读

    Matter协议是什么?IoT时代Matter能解决什么问题?

    近日,CSA联盟(Connectivity Standards Alliance)正式对外发布了Matter 1.0 标准,并宣布认证计划现已开放。这意味着智能家居品牌厂商可以对其产品进行
    发表于 10-27 17:25 6447次阅读

    Matter数据模型和开发

    在第一篇内容中,我们介绍了智能家居互联标准 Matter会带来什么好处。本文,我们来了解一下Matter数据模型和开发。
    的头像 发表于 12-01 10:18 1497次阅读

    Matter开发介绍

    在第一篇内容中,我们介绍了智能家居互联标准Matter会带来什么好处。本文,我们来了解一下Matter数据模型和开发。一个简单的Matter
    的头像 发表于 12-01 11:41 2236次阅读
    <b class='flag-5'>Matter</b>开发<b class='flag-5'>介绍</b>

    详解:如何获得Matter认证?

    Matter徽标,意味今后可最大程度节约开发、维护成本和上市时间,享受品牌效应,获得更广阔的市场。本文将介绍如何获得Matter认证?建议收藏备用。Matter认证
    的头像 发表于 01-11 16:33 2051次阅读
    详解:如何获得<b class='flag-5'>Matter</b>认证?

    Matter协议是什么?Matter协议详细介绍

    Matter协议,也被称为Connectivity Standard,是由Connectivity Standards Alliance(CSA)开发的开源智能家居标准。它旨在通过使来自不同制造商
    的头像 发表于 12-08 16:20 1522次阅读

    Matter最新TestHarness工具使用介绍(一)

    为了简化Matter设备的测试和认证过程,连接标准联盟开发了一套标准化的测试工具,即Matter TestHarness。
    的头像 发表于 04-24 10:38 1639次阅读
    <b class='flag-5'>Matter</b>最新TestHarness工具使用<b class='flag-5'>介绍</b>(一)

    Matter最新Test Harness工具使用介绍

    Matter的测试项根据联盟的TestPlan目前可以分为五类:全自动测试项,半自动测试项,手动测试项,Python in docker测试项以及UI Python测试项。
    的头像 发表于 05-08 10:42 2052次阅读
    <b class='flag-5'>Matter</b>最新Test Harness工具使用<b class='flag-5'>介绍</b>(<b class='flag-5'>二</b>)

    Matter网关是什么?Matter网关的功能作用

    Matter网关是指支持Matter协议的设备,Matter(之前被称为Project CHIP,Connected Home over IP)是由 Connectivity Standards
    的头像 发表于 05-27 14:13 540次阅读

    芯科科技Matter智能家居参考设计演示

    刘俊在介绍Matter标准的现况时提到,芯科科技作为Matter标准的发起者之一,重度参与了标准在整个行业的推广和发展。目前Matter正在由苹果、谷歌、亚马逊还有三星等全球品牌推行,
    的头像 发表于 08-20 15:08 858次阅读