HDC 使用指导
下面将介绍 hdc 的具体使用。
下载 SDK 包
您可以从点击下方的按钮下载对应版本的 Public SDK 包,请根据您的系统选择以 toolchains 开头的合适版本。
获取Public SDK创建 hdc 软链接
unzip toolchains-linux-x64-3.2.13.5.zip &&
sudo ln -sf toolchains/hdc /usr/local/bin/hdc
配置环境
物理机
- Liunx
- Windows
创建虚拟网桥
sudo modprobe tun tap &&
sudo ip link add br0 type bridge &&
sudo ip address add 192.168.137.1/24 dev br0 &&
sudo ip link set dev br0 up
创建 bridge 配置文件 (官方安装包已集成此配置)
mkdir -p /path/to/qemu/etc/qemu/ &&
echo "allow all" >> /path/to/qemu/etc/qemu/bridge.conf
允许连接外部网络 (Optional)
- 配置 iptables
ip -o route get 8/8 2>/dev/null | grep -o 'dev [^ ]*' | cut -d' ' -f2 # 获取可联网接口
eth0
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # 替换eth0为您计算机上可联网接口
- 打开 ip_forward 功能
sudo sysctl net.ipv4.ip_forward=1
- 关闭防火墙
sudo ufw disable
下载安装 openvpn: https://community.openvpn.net/openvpn/wiki/Downloads 并给 TAP 网络接口设置 IP 和 netmask。
Optional: 打开可上网网络接口->右键属性->共享->勾选“允许其他用户通过此计算机的 Internet 连接来连接”->家庭网络连接选择“OpenVPN TAP-Windows6”以上操作会自动给 OpenVPN TAP-Windows6 设置 IP 为 192.168.137.1
如果不需要连接外部网络可以手动设置。OpenVPN TAP-Windows6->右键属性->网络->Internet 协议版本 4(TCP/IPv4) IP 地址:192.168.137.1 子网掩码:255.255.255.0
虚拟机
- Liunx
- Windows
设置 netdev 选项 -netdev bridge,id=net0 -device virtio-net-device,netdev=net0,mac=12:22:33:44:55:66 并以 sudo 方式运行 qemu-system-riscv64。
设置 netdev 选项 -netdev tap,id=net0,ifname="OpenVPN TAP-Windows6" -device virtio-net-device,netdev=net0,mac=12:22:33:44:55:66 将"OpenVPN TAP-Windows6"换成真实的名称。
进入系统后设置 ip 和 route。
ifconfig eth0 192.168.137.2/24 && route add default gw 192.168.137.1
默认系统会自动启动 hdcd,可通过命令检查当前 hdcd 使用的端口号
默认端口号为 5555,如果端口冲突会随机指定新的端口。
# netstat -nap | grep hdcd | grep tcp
tcp 0 0 0.0.0.0:5555 0.0.0.0:* LISTEN 104/hdcd
如果进程未启动,可手动启动 hdcd 进程。
# hdcd -t
[D][2023-07-17 09:08:01.236][e8c5ef08][main.cpp:141] Foreground cli-mode
Option TCP enabled
[D][2023-07-17 09:08:01.252][e8c5ef08][main.cpp:304] HdcDaemon main run
[I][2023-07-17 09:08:01.257][e8c5ef08][session.cpp:25] Program running. Ver: 1.1.2a Pid:2394
[I][2023-07-17 09:08:01.259][e8c5ef08][session.cpp:33] set UV_THREADPOOL_SIZE:16
[D][2023-07-17 09:08:01.267][e8c5ef08][session.cpp:44] loopMain init
[D][2023-07-17 09:08:01.271][e8c5ef08][daemon.cpp:99] HdcDaemon InitMod
[D][2023-07-17 09:08:01.275][e8c5ef08][daemon.cpp:101] bEnableTCP:1,bEnableUSB:0
[D][2023-07-17 09:08:01.279][e8c5ef08][daemon_tcp.cpp:136] HdcDaemonTCP init
[I][2023-07-17 09:08:01.288][e8c5ef08][daemon_tcp.cpp:143] TCP listen on port:[45111]
[D][2023-07-17 09:08:01.291][e8c5ef08][daemon.cpp:122] bEnableUART:0
连接虚拟机
根据虚拟机中 hdcd 返回的 tcp port,在物理机中连接设备。
- Liunx
- Windows
$ hdc tconn 192.168.137.2:5555
Connect OK
$ hdc list targets -v
192.168.137.2:5555 TCP Connected localhost hdc
在 toolchains 目录下使用鼠标右键选择"在终端中打开", 如果连接失败可以多尝试几次。
> .\hdc.exe tconn 192.168.137.2:5555
[Fail]Connect failed
> .\hdc.exe tconn 192.168.137.2:5555
Connect OK