树莓派4B Ubuntu22.04编译chip-tool
克隆代码
- 克隆Matter仓库代码
克隆深度为1,可以减少硬盘空间的使用,另外也可以加快进度。
git clone --depth=1 https://github.com/project-chip/connectedhomeip.git
- 针对Linux平台检出第三方平台仓库代码
由于第三方那个平台仓库较多,需要花费较多时间,至少30分钟(实际取决于网络速度)。
cd connectedhomeip
git submodule update --init --depth 1
前置环境
安装必要的软件工具和库
sudo apt-get update
sudo apt-get install git gcc g++ pkg-config cmake 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 \
default-jre
检查环境
这一步需要检查环境,并安装必要的环境工具和库,需要花费较长时间(至少30分钟)。
cd connectedhomeip
source scripts/activate.sh
编译项目
由于TF卡IO性能瓶颈,内存搬运到TF卡太慢了,内存就会爆满,导致编译过程中会卡死,报错:INFO:task xxxx:634 blocked for more than 120 seconds
- 查看内存:
ubuntu@ubuntu:~$ free -h
total used free shared buff/cache available
Mem: 3.7Gi 157Mi 3.2Gi 3.0Mi 313Mi 3.4Gi
Swap: 0B 0B 0B
此时,发现交换内存没有使用,这就是导致编译卡死的原因。
启用交换内存,执行如下步骤:
# 创建 4GB 交换文件(建议大小)
sudo fallocate -l 4G /swapfile
# 设置正确权限
sudo chmod 600 /swapfile
# 设置为交换文件
sudo mkswap /swapfile
# 立即启用交换文件
sudo swapon /swapfile
查看是否启用成功:
# 验证
free -h
现在应该能看到 Swap 显示约 4GB。
设置永久有效:
# 备份 fstab
sudo cp /etc/fstab /etc/fstab.bak
# 添加交换文件到 fstab
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
由于树莓派性能不够,这一步编译时间较长(预计需要2小时)。
cd connectedhomeip
gn gen out/host
ninja -C out/host