OpenHarmony之hdc

OpenHarmony之hdc

简介

hdc(OpenHarmony Device Connector)是 OpenHarmony 为开发人员提供的用于调试的命令行工具,通过该工具可以在Windows/Linux/MacOS等系统上与开发机或者模拟器进行交互。

类似于Android的adb,和adb类似,使用hdc的前提是开发机器hdc工具已安装好,设备端hdc已安装且已配置好。

开发机HDC

开发机hdc工具通过OpenHarmony sdk获取,hdc在sdk的 toolchains目录下

这里我对应的是OpenHarmony-3.2-Release的 ohos-sdk-full

解压:

zdd@xxx-PC:~/WorkSpace/OHOS/ohos-sdk$ tree
.
├── linux
│   ├── ets-linux-x64-3.2.15.3-Release.zip
│   ├── js-linux-x64-3.2.15.3-Release.zip
│   ├── native-linux-x64-3.2.15.3-Release.zip
│   ├── previewer-linux-x64-3.2.15.3-Release.zip
│   └── toolchains-linux-x64-3.2.15.3-Release.zip
└── windows
    ├── ets-windows-x64-3.2.15.3-Release.zip
    ├── js-windows-x64-3.2.15.3-Release.zip
    ├── native-windows-x64-3.2.15.3-Release.zip
    ├── previewer-windows-x64-3.2.15.3-Release.zip
    └── toolchains-windows-x64-3.2.15.3-Release.zip

根据自己使用的系统,继续解压对应的 toolchains压缩包,hdc等工具就在 toolchains里面。

设备端HDC

设备端hdc工具一般会随编译构建打包进文件系统。

设备端配置分2种不同的通路:USB或网络

  • USB的话,主要保证USB能用能通(驱动OK),使能USB的 otg模式或 peripheral 模式,并通过configfs配置好usb相关的参数并启动对应服务,一般是用init的cfg文件来配,例如rk3588的为 init.rk3568.usb.cfg,这里不详细展开了
    {
        "jobs" : [{
                "name" : "boot",
                "cmds" : [
                    "mkdir /dev/usb-ffs 0770 shell shell",
                    "mkdir /dev/usb-ffs/hdc 0770 shell shell",
                    "mount configfs none /config",
                    "mkdir /config/usb_gadget/g1 0770 shell shell",
                    "write /config/usb_gadget/g1/idVendor 0x2207",
                    "write /config/usb_gadget/g1/idProduct 0x0018",
                    "write /config/usb_gadget/g1/os_desc/use 1",
                    "write /config/usb_gadget/g1/bcdDevice 0x0223",
                    "write /config/usb_gadget/g1/bcdUSB 0x0200",
                    "mkdir /config/usb_gadget/g1/strings/0x409 0770",
                    "copy /sys/block/mmcblk0/device/cid /config/usb_gadget/g1/strings/0x409/serialnumber",
                    "write /config/usb_gadget/g1/strings/0x409/manufacturer Rockchip",
                    "write /config/usb_gadget/g1/strings/0x409/product \"HDC Device\"",
                    "mkdir /config/usb_gadget/g1/functions/ffs.hdc",
                    "mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell",
                    "mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell",
                    "write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1",
                    "write /config/usb_gadget/g1/os_desc/qw_sign MSFT100",
                    "write /config/usb_gadget/g1/configs/b.1/MaxPower 500",
                    "symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1",
                    "mount functionfs hdc /dev/usb-ffs/hdc uid=2000,gid=2000",
                    "setparam sys.usb.configfs 1",
                    "setparam sys.usb.controller fcc00000.dwc3"
                ]
            }, {
                "name" : "param:sys.usb.config=none && param:sys.usb.configfs=1",
                "condition" : "sys.usb.config=none && sys.usb.configfs=1",
                "cmds" : [
                    "write /config/usb_gadget/g1/os_desc/use 0",
                    "setparam sys.usb.ffs.ready 0"
                ]
            }, {
                "name" : "param:init.svc.hdcd=stopped",
                "condition" : "init.svc.hdcd=stopped",
                "cmds" : [
                    "setparam sys.usb.ffs.ready 0"
                ]
            }, {
                "name" : "param:sys.usb.config=hdc && param:sys.usb.configfs=1",
                "condition" : "sys.usb.config=hdc && sys.usb.configfs=1",
                "cmds" : [
                    "write /config/usb_gadget/g1/idProduct 0x5000",
                    "write /config/usb_gadget/g1/os_desc/use 1"
                ]
            }
        ]
    }
  • 网络的话,主要保证网络能用能通(驱动OK),配置好网络IP等,设置hdc参数(主要是模式和端口),并启动hdcd服务,通过命令的方式如下,也可通过配置文件的方式:
    # 设置hdc参数
    param set persist.hdc.mode tcp
    param set persist.hdc.port xxxx
    # 启动hdcd服务
    hdcd &

    一些常用命令

    当两端都配置好之后就可以愉快地使用hdc工具了,下面列举了一些常用的命令,更多说明详见官方文档或help:

    #查询设备列表(-v 打印设备详细信息)
    hdc list targets[-v]
    
    #通过【ip地址:端口号】来连接指定的设备(-remove 断开与指定设备的连接)
    hdc tconn host[:port][-remove] 
    #设备端对应daemon进程重启,并首先选用USB连接方式
    hdc tmode usb
    
    #调试
    hdc shell
    hdc hilog
    
    #以读写模式挂载系统分区
    hdc target mount
    
    #设备重启
    hdc target boot
    
    #授予后台服务进程root权限, 使用-r参数取消授权
    hdc smode
    hdc smode -r
    
    #发送文件至远端设备
    hdc file send ./a.txt /data/local/tmp/a.txt
    #从远端设备接收文件至本地
    hdc file recv /data/local/tmp/a.txt ./a.txt
    
    #安装HAP(-r 替换已存在应用 -d 允许降级安装 -g 应用动态授权)
    hdc install [-r/-d/-g] package
    #卸载HAP -k 保留/data/cache
    hdc uninstall [-k] package

    总结

    以上的内容主要简单介绍了《OpenHarmony之hdc》的教程

    要想成为一名鸿蒙高级开发,以上知识点是必须要掌握的,除此之外,还需要掌握一些鸿蒙应用开发相关的一些技术,需要我们共同去探索。

    为了节省大家一些查找的时间,这边联合几位行业大佬,为大家准备了一份《Open Harmony4.0&Next》的学习导图从入门到进阶再到南北向开发实战的一整套完整体系,想要学习了解更多鸿蒙开发的相关知识可以借鉴:

    除了以上的知识内容,我还为大家整理了一份《鸿蒙 (Harmony OS)开发学习手册》都是整理成PDF文档方式,分享给大家参考学习:《做鸿蒙应用开发到底学习些啥?》

    《鸿蒙 (Harmony OS)开发学习手册》

    一、入门必看

    1. 应用开发导读(ArkTS)

    2. 应用开发导读(Java)

    3.......

    二、HarmonyOS 概念

    1. 系统定义

    2. 技术架构

    3. 技术特性

    4. 系统安全

    5......

    三、如何快速入门?《鸿蒙基础入门开发宝典!》

    1. 基本概念

    2. 构建第一个ArkTS应用

    3. 构建第一个JS应用

    4. ……

    四、开发基础知识

    1. 应用基础知识

    2. 配置文件

    3. 应用数据管理

    4. 应用安全管理

    5. 应用隐私保护

    6. 三方应用调用管控机制

    7. 资源分类与访问

    8. 学习ArkTS语言

    9. ……

    五、基于ArkTS 开发

    1. Ability开发

    2. UI开发

    3. 公共事件与通知

    4. 窗口管理

    5. 媒体

    6. 安全

    7. 网络与链接

    8. 电话服务

    9. 数据管理

    10. 后台任务(Background Task)管理

    11. 设备管理

    12. 设备使用信息统计

    13. DFX

    14. 国际化开发

    15. 折叠屏系列

    16. ……

    更多了解更多鸿蒙开发的相关知识可以参考:《鸿蒙开发学习指南》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/307275.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

买卖股票,会产生这些费用,你知道吗?

8月27日,财政部、税务总局发布公告,为活跃资本市场、提振投资者信心,自2023年8月28日起,证券交易印花税实施减半征收。 不少网友看到新闻后,摩拳擦掌、就等开盘。但在一条写到“这算是近期少有的重大短期利好&#xf…

007-可调脉冲数触发之FPGA实现(Zynq也可驱动,带启动停止及完成中断输出)

文章目录 前言一、设计思路二、代码及仿真1.资源消耗2.具体代码3.仿真波形 总结 前言 此代码是在做显微镜高速聚焦系统中自己写的步进电机电机驱动源码,为了达到最快的驱动速度,因此选用脉冲触发方式进行驱动。在电机驱动的过程中往往需要对脉冲进行使能…

开源分布式任务调度系统DolphinScheduler本地部署与远程访问

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问,结合内…

two-stream HANet

作者未提供代码

全光谱照明灯真的护眼吗?适合考公使用的全光谱台灯

全光谱护眼台灯是一种新型的台灯产品,其特点是能够提供全光谱照明,给用户带来更好的视觉体验和护眼效果。传统的台灯大多使用白炽灯或荧光灯作为光源,这种光源在光谱中只包含有限的波长,导致照明效果不够均匀,容易产生…

VSCode C/C++(gdb)调试指南

1、安装插件 2、F5开启调试 左侧侧边栏->确保打开回调栈 右键函数栈->查看反汇编 3、打印寄存器、函数反汇编等 命令: 查看main反汇编 -exec disassemble /m main 查看寄存器 -exec info r 打印某个变量 -exec print s 或者 --s 打印寄存器,如p…

人大金仓恒生电子助力湘财证券TA系统国产化升级

近日,人大金仓&恒生电子助力湘财证券TA(登记过户)系统国产化升级上线,系统在性能、稳定性、安全可靠性等方面均表现良好。自2022年至今,在金仓数据库的支撑下,湘财证券已完成TA及其他近30个系统的升级或…

社交距离 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 疫情期间,需要大家保证一定的社交距离,公司组织开交流会议,座位有一排共N个座位,编号分别为[0…N-1],要求员工一个接着一个进入会议室,并且可以在任何时候离开会议室。 满足:每当一个员工进入时,…

Nginx实战 | 高性能HTTP和反向代理神器Nginx前世今生,以及它的“繁花之境”

专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏:http://t.csdnimg.cn/WDmJ9 Python 专栏:http://t.csdnimg.cn/hMwPR Redis 专栏:http://t.csdnimg.cn/Qq0Xc TensorFlow 专栏:http://t.csdni…

翻页插件的bug不能被忽视

文章目录 概要翻页插件的构成:具体功能如下:简单设计的测试用例测试出来的bug如下:小结 概要 近几年测试过不少WEB管理平台类的项目,系统中只要有列表管理的模块,就免不了要引入翻页插件 。 但是基本上每一个项目涉及…

前端面试题集合四(html)

HTML 面试知识点总结 本部分主要是笔者在复习 HTML 相关知识和一些相关面试题时所做的笔记,如果出现错误,希望大家指出! 目录 1. DOCTYPE 的作用是什么?2. 标准模式与兼容模式各有什么区别?3. HTML5 为什么只需要写…

PyTorch: torch.nn 子模块及其在循环神经网络中的应用

目录 torch.nn子模块详解 nn.utils.rnn.PackedSequence 参数说明 注意事项 示例代码 nn.utils.rnn.pack_padded_sequence 参数说明 返回值 注意事项 示例代码 nn.utils.rnn.pad_packed_sequence 参数说明 返回值 注意事项 示例代码 nn.utils.rnn.pad_sequence …

vue-vben-admin 与.net core 结合实例 【自学与教学 小白教程】---第4节---部门管理

ue-vben-admin 与.net core 结合实例 这里计划使用.net core 作为后端 。目标:打造好看 易用 开箱即用 的netcore一体化框架。Vue Vben Admin For NetCore 取命 hcrain-vvadmin 我不是前端人员 但有时开发还是要写一些界面。 之前使用layui是时候 狠心升级下了。 …

Parallel patterns: convolution —— An introduction to stencil computation

在接下来的几章中,我们将讨论一组重要的并行计算模式。这些模式是许多并行应用中出现的广泛并行算法的基础。我们将从卷积开始,这是一种流行的阵列操作,以各种形式用于信号处理、数字记录、图像处理、视频处理和计算机视觉。在这些应用领域&a…

win10在启动游戏时报错,提示“d3dx9_25.dll文件丢失”,怎么办?d3dx9_25.dll丢失如何自动修复

一、d3dx9_25.dll文件是什么? d3dx9_25.dll是DirectX的一部分,DirectX是一种由微软开发的专门处理与多媒体、游戏程序和视频相关的应用程序接口。d3dx9_25.dll文件是DirectX9中一个重要的dll文件,主要负责处理3D图形程序,作用是帮…

Node.js和npm

目录 01_Node.js01.什么是 Node.js目标讲解小结 02.fs模块-读写文件目标讲解小结 03.path模块-路径处理目标讲解小结 04.案例-压缩前端html目标讲解小结 05.认识URL中的端口号目标讲解小结 06.http模块-创建Web服务目标讲解小结 07.案例-浏览时钟目标讲解小结 02_Node.js模块化…

故事生成动漫解说视频,用Artflow AI做英语口语故事

大家好我是在看,记录普通人学习探索AI之路。 今天,我将再次为大家精心策划一个使用Artflow AI制作动漫解说视频的详尽教程,这个教程专为初学者设计。通过这款强大的Artflow AI工具,用户能够一键自动化完成从图像生成、视频剪辑到配…

CST2024的License服务成功启动,仍报错——“The desired daemon is down...”,适用于任何版本!基础设置遗漏!

CST2024的License服务成功启动,仍报错——“The desired daemon is down…”,适用于任何版本!基础设置遗漏! CST2024的License服务成功启动后报错 若不能成功启动License服务,有可能是你的计算机名称带中文&#xff…

牛刀小试 - C++ 实现2048(可存档)

参考文档 借助了这位大佬的开发思路, 开发过程中学到了很多 C语言实现《2048游戏》 技术点: system调整控制台大小的问题 unsigned and 符号位 C对齐输出(左对齐和右对齐) C goto语句详解 完整代码 /********************…

el-table实现多行合并的效果,并可编辑单元格

背景 数据为数组包对象&#xff0c;对象里面有属性值是数组&#xff1b;无需处理数据&#xff0c;直接使用el-table包el-table的方法&#xff0c;通过修改el-table的样式直接实现多行合并的效果 html代码 <template><div><el-table size"mini" :d…