Matter环境下GD32编译环境的搭建

1、Matter介绍

Matter由CSA(连接标准联盟)发起,由巨头公司联合推出,旨在解决通信协议纷繁复杂的碎片化问题,打破多生态系统间的监护壁垒,实现智能设备的无缝通信与写作。
Matter开发环境安装

2、环境配置

本次开发基于Ubuntu 22.04环境配置,建议安装Ubuntu22.04作为matter开发编译环境。
注意:建议将硬盘容量设置为80G往上,单个connectedhomeip代码文件在9G左右。

3、安装必要依赖项,为配置Matter编译环境做准备。

matter@Env:~$ sudo apt-get install git gcc g++ pkg-config libssl-dev libdbus-1-dev \libglib2.0-dev libavahi-client-dev ninja-build python3-venv python3-dev \python3-pip unzip libgirepository1.0-dev libcairo2-dev libreadline-dev

4、Ubuntu下安装git后,使用git命令从github拉取matter源码。

matter@Env:~$ git clone -b v1.2.0.0 -recurse -submodules https://github.com/project-chip/connectedhomeip.git

注意:拉取代码时建议使用VPN

5、下载安装编译工具。

配置gn+ninja,后续使用gn+ninja编译matter源码(参考文档:https://blog.csdn.net/qiuguolu1108/article/details/103842556)
a、下载gn和ninja,一般先安装依赖项,下载代码,编译代码,安装程序。
b、直接下载gn和ninja的二进制程序,
链接:https://pan.baidu.com/s/1_l8JMfuhLJgD7RKs-IDOnQ 提取码:1e0r
将gn、ninja下载后,直接放在/usr/bin目录下,这样在任意位置可以直接使用这个两个程序了。
给gn和ninja添加权限

matter@Env:~/connectedhomeip/gn-demo# chmod +x /usr/bin/gn 
matter@Env:~/connectedhomeip/gn-demo# chmod +x /usr/bin/ninja 

先用gn生成ninja工程

matter@Env:~/connectedhomeip/gn-demo# gn gen out                
#Done. Made 2 targets from 4 files in 4ms

再用ninja生成可执行文件

matter@Env:~/connectedhomeip/gn-demo# ninja -C out
ninja: Entering directory `./out'
[3/3] STAMP obj/default.stamp

6、配置matter编译环境

打开命令行终端,进入matter源码主目录,执行以下命令,调用脚本文件配置matter编译环境。

matter@Env:~/connectedhomeip$ source scripts/activate.sh

在这里插入图片描述

若执行activate.sh脚本后显示环境过期,可通过以下命令执行bootstrap.sh脚本来更新代码:

matter@Env:~/connectedhomeip$ source scripts/bootstarp.sh

注意:执行脚本过程中需要使用VPN
建议使用activate.sh,bootstarp.sh为重新配置,时间较长。

7、期间遇到的错误

a、替换文件后环境崩溃
在替换了GD32VW553 适配 matter 的文件之后,报错找不到某个文件。原因是某些快捷方式链接不成功,可能因为代码未拉取完整导致。
替换之前运行source scripts/activate.sh可以通过,替换后不可以通过。原因为替换了一些和分支不匹配的代码。
替换之后运行生成工程gn gen out,报错
ERROR at //third_party/connectedhomeip/src/app/chip_data_model.gni:197:20: Script returned non-zero exit code.
_cluster_sources = exec_script(“/home/matter/connectedhomeip/build/gn_run_binary.py /home/matter/connectedhomeip/src/app/zap_cluster_list.py --zap_file=/home/matter/connectedhomeip/examples/lighting-app/lighting-common/lighting-app.zap”)
^----------
Current dir: /home/matter/connectedhomeip/examples/lighting-app/gd32mcu/gd32vw55x/out/
Command: python /home/matter/connectedhomeip/build/gn_run_binary.py /home/matter/connectedhomeip/src/app/zap_cluster_list.py --zap_file=/home/matter/connectedhomeip/examples/lighting-app/lighting-common/lighting-app.zap
Returned 127.
查看代码后,打印了程序运行前后内容和路径,单独运行Command均正确。运行activate.sh不通过,环境报错。
注意:从git上拉取的代码一般不会有问题,不要随意更改拉取下来的代码,代码大概率是没问题的。需要从其他方面,比如分支不对、拉取的代码不完整、环境依赖项目冲突等原因。
b、pw_cli.plugins.Error: Failed to import module “pw_watch.watch” (ImportError: cannot import name ‘OneStyleAndTextTuple’ from ‘prompt_toolkit.formatted_text’ (/home/matter/connectedhomeip/.environment/pigweed-venv/lib/python3.10/site-packages/prompt_toolkit/formatted_text/init.py))
Error during bootstrap–see messages above.
错误原因:在尝试导入名为 “OneStyleAndTextTuple” 的模块时出现了问题,可能的原因是 “prompt_toolkit.formatted_text” 模块中找不到 “OneStyleAndTextTuple”。
解决方法:升级模块prompt_toolkit

matter@Env:~/connectedhomeip$ pip install --upgrade prompt_toolkit

将升级后的版本号更新在文件constraints.txt,文档中模块名为prompt-toolkit。

matter@Env:~/connectedhomeip$ gedit scripts/setup/constraints.txt

c、复制或者移动后,出现pw command not found错误时。
解决办法清除缓存,然后再配置环境

matter@Env:~/connectedhomeip$ git clean -Xdf
matter@Env:~/connectedhomeip$ source ./scripts/bootstrap.sh

d、ERROR: Cannot install -r python/gen/matter_build_venv/generated_requirements.txt (line 86) and protobuf~=3.20.1 because these package versions have conflicting dependencies.
but you have protobuf 3.20.1 which is incompatible.google-api-core 2.17.1 requires protobuf!=3.20.0,!=3.20.1,!=4.21.0,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5,<5.0.0.dev0,>=3.19.5, but you have protobuf 3.20.1 which is incompatible.
这个错误原因是安装的部分依赖包出现了冲突,查看依赖包的条件,然后手动安装合适的包版本号。
解决办法

matter@Env:~/connectedhomeip$ pip install protobuf==3.20.3
matter@Env:~/connectedhomeip$ source scripts/activate.sh

e、matter@Env:~/connectedhomeip/examples/lighting-app/gd32mcu/gd32vw55x$ gn gen out
ERROR at //third_party/connectedhomeip/src/app/chip_data_model.gni:192:26: Script returned non-zero exit code.
_cluster_sources = exec_script(“${_app_root}/zap_cluster_list.py”,
^----------
Current dir: /home/matter/connectedhomeip/examples/lighting-app/gd32mcu/gd32vw55x/out/
Command: python /home/matter/connectedhomeip/examples/lighting-app/gd32mcu/gd32vw55x/third_party/connectedhomeip/src/app/zap_cluster_list.py --zap_file …/third_party/connectedhomeip/examples/lighting-app/lighting-common/lighting-app.zap
Returned 127.
这个错误的原因为环境配置未通过。一些配置文件或者依赖文件不完全,导致执行不下去。
在使用gn生成工程之前,需要先执行source scripts/activate.sh,环境好了之后,再去生成工程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/518750.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub Desktop的常用操作【图形化】

文章目录 【1】仓库的创建和删除【2】文件操作【3】分支原理与分支操作1.分支创建2.分支合并 【4】标签 【1】仓库的创建和删除 在本地创建一个新的仓库&#xff1a; 然后输入仓库的名称&#xff0c;描述&#xff0c;并选择路径&#xff1a; 点击完后就发现我们的仓库创建好…

SD-WAN专线对本地网络有哪些要求?

SD-WAN&#xff08;软件定义广域网&#xff09;是一种新型的网络架构&#xff0c;通过软件定义的方式&#xff0c;将网络控制平面和数据转发平面进行分离&#xff0c;从而实现网络的灵活性、可编程性和自动化管理。在部署SD-WAN专线时&#xff0c;本地网络需要满足一些要求&…

HTTP代理ip如何助旅游大数据领域?怎么去建立安全代理隧道连接?

HTTP代理IP在旅游大数据领域的应用主要体现在以下几个方面&#xff1a; 数据抓取&#xff1a;旅游大数据的获取往往需要从各种在线旅游平台、社交媒体、评论网站等抓取数据。使用HTTP代理IP可以在抓取过程中隐藏真实IP&#xff0c;避免被目标网站封锁&#xff0c;从而持续、稳定…

windows无界鼠标,多机共享一套键鼠

原因 当前使用一台笔记本和一个台式机。用起来很麻烦。想要找到共享键鼠的方案。找到了无界鼠标这个软件。 安装 在两台电脑上都安装powertoy应用。 https://github.com/microsoft/PowerToys csdn下载 安装完成后找到无界鼠标打开 配置 多台电脑配置相同的key,刷新识别设…

强化学习中动作价值函数和状态价值函数的联系区别?

在强化学习中&#xff0c;动作价值函数&#xff08;Q函数&#xff09;和状态价值函数&#xff08;V函数&#xff09;都是值函数&#xff0c;用于评估在不同状态或状态动作对下的值。它们之间存在联系&#xff0c;但有一些区别&#xff1a; 动作价值函数&#xff08;Q函数&#…

力扣写法题:最后一个单词的长度

如果最后一个单词后有空格可以采用以下的写 int lengthOfLastWord(char* s) {int count0,flag0;int i(strlen(s)-1);while(i>0){if(s[i]! ) flag1;if(flag1) {if(s[i] ) break;else count;}i--;}return count; }

玩转安卓之配置gradle-8.2.1

概述&#xff1a;看了一下&#xff0c;由于gradle是国外的&#xff0c;所以下载速度很慢&#xff0c;这个老师又是很菜的类型&#xff0c;同学又不会&#xff0c;于是曹某就写这一篇文章&#xff0c;教大家学会简单的为安卓配置gradle-8.2.1。 第一步&#xff1a;下载gradle-8…

Lsposed 技术原理探讨与安装使用

目前市场上主流的Hook框架有两款,一个是Frida,另一个是Xposed。他们之间各有优缺点,简单总结来说:Frida快,但是不稳定;Xposed稳定,但是操作繁琐,减缓了分析的操作的速度。 1.1 Xposed && Lsposed 1.1.1 Xposed 系列工具发展历程 本章,先对Xposed展开讲解。…

华硕AMD主板开启TPM2.0支持

目录 配置问题设置开启 Firmware TPM开启 Security Device Support保存设置 检查 配置 主板&#xff1a;TUF Gaming B550m-e Wifi   BIOS: 3402 问题 今天更新Win11&#xff0c;告诉我不支持 TPM 2.0&#xff0c;导致更新失败。   网上搜这个问题&#xff0c;基本只提供了…

QEMU调试——通过获取设备树(dtb文件)查询开发板的外设地址信息

1、适用场景 使用qemu时&#xff0c;想快速知道开发板的地址空间映射情况&#xff0c;特别是某些外设控制器的寄存器基地址 2、查询QEMU支持的开发板 qemu-system-riscv32.exe -M ? 3、获取开发板对应的dtb文件 1、qemu-system-riscv32.exe -M nuclei_evalsoc 2、dumpdtb nucl…

记录github中那个是正常的文件下载的方式,idm正确的使用方式

百度网盘下载速度 文件说明 后缀 tar.gz 是linux 文件 zip 是 压缩文件不知道是哪个压缩文件 github 中的文件难下载 刚才我下载的时间是10.05出现了文件中断的清空 无法下载 第一个文件下载好的样子 还是用这个良心 20230924-1DM脚本激活 下载完成没有说怎么使用 我之前使用…

迷你内裤洗衣机排名前十名:推荐十款2024专业性高的内衣洗衣机

最近一段时间&#xff0c;关于内衣到底是机洗好&#xff0c;还是手洗好这个话题&#xff0c;有很多人都在讨论&#xff0c;坚决的手洗党觉得应该用手来清洗&#xff0c;机洗与其它衣物混合使用&#xff0c;会产生交叉感染&#xff0c;而且随着使用时间的推移&#xff0c;会变得…