你需要什么

  1. 准备好的 Matter 开发环境这将带来所有必要的构建和闪存工具以及 Matter SDK。
  2. 可支持 Matter 开发的 Silicon Labs 无线入门套件完整列表可在此 页面上找到重要提示: 由于 RAM 限制,EFR32MG21 平台上的Matter 支持现已弃用首选和最经济的选择是我们的 Thunderboard Sense 2

入门

  1. 如果还没有,切换到你的主目录:

    cd ~
  2. 如果没有完成, 请 按照 本指南准备一个Matter 开发环境这是任何Matter、工具、实施、开发的基础
  3. 如果还没有完成, 请 按照本 指南构建与 Matter 兼容的 OpenThread  Border Router这将需要一个额外的入门工具包以及一个专用的基于 Linux 的运行环境参考指南使用专用的 Raspberry Pi 4 和一个 Thunderboard Sense 2

完成以上所有操作后,您就可以开始了。

构建照明应用程序示例:

在此目录中,您应该有一个 connectedhomeip 文件夹

这个 connectedhomeip 文件夹应该是一个 Matter git 存储库,引导并激活

如果您没有这样的文件夹,请返回先决条件并再次执行所有步骤

构建照明应用程序示例:

首先切换 到 Matter SDK 文件夹

cd connectedhomeip

然后只需在一个命令行中使用专用的构建脚本,如下所示:

./scripts/examples/gn_efr32_example.sh ./examples/<example-app-name>/efr32/ ./out/<example-app-name> <BOARDNAME>

在我们的例子中,Thunderboard Sense 2 (BRD4166A) 的照明应用

./scripts/examples/gn_efr32_example.sh ./examples/lighting-app/efr32/ ./out/lighting-app BRD4166A

如果一切顺利,您应该会在新构建的二进制文件上看到 gcc 大小报告:

+ arm-none-eabi-size -A ./out/lighting-app/BRD4166A/chip-efr32-lighting-example.out ./out/lighting-app/BRD4166A/chip-efr32-lighting-example.out : section size addr .text 763472 0 .ARM.exidx 8 763472 .nvm_dummy 72104 763480 .data 1876 536870912 .bss 115412 536872792 .stack_dummy 1024 536988208 .ARM.attributes 46 0 .comment 77 0 .debug_info 27383652 0 .debug_abbrev 1131760 0 .debug_loc 2407436 0 .debug_aranges 83176 0 .debug_ranges 263552 0 .debug_line 2787435 0 .debug_str 1582456 0 .debug_frame 267924 0 .stab 180 0 .stabstr 387 0 Total 36861977

如您所见,构建工件位于 ./out/<example-app-name>/<BOARDNAME>/<binary>.s37

烧录照明应用程序示例

  • 仅限 Thunderboard Sense 2 (BRD4166A) 用户第一步是确保您将引导加载程序刷入您的设备 这只能使用 JLinkExe 实用程序或通过任何闪存编程 GUI(即 Simplicity Studio 或 Commander)来完成可以使用 Simplicity Studio 构建此类引导加载程序:参见 UG266为方便起见,我们为 BRD4166 托管了一个预构建的内部存储引导加载程序(使用 GSDK 3.2.4 构建)

    1. 下载 Thunderboard Sense 2 引导加载程序

      wget https://www.dropbox.com/s/qqh45vmflw3w8le/bootloader-storage-internal-single-combined-BRD4166A.s37
    2. 使用 JLinkExe 刷新引导加载程序映像 (不适用于 WSL) 如果您在我们的先决条件中安装了 JLink 实用程序,那么您已经知道如何启动该 JLinkExe 工具:
      JLinkExe -device EFR32MG12P432F1024GL125 -speed 4000 -if SWD -autoconnect 1

      注意: 如果您有多个套件连接到您的 Rpi 或计算机,您将需要传递其 JLink 序列号,否则 这将失败

      loadfile ./bootloader-storage-internal-single-combined-BRD4166A.s37 在新打开的提示符中使用刷新 RCP  :

      J-Link>loadfile ./bootloader-storage-internal-single-combined-BRD4166A.s37 Downloading file [./bootloader-storage-internal-single-combined-BRD4166A.s37]... Unable to load library icui18n "Cannot load library icui18n: (icui18n: cannot open shared object file: No such file or directory)" JLinkGUIServerExe: cannot connect to X server J-Link: Flash download: Bank 3 @ 0x0FE10000: 1 range affected (14336 bytes) J-Link: Flash download: Total: 0.523s (Prepare: 0.190s, Compare: 0.005s, Erase: 0.000s, Program & Verify: 0.270s, Restore: 0.055s) J-Link: Flash download: Program & Verify speed: 52 KB/s O.K. J-Link>

      然后重置设备并退出

      J-Link>r Reset delay: 0 ms Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit. Reset: Halt core after reset via DEMCR.VC_CORERESET. Reset: Reset device via AIRCR.SYSRESETREQ. J-Link>q
    3. 使用 Commander GUI 刷新 Bootloader 映像 (不适用于 Raspberry Pi OS)确保你已经安装了指挥官如果没有,请按照事项开发环境先决条件部分并安装指挥官cp 引导加载程序二进制文件到 Windows 文件系统 (仅适用于 WSL 用户)  :
      mkdir -p /mnt/c/Temp/matter_binaries cp ./bootloader-storage-internal-single-combined-BRD4166A.s37 /mnt/c/Temp/matter_binaries

      打开 Commander,连接到您的开发工具包,并将闪存二进制文件复制到创建的文件夹中:

然后根据你在先决条件中安装的工具和你的Linux机器,有3种实现方式:

  1. 使用 python 帮助脚本 (不适用于 WSL 用户和 Raspberry Pi OS)只需运行:

    sudo python3 out/lighting-app/BRD4166A/chip-efr32-lighting-example.flash.py

    该脚本依赖于 Simplicity Commander

    它需要 commander 安装  在 shell 搜索路径中

    如果不是,调用脚本将失败并显示以下输出:

    sudo python3 out/lighting-app/BRD4166A/chip-efr32-lighting-example.flash.py Unable to execute commander. Please ensure that this tool is installed and available. See the EFR32 example README for installation instructions. FAILED: Flash
  2. 使用 JLinkExe 实用程序 (不适用于 WSL)如果您在我们的先决条件中安装了 JLink 实用程序,则启动该 JLinkExe 工具(在本例中为 Thunderboard Sense 2):
    JLinkExe -device EFR32MG12P432F1024GL125 -speed 4000 -if SWD -autoconnect 1

    注意 1: 如果您有多个套件连接到您的 Rpi 或计算机,则需要将其 JLink 序列号作为参数传递

    Thunderboard 用户注意 2: 不要在闪存之前擦除内存,这样做会擦除引导加载程序部分。如有必要,重做引导加载程序闪存(参见上面的 0.)

    这次我们将 loadfile ./out/lighting-app/BRD4166A/chip-efr32-lighting-example.s37 在新打开的提示符中使用 Lighting 应用程序闪烁:

    J-Link>loadfile ./out/lighting-app/BRD4166A/chip-efr32-lighting-example.s37 Downloading file [./out/lighting-app/BRD4166A/chip-efr32-lighting-example.s37]... Unable to load library icui18n "Cannot load library icui18n: (icui18n: cannot open shared object file: No such file or directory)" JLinkGUIServerExe: cannot connect to X server J-Link: Flash download: Bank 0 @ 0x00000000: 1 range affected (88064 bytes) J-Link: Flash download: Total: 1.821s (Prepare: 0.242s, Compare: 0.017s, Erase: 0.000s, Program & Verify: 1.455s, Restore: 0.104s) J-Link: Flash download: Program & Verify speed: 59 KB/s O.K. J-Link>

    JLinkExe 现在只需重置设备并使用 r then 退出 提示q

    J-Link>r Reset delay: 0 ms Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit. Reset: Halt core after reset via DEMCR.VC_CORERESET. Reset: Reset device via AIRCR.SYSRESETREQ. J-Link>q
  3. 使用 Windows Simplicity Commander GUI  (不适用于 Raspberry Pi OS)确保你已经安装了指挥官如果没有,请按照事项开发环境先决条件部分并安装指挥官cp Windows 文件系统的应用程序二进制文件 (仅适用于 WSL 用户)  :
    mkdir -p /mnt/c/Temp/matter_binaries cp ./out/lighting-app/BRD4166A/chip-efr32-lighting-example.s37 /mnt/c/Temp/matter_binaries

    打开 Commander,连接到您的开发工具包,并将闪存二进制文件复制到创建的文件夹中:

此时,您有一个运行 Matter Lighting 应用程序的 Thunderboard Sense 2(或其他)

疑难解答

如果您完全按照前面的所有部分(包括 git checkouts 和先决条件),您应该已经构建并刷新了 Lighting App 固件以及引导加载程序到 Thunderboard

不过,如果您遇到其中一些问题:

  • 构建失败 :

    1. 绝对  确保您检查了 Matter Dev Env 设置指南中提到的 Matter SDK分支
    2. 确保您在 ./scripts/examples/gn_efr32_example.sh ./examples/<example-app-name>/efr32/ ./out/<example-app-name> <BOARDNAME> 构建命令中提供了适当的示例和板名
    3. 如前所述,众所周知,在 Raspberry Pi 上构建 Matter 应用程序是不稳定的尝试在虚拟机或本机 Ubuntu PC 上构建,看看构建是否通过得更好
    4. 您  在编译照明应用程序时遇到-Wno-unknown-warning错误确保您正在运行 arm-none-eabi-gcc 版本:9.3.1 检查运行 arm-none-eabi-gcc --version在撰写本文时,我们正在使用:
      arm-none-eabi-gcc (GNU Arm Embedded Toolchain 9-2020-q2-update) 9.3.1 20200408 (release) Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

      解决方案是 sudo apt upgrade 如果 ubuntu 不允许安装更新版本

      并再次运行引导脚本。

      在 Raspberry 上,通过升级更改环境可能会导致引导程序失败。

  • 应用程序不运行
    1. 确保您的设备已通电
    2. 确保您确实刷新了 .s37 二进制文件,而不是构建文件夹中的另一个
    3. 对于 Thunderboard Sense 2 用户(更常见的是 Series 1 用户),请确保您刷入了引导加载程序没有它,设备不会到达地址 0x00000000 并在默认处理程序中
    4. 确保您构建  刷新了与您使用的无线电板匹配的二进制文件
  • JLinkExe 抛出错误 :如果错误是:
    Unable to load library icui18n "Cannot load library icui18n: (icui18n: cannot open shared object file: No such file or directory)" JLinkGUIServerExe: cannot connect to X server

    -> 你不需要担心它

  • commander 调用python flash脚本时找不到
    • 确保您已安装commander

如果没有,请按照Matter 开发环境先决条件部分并安装commander。

使用 RTT 查看器调试设备

在使用 Lighting App 示例闪烁的 Thunderbaord Sense 上连接 RTT 查看器

根据您的操作系统,您将使用 GUI 或命令行。无论哪种方式,您都需要拥有 JLIink 软件套件,如 Matter Development Setup 指南的先决条件

  • 使用 shell bin  (适用于除 WSL 之外的所有用户)使用JLinkExe工具结合JLinkRTTClient可以查看日志输出,如下:

    1. 运行带有参数的 JLinkExe 工具以自动连接到 WSTK 板:

      JLinkExe -device EFR32MG12P432F1024GL125 -speed 4000 -if SWD -autoconnect 1
    2. 在第二个终端中,运行 JLinkRTTClient 以查看日志:
      JLinkRTTClient

      对于继续通过的用户 ssh,只需打开第二个 ssh 终端即可执行 RTTClient

  • 使用 GUI  (最有可能适用于 Windows 用户)连接到插入的 Thunderboard:

    成功的连接应导致:

现在设备正在运行,我们可以开始使用Chip-tool将事务端设备调试到Thread 网络上。

疑难解答

如果您完全按照前面的所有部分(包括 git checkouts 和先决条件),您应该已经构建并刷新了 Lighting App 固件以及引导加载程序到 Thunderboard

不过,如果您遇到其中一些问题:

设备未通过 Matter 控制器进行调试。
每次需要调试设备时,长按 PB0(BTN0)6 秒恢复出厂设置。您也可以使用 CLI 实现此目的:
打开 TeraTerm 并通过串行连接连接终端设备。键入以下 CLI 命令以恢复出厂设置。

> factoryreset

其他有用的 CLI 命令:

> state //获取设备的状态。 > ipaddr //获取终端设备的 IPV6 地址。

Matter Project 入门 – 构建和运行照明应用程序示例相关推荐

  1. 【Qt】Qt 开发桌面程序 ( Qt 版本 5.14.2 | 创建 Qt 桌面程序 | 构建并运行 Qt 桌面程序 )

    文章目录 一.创建 Qt 桌面程序 二.构建并运行 Qt 桌面程序 一.创建 Qt 桌面程序 首先要安装 Qt 开发环境 , 参考 [Qt]Qt 开发环境安装 ( Qt 版本 5.14.2 | Qt ...

  2. QT编程从入门到精通之十一:“第三章:Qt Creator”之“3.5 构建与运行程序”

    目录 第三章:Qt Creator 3.5 构建与运行程序 第三章:Qt Creator Qt在很长一段时间内都没有自己的开发环境,开发者通过QMake命令行进行编译,或者通过输入g++命令编译,在L ...

  3. Docker:易于构建,运行,完成!

    by Kangze Huang 黄康泽 Docker:易于构建,运行,完成! (Docker: Easy as build, run, done!) Docker has been getting a ...

  4. SpringBoot+Maven 多模块项目的构建、运行、打包实战

    https://www.jb51.net/article/140772.htm?proxy=1 这篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包实战,小编觉得挺不错的, ...

  5. 物理世界的互动之旅:Matter.js入门指南

    点击上方 前端Q,关注公众号 回复加群,加入前端Q技术交流群 本文简介 戴尬猴,我是德育处主任 欢迎来到<物理世界的互动之旅:Matter.js入门指南>. 本文将带您探索 Matter. ...

  6. 用 Docker 构建、运行、发布来一个 Spring Boot 应用

    原文同步至 http://waylau.com/docker-spring-boot/ 本文演示了如何用 Docker 构建.运行.发布来一个 Spring Boot 应用. Docker 简介 Do ...

  7. 在docker中构建普通java程序_Docker入门-构建第一个Java程序

    原标题:Docker入门-构建第一个Java程序 定制镜像 准备一个没有第三方依赖的java web项目,可能参考示例maven结构项目: session-web.war 把该war上传到安装有doc ...

  8. 通过Dapr实现一个简单的基于.net的微服务电商系统(十二)——istio+dapr构建多运行时服务网格...

    多运行时是一个非常新的概念.在 2020 年,Bilgin Ibryam 提出了 Multi-Runtime(多运行时)的理念,对基于 Sidecar 模式的各种产品形态进行了实践总结和理论升华.那到 ...

  9. Electron 快速开始(一)-入门基础、使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序

    文章目录 Electron 快速开始(一)-入门基础.使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序 Electron简介 多进程模型​ Electron 快速开始 管理窗 ...

最新文章

  1. 2022-2028年中国煤制甲醇产业投资分析及前景预测报告
  2. 【python】Series和DataFrame的简单介绍
  3. 一文攻破枚举类型-C语言
  4. 本地生活JAVA版本_赶集生活java版
  5. 基于query语句解析mysql工作原理
  6. 概率论和数理统计 - 03 - 多维随机变量及其分布
  7. PyTorch: torch.optim 的6种优化器及优化算法介绍
  8. mysql gtid坑_数据库mysqldump的坑
  9. mysql怎么导出insert语句_mysql导出insert语句
  10. 面试智力题:赛马问题求前几名
  11. firefly-rk3288j开发板--linux I2C实验之eeprom驱动
  12. 前端JS校验银行卡卡号和身份证号码(附ES6版方法)
  13. Base64解码过程必须关注的问题
  14. 华理c语言设计网上作业,华理网上作业 之 大学英语预备
  15. python判断数字位数_python求数字位数的方法
  16. 关于查全率,查准率的定义
  17. VSS2005配置方法及注意事项
  18. 在线磁盘扩容 500G =》 2T 实战教程
  19. 小问题一枚,键鼠支持多媒体控制的骚年,无法控制音乐、音量等的解决方法
  20. 使用Layui的时间选择器组件不显示问题

热门文章

  1. 最新Java开发进阶!我的华为面试经历分享,请查收
  2. 京东测试之道,这些你早该知道!
  3. Centos7.5- Linux网络管理技术
  4. 一元三次方程求解(盛金公式)
  5. 数据库之postgreSql时间计算,例如获取前一天、后一天等。
  6. python数据库开发 dga_图/Louvain/DGA乱谈
  7. 大厂出品的免费精品Markdown文档编辑器推荐,支持无限树状目录结构
  8. python 下载 JPG 图片
  9. 医疗护理PPT模板献给可爱的白衣天使
  10. Python 使用xlrd 读取 Excel 报错:xlrd.compdoc.CompDocError: Workbook corruption: seen[3] == 4