跳到主要内容

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

配置环境

物理机

创建虚拟网桥

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)

  1. 配置 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为您计算机上可联网接口
  1. 打开 ip_forward 功能
sudo sysctl net.ipv4.ip_forward=1
  1. 关闭防火墙
sudo ufw disable

虚拟机

备注

设置 netdev 选项 -netdev bridge,id=net0 -device virtio-net-device,netdev=net0,mac=12:22:33:44:55:66 并以 sudo 方式运行 qemu-system-riscv64。

进入系统后设置 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,在物理机中连接设备。

$ hdc tconn 192.168.137.2:5555
Connect OK
$ hdc list targets -v
192.168.137.2:5555 TCP Connected localhost hdc