本文聚焦 Qt 开发迭代场景下的通信通道配置,不是通用的板子连接教程。
开发环境架构
Windows 11(主机)
│
├─── USB OTG (Type-C) ──────────────────── 泰山派 3M 开发板
│ ↑ 串口调试、ADB(在 Windows 端操作)
│
└─── VMware 桥接网络 ──── Ubuntu 22.04(虚拟机/开发环境)
│
└─── 以太网(桥接同网段)── 泰山派 3M 开发板
↑ SSH、SCP、NFS(在 Ubuntu 虚拟机中操作)2
3
4
5
6
7
8
9
串口和 ADB 在 Windows 端操作,参见:串口调试、ADB 使用。
SSH / SCP / NFS 和交叉编译均在 Ubuntu 虚拟机中操作,是本文的重点。
前置条件
- 板子已烧录 Buildroot 系统,并已通过网线连接路由器
- 已通过串口确认板子的 IP 地址(串口执行
ip addr show eth0,查看inet字段)
本章与 SDK 编译无依赖关系,可以在等待全量编译的同时进行通信通道配置。
以太网配置教程:以太网(Buildroot)
本文后续示例中,板子 IP 为
192.168.1.100,Ubuntu 虚拟机 IP 为192.168.1.200,请替换为实际值。
设置 root 密码(必须)
Buildroot 默认 root 空密码,多数 SSH 客户端(包括 MobaXterm)会拒绝空密码连接。在板子串口终端中执行:
passwd设置密码后,后续所有 SSH、SCP 操作才能正常使用。
SSH 连接
以下操作均在 Ubuntu 虚拟机中执行。
ssh root@192.168.1.100配置免密登录(推荐)
# 生成密钥对(已有则跳过)
ssh-keygen -t ed25519 -C "dev"
# 将公钥推送到板子
ssh-copy-id root@192.168.1.1002
3
4
5
若 ssh-copy-id 不可用,手动添加:
cat ~/.ssh/id_ed25519.pub | ssh root@192.168.1.100 \
"mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"2
SCP 文件传输
SCP 适合偶尔传输文件,在 Ubuntu 虚拟机中执行:
# 推送编译产物到板子
scp ./tspi-sysmonitor root@192.168.1.100:/root/
# 从板子拉取文件
scp root@192.168.1.100:/root/app.log ./2
3
4
5
频繁改动时 SCP 效率较低,推荐使用 NFS。
NFS 共享(开发迭代首选)
板子直接挂载 Ubuntu 虚拟机上的目录,编译完成后无需传输,板子立即可以运行最新的可执行文件。
Ubuntu 虚拟机配置 NFS Server
# 安装
sudo apt update && sudo apt install nfs-kernel-server -y
# 创建共享目录
sudo mkdir -p /srv/nfs/qt-dev
sudo chown -R $USER:$USER /srv/nfs/qt-dev2
3
4
5
6
编辑 /etc/exports,添加导出规则:
/srv/nfs/qt-dev *(rw,sync,no_subtree_check,no_root_squash)
*表示允许所有网段访问,开发环境图省事。生产环境应限制为具体网段如192.168.1.0/24。no_root_squash让板端 root 保持 root 权限,开发环境必需。
应用配置:
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server
showmount -e localhost
# 预期输出: /srv/nfs/qt-dev *2
3
4
板子挂载 NFS
mkdir -p /mnt/nfs
mount -t nfs -o nolock,vers=3 192.168.1.200:/srv/nfs/qt-dev /mnt/nfs2
验证:df -h | grep nfs
若提示 mount: unknown filesystem t',说明 Buildroot 镜像未包含 NFS 客户端,需在 ./build.sh bconfig 中启用 Target packages → Networking applications → nfs-utils,然后重新编译烧录。
开机自动挂载(可选):
echo "192.168.1.200:/srv/nfs/qt-dev /mnt/nfs nfs nolock,vers=3 0 0" >> /etc/fstab确保板子启动时 Ubuntu 虚拟机的 NFS 服务已就绪,否则自动挂载失败会导致启动延迟。
NFS 挂载卡住?检查网段
NFS 要求板子能主动连接 Ubuntu 虚拟机。如果板子和虚拟机不在同一网段(常见于通过 Windows 网络共享上网的场景),板子发出的 NFS 请求到不了虚拟机,mount 会一直卡住。
排查方法:在板子上 ping <Ubuntu虚拟机IP>,ping 不通说明回程路由不通。解决方案:将 VMware 网络适配器改为桥接模式,桥接到板子所连的物理网卡,让两边在同一网段。
通信方式对比
| 方式 | 速度 | 典型用途 |
|---|---|---|
| SSH + SCP | 高 | 远程 shell、偶尔传文件 |
| NFS | 高 | 开发迭代首选,编译完即运行 |
| ADB | 中 | 网络不可用时的备选(Windows 端) |
| 串口 | 低 | 启动调试、获取 IP(Windows 端) |
下一步
通信通道配置完成后,先获取示例项目源码,然后选择一种编译方式开始开发。
接下来有两种开发方式,选择一种即可:
- 喜欢图形界面 → Qt-Creator 集成开发(推荐新手)
- 喜欢终端操作或需要 CI/CD → 命令行交叉编译
两种方式使用相同的工具链,编译产物完全一致,部署方式也相同。