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.mfbz.cn/a/437357.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

书籍强烈推荐:“计算机界三大神书”之一 ——SICP

文章目录 1. 书籍推荐2. 粉丝福利3. 自主购买 1. 书籍推荐 《计算机程序的构造和解释》&#xff08;Structure and Interpretation of Computer Programs&#xff0c;简记为 SICP&#xff09;是MIT的基础课教材&#xff0c;出版后引起计算机教育界的广泛关注&#xff0c;对推动…

1. Gin框架入门

文章目录 一、Gin框架介绍二、RESTful API三、Gin渲染1. HTML渲染2. 自定义模板函数3. 静态文件处理4. 使用模板继承5. 补充文件路径处理6. JSON渲染7. XML渲染8. YMAL渲染9. protobuf渲染 四、Gin获取各种方式传递过来的参数1、获取querystring参数2、获取form参数3、获取path…

Vue 使用@别名

1. 安装 types/node types/node 包允许您在TypeScript项目中使用Node.js的核心模块和API&#xff0c;并提供了对它们的类型检查和智能提示的支持。 npm install types/node --save-dev 比如安装之后&#xff0c;就可以导入nodejs的 path模块&#xff0c;在下面代码 import pat…

【海贼王的数据航海:利用数据结构成为数据海洋的霸主】栈和队列

目录 1 -> 栈 1.1 -> 栈的概念及结构 1.2 -> 栈的实现 1.2.1 -> Stack.h 1.2.2 -> Stack.c 1.2.3 -> Test.c 2 -> 队列 2.1 -> 队列的概念及结构 2.2 -> 队列的实现 2.2.1 -> Queue.h 2.2.2 -> Queue.c 1 -> 栈 1.1 -> 栈的…

C#开源且免费的Windows桌面快速预览神器 - QuickLook

前言 今天给大家推荐一款由C#开源且免费的Windows桌面快速预览神器&#xff1a;QuickLook。 工具介绍 QuickLook是一款在Windows操作系统上的实用工具&#xff0c;它提供了一种快速预览文件内容的方式。通过使用QuickLook&#xff0c;用户可以在不打开文件的情况下&#xff…

Linux系统编程(六)高级IO

目录 1. 阻塞和非阻塞 IO 2. IO 多路转接&#xff08;select、poll、epoll&#xff09; 3. 存储映射 IO&#xff08;mmap&#xff09; 4. 文件锁&#xff08;fcntl、lockf、flock&#xff09; 5. 管道实例 - 池类算法 1. 阻塞和非阻塞 IO 阻塞 IO&#xff1a;会等待操作的…

1. C++ 编译期多态与运行期多态

C 编译期多态与运行期多态 今日的C不再是个单纯的“带类的C”语言&#xff0c;它已经发展成为一个多种次语言所组成的语言集合&#xff0c;其中泛型编程与基于它的STL是C发展中最为出彩的那部分。在面向对象C编程中&#xff0c;多态是OO三大特性之一&#xff0c;这种多态称为运…

澳大利亚昆士兰大学博士后—成瘾和青少年药物使用

澳大利亚昆士兰大学博士后—成瘾和青少年药物使用 昆士兰大学&#xff08;The University of Queensland&#xff09;&#xff0c;简称“昆大”“UQ”&#xff0c;该校始建于1909年&#xff0c;是一所位于澳大利亚昆士兰州的公立综合性大学。同时还是六所砂岩学府之一&#xff…

Linux ubuntu 写c语言Hello world

文章目录 创建hello.c 文件进入hello.c 文件使用vim 编辑器进行编辑下载gcc 编辑器调用gcc 进行编译hello.c 创建hello.c 文件 touch hello.c进入hello.c 文件 vi hello.c使用vim 编辑器进行编辑 下载gcc 编辑器 sudo apt update sudo apt install gcc第一个语句是更新&am…

7.2 支付模块 - 付费课程选课、支付

支付模块 - 付费课程选课、支付模型 文章目录 支付模块 - 付费课程选课、支付模型一、需求分析1.1 执行流程1.2 订单服务设计1.3 创建订单服务1.4 支付宝接口 说明1.5 支付宝下单执行流程 二、支付 准备2.1 Maven 坐标2.2 支付宝配置参数2.3 生成二维码2.3.1 Maven坐标2.3.2 工…

英伟达板子4----存储满了系统黑屏

记录一个bug&#xff0c;因为最近在做边缘端视频处理的内容&#xff0c;就把视频存储在边端设备&#xff0c;但是发现由于边缘端设备的存储太小了&#xff0c;导致把ubuntu端的存储&#xff08;只有28个Gib&#xff09;给吃满了。 然后搜了一篇博客说重启就能释放一些空间&…

任务调度新境界:探秘ScheduledExecutorService的异步魔力

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 任务调度新境界&#xff1a;探秘ScheduledExecutorService的异步魔力 前言ScheduledExecutorService的基本概念基本概念&#xff1a;为何它是 Java 中任务调度的首选工具&#xff1a;基本用法&#xf…

使用mapbox navigation搭建一个安卓导航 示例

一.代码示例地址&#xff1a; https://github.com/mapbox/mapbox-navigation-android-examples/tree/main 二. 具体步骤&#xff1a; git clone gitgithub.com:mapbox/mapbox-navigation-android-examples.git Go to app/src/main/res/values Look for mapbox_access_token.…

力扣每日一题 找出字符串的可整除数组 数论

Problem: 2575. 找出字符串的可整除数组 文章目录 思路复杂度Code 思路 &#x1f468;‍&#x1f3eb; 灵神题解 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code class Solution {public int[] divisibilityArray(String word, int m){in…

多层菜单的实现方案(含HierarchicalDataTemplate使用)

1、递归 下面是Winform的递归添加菜单栏数据&#xff0c;数据设置好父子id方便递归使用 在TreeView的控件窗口加载时&#xff0c;调用递归加载菜单 private void LoadTvMenu(){this.nodeList objService.GetAllMenu(); // 通过Service得到全部数据// 创建一个根节点this.t…

Salesforce 2024财年爆发式增长!第一次现金分红

对于Salesforce来说&#xff0c;这是非凡的转型之年&#xff0c;所有的关键指标都表现强劲&#xff0c;现金流和利润增长创下了纪录。截至第四季度末&#xff0c;Salesforce的剩余履约价值&#xff08;RPO&#xff09;总额为569亿美元&#xff0c;同比增长17%。 Marc Benioff …

Unity引擎关于APP后台下载支持的实现问题

1&#xff09;Unity引擎关于APP后台下载支持的实现问题 2&#xff09;Prefab对DLL中脚本的引用丢失 3&#xff09;Unity DOTS资源加载问题 4&#xff09;UnitySendMessage和_MultiplyMatrixArrayWithBase4x4_NEON调用导致崩溃 这是第376篇UWA技术知识分享的推送&#xff0c;精选…

一文彻底搞懂从输入URL到显示页面的全过程

简略版&#xff1a; 用户输入URL后&#xff0c;浏览器经过URL解析、DNS解析、建立TCP连接、发起HTTP请求、服务器处理请求、接收响应并渲染页面、关闭TCP连接等步骤&#xff0c;最终将页面显示给用户。 详细版&#xff1a; URL解析&#xff1a;浏览器根据用户输入的URL&#x…

字符函数

1.字符分类函数 专门做字符分类的函数&#xff0c;都包含一个头文件#include <ctype.h> islower() 是一个用于判断字符是否为小写字母的函数。 通常情况下&#xff0c;如果一个字符是小写字母&#xff0c;则 islower() 函数会返回 true 或者一个表示真的值&#xff08…

STM32标准库——(19)PWR电源控制

1.PWR简介 PWR属于外设部分 调用时需要先开启时钟 2.电源框图 这个图可以分为三个部分&#xff0c;最上面是模拟部分供电叫做VDDA&#xff0c;中间是数字部分供电&#xff0c;包括两块区域&#xff0c;VDD供电区域和1.8v供电区域&#xff0c;下面是后备供电&#xff0c;叫做VB…
最新文章