cd ~
完成以上所有操作后,您就可以开始了。
在此目录中,您应该有一个 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
wget https://www.dropbox.com/s/qqh45vmflw3w8le/bootloader-storage-internal-single-combined-BRD4166A.s37
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
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种实现方式:
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
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
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
不过,如果您遇到其中一些问题:
./scripts/examples/gn_efr32_example.sh ./examples/<example-app-name>/efr32/ ./out/<example-app-name> <BOARDNAME>
构建命令中提供了适当的示例和板名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 上,通过升级更改环境可能会导致引导程序失败。
.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
-> 你不需要担心它
commander
调用python flash脚本时找不到
如果没有,请按照Matter 开发环境先决条件部分并安装commander。
在使用 Lighting App 示例闪烁的 Thunderbaord Sense 上连接 RTT 查看器
根据您的操作系统,您将使用 GUI 或命令行。无论哪种方式,您都需要拥有 JLIink 软件套件,如 Matter Development Setup 指南的先决条件
JLinkExe -device EFR32MG12P432F1024GL125 -speed 4000 -if SWD -autoconnect 1
JLinkRTTClient
对于继续通过的用户 ssh
,只需打开第二个 ssh 终端即可执行 RTTClient
现在设备正在运行,我们可以开始使用Chip-tool将事务端设备调试到Thread 网络上。
如果您完全按照前面的所有部分(包括 git checkouts 和先决条件),您应该已经构建并刷新了 Lighting App 固件以及引导加载程序到 Thunderboard
不过,如果您遇到其中一些问题:
设备未通过 Matter 控制器进行调试。
每次需要调试设备时,长按 PB0(BTN0)6 秒恢复出厂设置。您也可以使用 CLI 实现此目的:
打开 TeraTerm 并通过串行连接连接终端设备。键入以下 CLI 命令以恢复出厂设置。
> factoryreset
其他有用的 CLI 命令:
> state //获取设备的状态。 > ipaddr //获取终端设备的 IPV6 地址。
「梦想一旦被付诸行动,就会变得神圣,如果觉得我的文章对您有用,请帮助本站成长」
上一篇:Matter Project 入门 – 构建 OpenThread Border Router Docker
下一篇:Matter协议最新进展