developtools_hdc/README_zh.md
m30058418 890cac6765 feat:Readme描述修改
Signed-off-by: m30058418 <maliang87@huawei.com>
2024-06-17 09:16:59 +08:00

23 KiB
Raw Blame History

HDC-OpenHarmony设备连接器

简介

HDCOpenHarmony Device Connector 是为开发人员提供的用于设备连接调试的命令行工具pc端开发机使用命令行工具hdc该工具需支持部署在Windows/Linux/Mac等系统上与OpenHarmony设备或模拟器进行连接调试通信。PC端hdc工具需要针对以上开发机操作系统平台分别发布相应的版本设备端hdc daemon需跟随设备镜像发布包括对模拟器进行支持。下文将介绍hdc的常用命令及使用举例。

架构

hdc主要有三部分组成

  1. hdc client部分运行于开发机上的客户端用户可以在开发机命令终端windows cmd/linux shell下请求执行相应的hdc命令运行于开发机器其它的终端调试IDE也包含hdc client。

  2. hdc server部分作为后台进程也运行于开发机器server管理client和设备端daemon之间通信包括连接的复用、数据通信包的收发以及个别本地命令的直接处理。

  3. hdc daemon部分daemon部署于OpenHarmony设备端作为守护进程来按需运行负责处理来自client端的请求。

目录

/developtools
├── hdc               # hdc代码目录
│   └── src
│       ├── common    # 设备端和host端公用的代码目录
│       ├── daemon    # 设备端的代码目录
│       ├── host      # host端的代码目录
│       └── test      # 测试用例的代码目录

pc端编译说明

hdc pc端可执行文件编译步骤

  1. 编译命令编译sdk命令 请参考https://gitee.com/openharmony/build/blob/master/README_zh.md 仓编译sdk说明 执行其指定的sdk编译命令来编译整个sdk hdc会被编译打包到里面。

  2. 编译在目标开发机上运行上面调整好的sdk编译命令 正常编译hdc会输出到sdk平台相关目录下 注意: ubuntu环境下只能编译windows/linux版本工具mac版需要在macos开发机上编译。

pc端获取说明

1.下载sdk获取(建议)

通过访问本社区网站下载[dailybuilds](http://ci.openharmony.cn/workbench/cicd/dailybuild/dailylist) 或正式发布的sdk压缩包从中根据自己平台到相应的目录toolchain下解压提取。

2.自行编译

编译请参考上面单独小节本项目仓prebuilt目录下不再提供预制。

3.支持运行环境

linux版本建议ubuntu 18.04以上 64位其他相近版本也可libc++.so引用错误请使用ldd/readelf等命令检查库引用 windows版本建议windows10 64位如果低版本windows winusb库缺失请使用zadig更新库。对于复合设备需要使用zadig工具安装libusb-win32驱动。

Linux端USB设备权限说明

在Linux下在非root权限下使用hdc会出现无法找到设备的情况此问题原因为用户USB操作权限问题解决方法如下

  1. 开启非root用户USB设备操作权限 该操作方法简单易行,但是可能存在潜在安全问题,请根据使用场景自行评估

    sudo chmod -R 777 /dev/bus/usb/
    
  2. 永久修改 USB 设备权限 1使用lsusb命令找出USB设备的vendorID和productID 2创建一个新的udev规则

    编辑UDEV加载规则用设备的"idVendor"和"idProduct"来替换默认值。MODE="0666"表示USB设备的权限 GROUP代表用户组要确保此时登录的系统用户在该用户组中 可用 "usermod -a -G username groupname" 将用户添加到用户组中

    sudo vim /etc/udev/rules.d/90-myusb.rules
    SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", GROUP="users", MODE="0666"
    

    重启电脑或重新加载 udev 规则

    sudo udevadm control --reload
    
  3. su 切换到root用户下运行测试程序

    sudo hdc list targets
    

命令帮助

hdc当前常用命令如下使用hdc -h或者hdc --help查看使用方法

表 1 hdc常用命令列表

Option

Description

-t key

用于指定目标设备id设备id可用'hdc list targets'查询

举例hdc -t *****(设备id) shell

-s socket

用于指定服务监听的socket配置

举例hdc -s ip:port

-h/help -v/version

用于显示hdc相关的帮助、版本信息

-l 0-5

用于指定运行时日志等级

举例: hdc -l5 start

checkserver

用于获取client-server版本

举例: hdc checkserver

list targets[-v]

显示所有已经连接的目标设备列表-v选项显示详细信息

举例: hdc list targets

target mount

以读写模式挂载/vendor、/data等分区因为安全性问题需要挂在根目录或者/system分区
请单独使用'hdc shell mount -o rw,remount /'等命令

举例: hdc target mount

target boot

重启设备

举例: hdc target boot

smode [-r]

授予后台服务进程root权限 使用-r参数取消授权

举例: hdc smode

kill [-r]

终止hdc服务进程, -r选项会触发再次重启hdc server

举例: hdc kill

start [-r]

启动hdc服务进程, -r选项会触发重启hdc server

举例: hdc start

tconn host[:port][-remove]

通过【ip地址端口号】来指定连接的设备

使用TCP模式连接设备需在USB模式工作下使用tmode tcp切换至TCP工作模式或者在
系统属性值中设置persist.hdc.mode属性值为tcp如果需要监听固定TCP端口需要再设置
persist.hdc.port的端口号反之则TCP监听端口随机

举例: hdc tconn 192.168.0.100:10178

tmode usb

执行后设备端对应daemon进程重启并首先选用usb连接方式

tmode port port-number

执行后设备端对应daemon进程重启并优先使用网络方式连接设备如果连接失败再选择usb连接

file send local remote

从host端发送文件至设备

举例: hdc file send E:\a.txt /data/local/tmp/a.txt

file recv [-a] remote local

从设备端拉出文件至本地host端

举例: hdc file recv /data/local/tmp/a.txt ./a.txt

fport localnode remotenode

端口转发主机端口 转发数据到 设备侧端口

举例: hdc fport tcp:1234 tcp:1080

rport remotenode localnode

端口转发设备侧端口 转发数据到 主机端口

举例: hdc rport tcp:1234 tcp:1080

fport ls

展示全部转发任务

fport rm

删除指定转发任务

举例: hdc fport rm tcp:1234 tcp:1080

install [-r/-s/-g] package

安装OpenHarmony package

举例: hdc install E:\***.hap

uninstall [-k/-s] package

卸载OpenHarmony应用

hilog

支持查看抓取hilog调试信息

举例: hdc hilog

shell [command]

远程执行命令或进入交互命令环境

举例: hdc shell

jpid

获取JDWP调试进程列表

以下是常用hdc命令示例供开发者参考

  • 查看设备连接信息

    hdc list targets
    
  • 往设备中推送文件

    hdc file send  E:\a.txt  /data/local/tmp/a.txt
    
  • 从设备中拉取文件

    hdc file recv  /data/local/tmp/a.txt   ./a.txt
    
  • 安装应用

    hdc install E:\***.hap
    
  • 查看日志

    hdc hilog
    
  • 进入命令行交互模式

    hdc shell
    
  • TCP网络连接。

    hdc tconn 192.168.0.100:10178
    

使用问题自查说明

工具使用过程中碰到问题,可以参考如下流程自助排查:

  • step1 先检查pc(host)端hdc 和L2设备端hdcd版本是否一致(-v 查看版本):
    • step1a 版本不一致请更新使用一致版本再验证;
    • step1b 版本一致请继续下面排查step2步骤
  • step2 检查pc(host)端设备管理器设备信息是否正常(设备是否正常加载显示、驱动、id是否正常):
    • step2a 设备管理器设备异常或无设备, 请结合板测试设备端串口下确认下usb部分设备枚举上报是否异常
    • step2b 设备管理器设备正常时, 1list targets 是否正常; 2hdc kill 后重试是否正常;

注意:客户端和设备端版本保持一致(hdc -v,hdcd -v参数查看版本)!

FAQ

    1. list targets无设备
    请参考上面《使用问题自查说明》小节 
    1检查设备是否连接正常
    2host端设备管理器设备信息是否正常
    3两端工具版本是否一致
    4设备端hdcd是否启动正常
    如果仍然无法解决问题,请尝试下面两种方法进行恢复 
    1执行命令hdc kill来重启pc侧hdc服务
    2重启端侧设备
    
    1. 同样版本windows下正常linux下无设备
    同问题1同样排查步骤另外注意在root权限下执行
    如果server进程起不来请先sudo rm /tmp/*.pid 然后再使用sudo 执行list targets看看是否正常显示设备列表
    
    1. windows版本工具无法执行报错
    1从dailybuild或正式发布的sdk压缩包重新解压提取工具
    2检查文件大小和版本、校验哈希值 
    3本工具是控制台命令行下执行即可适配平台下无任何组件和驱动依赖不需要安装不要尝试双击运行
    
    1. system分区推文件报错 [Fail]Error opening file: read-only file system
    推送文件前参考执行如下命令:
    hdc smode
    hdc shell mount -o rw,remount /