【鴻蒙開發】OpenHarmony調測工具hdc使用教程(設備開發者)

00. 目錄

文章目錄

    • 00. 目錄
    • 01. OpenHarmony概述
    • 02. hdc簡介
    • 03. hdc獲取
    • 04. option相關的命令
    • 05. 查詢設備列表的命令
    • 06. 服務進程相關命令
    • 07. 網絡相關的命令
    • 08. 文件相關的命令
    • 09. 應用相關的命令
    • 10. 調試相關的命令
    • 11. 常見問題
    • 12. 附錄

01. OpenHarmony概述

OpenHarmony是由開放原子開源基金會(OpenAtom Foundation)孵化及運營的開源項目,目標是面向全場景、全連接、全智能時代,基于開源的方式,搭建一個智能終端設備操作系統的框架和平臺,促進萬物互聯產業的繁榮發展。

OpenHarmony整體遵從分層設計,從下向上依次為:內核層、系統服務層、框架層和應用層。系統功能按照“系統 > 子系統 > 組件”逐級展開,在多設備部署場景下,支持根據實際需求裁剪某些非必要的組件。OpenHarmony技術架構如下所示:
在這里插入圖片描述

內核層

  • 內核子系統:采用多內核(Linux內核或者LiteOS)設計,支持針對不同資源受限設備選用適合的OS內核。內核抽象層(KAL,Kernel Abstract Layer)通過屏蔽多內核差異,對上層提供基礎的內核能力,包括進程/線程管理、內存管理、文件系統、網絡管理和外設管理等。
  • 驅動子系統:驅動框架(HDF)是系統硬件生態開放的基礎,提供統一外設訪問能力和驅動開發、管理框架。

系統服務層

系統服務層是OpenHarmony的核心能力集合,通過框架層對應用程序提供服務。該層包含以下幾個部分:

  • 系統基本能力子系統集:為分布式應用在多設備上的運行、調度、遷移等操作提供了基礎能力,由分布式軟總線、分布式數據管理、分布式任務調度、公共基礎庫、多模輸入、圖形、安全、AI等子系統組成。
  • 基礎軟件服務子系統集:提供公共的、通用的軟件服務,由事件通知、電話、多媒體、DFX(Design For X) 等子系統組成。
  • 增強軟件服務子系統集:提供針對不同設備的、差異化的能力增強型軟件服務,由智慧屏專有業務、穿戴專有業務、IoT專有業務等子系統組成。
  • 硬件服務子系統集:提供硬件服務,由位置服務、用戶IAM、穿戴專有硬件服務、IoT專有硬件服務等子系統組成。

根據不同設備形態的部署環境,基礎軟件服務子系統集、增強軟件服務子系統集、硬件服務子系統集內部可以按子系統粒度裁剪,每個子系統內部又可以按功能粒度裁剪。

框架層

框架層為應用開發提供了C/C++/JS等多語言的用戶程序框架和Ability框架,適用于JS語言的ArkUI框架,以及各種軟硬件服務對外開放的多語言框架API。根據系統的組件化裁剪程度,設備支持的API也會有所不同。

應用層

應用層包括系統應用和第三方非系統應用。應用由一個或多個FA(Feature Ability)或PA(Particle Ability)組成。其中,FA有UI界面,提供與用戶交互的能力;而PA無UI界面,提供后臺運行任務的能力以及統一的數據訪問抽象。基于FA/PA開發的應用,能夠實現特定的業務功能,支持跨設備調度與分發,為用戶提供一致、高效的應用體驗。

技術特性

硬件互助,資源共享

主要通過下列模塊達成

  • 分布式軟總線

    分布式軟總線是多設備終端的統一基座,為設備間的無縫互聯提供了統一的分布式通信能力,能夠快速發現并連接設備,高效地傳輸任務和數據。

  • 分布式數據管理

    分布式數據管理基于分布式軟總線,實現了應用程序數據和用戶數據的分布式管理。用戶數據不再與單一物理設備綁定,業務邏輯與數據存儲分離,應用跨設備運行時數據無縫銜接,為打造一致、流暢的用戶體驗創造了基礎條件

  • 分布式任務調度

    分布式任務調度基于分布式軟總線、分布式數據管理、分布式Profile等技術特性,構建統一的分布式服務管理(發現、同步、注冊、調用)機制,支持對跨設備的應用進行遠程啟動、遠程調用、綁定/解綁、以及遷移等操作,能夠根據不同設備的能力、位置、業務運行狀態、資源使用情況并結合用戶的習慣和意圖,選擇最合適的設備運行分布式任務

  • 設備虛擬化

    分布式設備虛擬化平臺可以實現不同設備的資源融合、設備管理、數據處理,將周邊設備作為手機能力的延伸,共同形成一個超級虛擬終端。

一次開發,多端部署

OpenHarmony提供用戶程序框架、Ability框架以及UI框架,能夠保證開發的應用在多終端運行時保證一致性。一次開發、多端部署。

多終端軟件平臺API具備一致性,確保用戶程序的運行兼容性。

  • 支持在開發過程中預覽終端的能力適配情況(CPU/內存/外設/軟件資源等)。
  • 支持根據用戶程序與軟件平臺的兼容性來調度用戶呈現。

統一OS,彈性部署

OpenHarmony通過組件化和組件彈性化等設計方法,做到硬件資源的可大可小,在多種終端設備間,按需彈性部署,全面覆蓋了ARM、RISC-V、x86等各種CPU,從百KiB到GiB級別的RAM。

02. hdc簡介

hdc(OpenHarmony Device Connector)是 OpenHarmony 為開發人員提供的用于調試的命令行工具,通過該工具可以在Windows/Linux/MacOS等系統上與開發機或者模擬器進行交互。

03. hdc獲取

hdc 工具獲取方式:

通過OpenHarmony sdk獲取,hdc在sdk的toolchains目錄下。

使用舉例:

下面以windows側使用方式舉例:

獲取windows的sdk,將hdc.exe放到磁盤某個位置即可使用。

注意事項

  • 使用hdc,如果出現異常,可以嘗試通過hdc kill命令殺掉hdc服務,或者通過hdc start -r命令重啟服務進程進行解決。
  • 如果出現hdc list targets獲取不到設備信息,通過任務管理器查看是否有hdc進程存在,如果進程存在,可以通過殺掉該進程進行解決。

04. option相關的命令

option涉及以下命令:

  • -h/help -v/version 用于顯示hdc相關的幫助、版本信息。

命令說明

返回值返回值說明
返回對應信息幫助或者版本信息

示例

# 查看幫助信息
D:\tools>hdc -hD:\tools>hdc help# 查看版本信息
D:\tools>hdc -v
Ver: 1.1.1lD:\tools>hdc version
Ver: 1.1.1l
  • -l 0-5 用于指定運行時日志等級,默認為LOG_INFO。

命令說明

參數參數說明
0LOG_OFF
1LOG_FATAL
2LOG_WARN
3LOG_INFO
4LOG_DEBUG
5LOG_ALL

示例

D:\tools>hdc -l5 start
[D][2025-03-08 19:14:13.154][1228][channel.cpp:341] Mallocchannel:564292774
[D][2025-03-08 19:14:13.155][1228][base.cpp:761] File "HDCServer" locked. proc already exit!!![D][2025-03-08 19:14:13.156][1228][channel.cpp:424] Begin to free channel, channelid:564292774
[D][2025-03-08 19:14:13.156][1228][main.cpp:346] !!!!!!!!!Main finish mainD:\tools>
  • -t key 用于連接指定設備標識為key的設備。

命令說明

參數參數說明
key為 IP地址:port 格式,或者USB序列號
返回值返回值說明
①error: device ‘***’ not found
②Nothing to do…
①設備不存在
②附加的命令不存在

示例

該option需要與具體的操作命令搭配使用,下面以shell命令舉例:

hdc list targets (獲取設備信息)hdc -t key shell (-t后面添加的_key_ 需要替換為上面查詢的設備信息)D:\tools>hdc list targets
2f011130375330303010b6204718ab00D:\tools>hdc -t 2f011130375330303010b6204718ab00 shell
#

說明

一臺開發機可支持多個設備連接,每個設備有其唯一的設備標識,如果通過網絡與設備連接,其標識為IP地址:port格式,如果通過USB連接則標識為設備sn號。該命令需要跟隨具體操作命令。

  • checkserver 用于獲取client-server版本。

命令說明

返回值返回值說明
Client version: server version:client-server版本號

示例

D:\tools>hdc checkserver

05. 查詢設備列表的命令

查詢設備列表涉及以下命令:

list targets[-v]

顯示所有已經連接的目標設備列表

表5 命令說明

參數參數說明
-v添加-v選項,則會打印設備詳細信息
返回值返回值說明
①返回設備信息
②[Empty]
①已經連接的設備列表信息
②沒有查詢到設備信息

示例

D:\tools>hdc list targets
2f011130375330303010b6204718ab00D:\tools>hdc list targets -v
2f011130375330303010b6204718ab00                USB     Connected       localhost
COM1            UART    Ready
COM3            UART    Ready
COM4            UART    ReadyD:\tools>

06. 服務進程相關命令

服務進程涉及以下命令:

  • target mount 以讀寫模式掛載系統分區。

    表6 命令說明

    參數參數說明
    返回值返回值說明
    ①Mount finish
    ②返回具體信息
    ①成功情況下返回的信息
    ②失敗情況下的具體信息

示例

D:\tools>hdc target mount
Mount finish
  • target boot 設備重啟。

示例

D:\tools>hdc target boot
  • smode [-r] 授予后臺服務進程root權限, 使用-r參數取消授權。

示例

D:\tools>hdc smodeD:\tools>
D:\tools>hdc smode -r
  • kill [-r] 終止服務進程。

命令說明

參數參數說明
-r觸發服務重啟
返回值返回值說明
①Kill server finish
②返回具體信息
①成功情況下返回的信息
②失敗情況下的具體信息

示例

D:\tools>hdc kill
Kill server finishD:\tools>
  • start [-r] 啟動服務進程。

命令說明

參數參數說明
-r如果服務進程已經啟動,-r選項會觸發服務進程重新啟動
返回值返回值說明

示例

D:\tools>hdc startD:\tools>

07. 網絡相關的命令

網絡部分涉及以下命令:

  • tconn host[:port][-remove] 通過【ip地址:端口號】來指定連接的設備

命令說明

參數參數說明
host[:port]為IP地址:port格式
-remove表示斷開與指定設備的連接
返回值返回值說明
①返回具體信息
②無
①失敗情況下的具體信息
②成功情況下無返回值

示例

D:\tools>hdc tconn 192.168.0.100:8710
  • tmode usb 執行后設備端對應daemon進程重啟,并首先選用USB連接方式。

命令說明

參數參數說明
返回值返回值說明
①返回具體信息
②無
①失敗情況下的具體信息
②成功情況下無返回值

示例

hdc tmode usb
  • tmode port port-number 執行后設備端對應daemon進程重啟,并優先使用網絡方式連接設備,如果連接設備失敗,再選擇USB連接。

命令說明

參數參數說明
port-numberlisten連接的網絡端口號
返回值返回值說明
①返回具體信息
②無
①失敗情況下的具體信息
②成功情況下無返回值

示例

hdc tmode port 8710

說明

執行完畢后,遠端daemon將會退出并重啟,默認啟用TCP連接,如果不加上listen端口則listen隨機端口。

  • fport localnode remotenode 端口轉發,指定 主機端口 轉發數據到 設備側端口。

示例

hdc fport tcp:1234 tcp:1080
  • rport remotenode localnode 端口轉發,指定 設備側端口 轉發數據到 主機端口。

示例

hdc rport tcp:2080 tcp:2345
  • fport ls 列出全部轉發端口轉發任務。

命令說明

參數參數說明
返回值返回值說明
‘tcp:1234 tcp:1080’ [Forward]正向端口轉發任務
‘tcp:2080 tcp:2345’ [Reverse]反向端口轉發任務

示例

hdc fport ls
  • fport rm 刪除指定端口轉發任務。

示例

hdc fport rm tcp:1234 tcp:1080

08. 文件相關的命令

文件部分涉及以下命令:

  • file send local remote 發送文件至遠端設備。

命令說明

參數參數說明
local本地待發送文件路徑
remote遠程待接收文件路徑
返回值返回值說明
①返回具體信息
②返回傳輸結果
①失敗情況下的具體信息
②成功傳輸的結果信息

示例

D:\tools>hdc file send D:\tools/SN.txt /data/local/tmp/SN.txt
FileTransfer finish, Size:22, File count = 1, time:31ms rate:0.71kB/sD:\tools>
  • file recv [-a] remote local 從遠端設備接收文件至本地。

命令說明

參數參數說明
-a文件保留時間戳模式
local本地待接收文件路徑
remote遠程待發送文件路徑
返回值返回值說明
①返回具體信息
②無
①失敗情況下的具體信息
②成功情況下無返回值

示例

D:\tools>hdc file recv /data/local/tmp/SN.txt ./a.txt
FileTransfer finish, Size:22 time:3ms rate:7.33kB/s

09. 應用相關的命令

應用部分涉及以下命令:

  • install [-r/-d/-g] package 安裝OpenHarmony APP package。

命令說明

參數參數說明
packageOpenHarmony應用安裝包文件名
-r替換已存在應用
-d允許降級安裝
-g應用動態授權
返回值返回值說明
①返回具體信息
②無
①失敗情況下的具體信息
②成功情況下無返回值

示例

hdc install hwadmin.hap
  • uninstall [-k] package 卸載OpenHarmony應用。

命令說明

參數參數說明
packageOpenHarmony應用安裝包
-k保留/data/cache
返回值返回值說明
①返回具體信息
②無
①失敗情況下的具體信息
②成功情況下無返回值

示例

hdc uninstall package

10. 調試相關的命令

調試涉及以下命令:

  • hilog 支持抓取log信息。

命令說明

參數參數說明
返回值返回值說明
返回具體信息抓取的日志信息

抓取hilog日志:

hdc hilog

清理hilog緩存日志:

hdc shell "hilog -r"
  • shell [command] 遠程執行命令或進入交互命令環境。

命令說明

參數參數說明
command需要執行的單次命令
返回值返回值說明
返回具體信息shell后面執行命令的結果信息

示例

hdc shell
  • jpid 獲取可調試進程列表。

示例

D:\tools>hdc jpid
1037
1061
1105
1117
1260
1653

11. 常見問題

11.1 hdc連接不到設備

  • 現象描述 執行 "hdc list targets"命令后結果為:[Empty]
  • 解決方法
    1. 設備沒有被識別: 在設備管理器中查看是否有hdc設備,在通用串行總線設備中會有“HDC Device”信息。如果沒有,hdc無法連接。此時需要斷開并重聯PC和OpenHarmony設備之間的USB連接,或者燒寫最新的鏡像。
    2. hdc工作異常: 可以執行"hdc kill"或者"hdc start -r"殺掉hdc服務或者重啟hdc服務,然后再執行hdc list targets查看是否已經可以獲取設備信息。
    3. hdc與設備不匹配: 如果設備燒寫的是最新鏡像,hdc也需要使用最新版本。

11.2 hdc運行不了

  • 現象描述 點擊hdc.exe文件無法運行。
  • 解決方法
    1. 運行環境異常: linux版本建議ubuntu 18.04以上 64位,其他相近版本也可;libc++.so引用錯誤請使用ldd/readelf等命令檢查庫引用 windows版本建議windows10 64位,如果低版本windows winusb庫缺失,請使用zadig更新庫。對于復合設備,需要使用zadig工具安裝libusb-win32驅動。
    2. 如何運行hdc.exe: hdc.exe不需要安裝,直接放到磁盤上就能使用,也可以添加到環境變量中。通過打開cmd執行hdc命令直接使用。

11.3 hdc client如何遠程訪問hdc server

  • 使用場景

    本地client指定遠程server上的設備,執行hdc命令。

  • 連接步驟

    1. 關閉本地sever:

      hdc kill
      
    2. -s [ip:]port -m

      啟動遠程server:

      hdc -s severIP:8710 -m
      
    3. -s [ip:]port command

      指定server執行指令:

      hdc -s severIP:8710 list targets
      

12. 附錄

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71972.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71972.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71972.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手寫簡易Tomcat核心實現:深入理解Servlet容器原理

目錄 一、Tomcat概況 1. tomcat全局圖 2.項目結構概覽 二、實現步驟詳解 2.1 基礎工具包(com.qcby.util) 2.1.1 ResponseUtil:HTTP響應生成工具 2.1.2 SearchClassUtil:類掃描工具 2.1.3 WebServlet:自定義注解…

【Java開發指南 | 第三十四篇】IDEA沒有Java Enterprise——解決方法

讀者可訂閱專欄:Java開發指南 |【CSDN秋說】 文章目錄 1、新建Java項目2、單擊項目名,并連續按兩次shift鍵3、在搜索欄搜索"添加框架支持"4、勾選Web應用程序5、最終界面6、添加Tomcat 1、新建Java項目 2、單擊項目名,并連續按兩次…

在MATLAB中實現PID控制仿真

在MATLAB中實現PID控制仿真可以通過代碼編程或Simulink圖形化建模兩種方式完成。以下是兩種方法的詳細操作步驟和示例: 方法1:使用MATLAB腳本編程(基于控制系統工具箱) 步驟1:定義被控對象的數學模型 假設被控對象是…

Conda常用命令匯總

Conda 是一個流行的包管理器和環境管理工具,廣泛應用于數據科學、機器學習等領域。它可以幫助我們管理 Python 包以及不同版本的環境,避免包沖突,提升項目的可復現性。以下是一些常用的 Conda 命令,涵蓋環境創建、管理、包安裝等常…

大數據實時分析:ClickHouse、Doris、TiDB 對比分析

1. 引言 在大數據分析領域,實時分析需求越來越重要。ClickHouse、Doris 和 TiDB 作為當前流行的實時分析數據庫,各自針對不同的應用場景和數據特性進行了優化。本文將對比它們的核心架構、適用場景以及查詢優化方法,幫助數據開發人員選擇合適的工具。 2. 核心架構對比 2.…

藍橋杯歷年真題題解

1.軌道炮&#xff08;數學模擬&#xff09; #include <iostream> #include <map> using namespace std; const int N1010; int x[N],y[N],v[N]; char d[N]; int main() {int n;int ans-100;cin>>n;for(int i1;i<n;i)cin>>x[i]>>y[i]>>v…

Pytorch的一小步,昇騰芯片的一大步

Pytorch的一小步&#xff0c;昇騰芯片的一大步 相信在AI圈的人多多少少都看到了最近的信息&#xff1a;PyTorch最新2.1版本宣布支持華為昇騰芯片&#xff01; 1、 發生了什么事兒&#xff1f; 在2023年10月4日PyTorch 2.1版本的發布博客上&#xff0c;PyTorch介紹的beta版本…

嵌入式硬件篇---手柄控制控制麥克納姆輪子

文章目錄 前言1. 變量定義2. 搖桿死區設置3. 模式檢查4. 搖桿數據處理4.1 右搖桿垂直值&#xff08;psx_buf[7]&#xff09;4.2 右搖桿水平值&#xff08;psx_buf[8]&#xff09;4.3 左搖桿水平值&#xff08;psx_buf[5]&#xff09;4.4 左搖桿垂直值&#xff08;psx_buf[6]&am…

阿里千問大模型(Qwen2.5-VL-7B-Instruct)部署

參考鏈接 知乎帖子 B站視頻 huggingface 鏡像網站&#xff08;不太全&#xff0c;比如 Qwen/Qwen2.5-VL-7B-Instruct就沒有&#xff09; huggingface 5種下載方式匯總 通過huggingface-cli下載模型 不一樣的部分是預訓練權重的下載和demo 首先安裝huggingface_hub pip insta…

Jenkins在Windows上的使用(二):自動拉取、打包、部署

&#xff08;一&#xff09;Jenkins全局配置 訪問部署好的Jenkins服務器網址localhost:8080&#xff0c;完成默認插件的安裝后&#xff0c;接下來將使用SSH登錄遠程主機以實現自動化部署。 1. 配置插件 選擇dashboard->Manage Jenkins->plugins 安裝下面兩個插件  …

群暉DS 223 Docker:開啟私有云

群暉DS 223 Docker&#xff1a;開啟私有云的無限可能 引言 在數據存儲與管理的不斷演進中&#xff0c;群暉 DS 223 憑借其出色的性能和豐富的功能&#xff0c;成為眾多用戶搭建私有云的熱門選擇。而當它與 Docker 技術相遇&#xff0c;猶如為數據管理的舞臺添上了絢麗多彩的燈…

git切換版本

git brach 查看本地 剛從git上下載下來 的話 可以通過 git checkout xxxx進行切換 可能一段時間沒有用 而服務器上新建了某些版本 那么需要用 git fetch origin 同步本地與git服務器的分支 然后 創建本地分支xxx 并從服務器拉取xxx git checkout -b xxx origin/xxx…

Three.js 進階(燈光陰影關系和設置、平行光、陰影相機)

本篇主要學習內容 : 燈光與陰影聚光燈點光源平行光陰影相機和陰影計算投射陰影接受陰影 點贊 關注 收藏 學會了 1.燈光與陰影 1、材質要滿足能夠對光有反應 2、設置渲染器開啟陰影計算 renderer.shadowMap.enabledtrue 3、設置光照投射陰影 directionalLight.castShadow …

【 <一> 煉丹初探:JavaWeb 的起源與基礎】之 Tomcat 的工作原理:從啟動到請求處理的流程

<前文回顧> 點擊此處查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、Tomcat…

【GPT入門】第11課 FunctionCall調用本地代碼入門

【GPT入門】第11課 FunctionCall調用代碼入門 1. 手撕FunctionCall2.代碼3.functionCall的結果 1. 手撕FunctionCall 為了了解&#xff0c;funcationCall底層&#xff0c;手寫一個functionCall多方法&#xff0c;并調用&#xff0c;體驗 思路&#xff1a; 任務&#xff1a;讓…

MySQL主從架構配合ShardingJdbc實現讀寫分離

文章目錄 目錄架構搭建讀寫分離pom.xmlfdy-live-user-provider 模塊application.ymlfdy-db-sharding.yamlShardingJdbcDatasourceAutoInitConnectionConfig.java 目錄 架構搭建 基于Docker去創建MySQL的主從架構 讀寫分離 pom.xml <dependency><groupId>mysql…

計網面試準備

正確理解網絡數據傳輸過程 同一路由器的不同接口屬于不同局域網&#xff0c;廣播只能在同一個局域網

NLP常見任務專題介紹(1)-關系抽取(Relation Extraction, RE)任務訓練模板

?? 關系抽取(Relation Extraction, RE)任務訓練示例 本示例展示如何訓練一個關系抽取模型,以識別兩個實體之間的關系。 1?? 任務描述 目標:從文本中提取兩個實體之間的語義關系,例如 “人物 - 組織”、“藥物 - 疾病”、“公司 - 創始人” 等。輸入:句子 + 標注的實…

【技術白皮書】內功心法 | 第二部分 | Telnet遠程登錄的工作原理

遠程登錄的工作原理 背景介紹遠程登錄遠程登錄的服務模式遠程登錄服務的實現基礎遠程登錄服務的運行模式Telnet服務為什么不被操作系統管理 Telnet協議的原理網絡虛終端&#xff08;NVT&#xff09;結束標示NVT的原理NVT屏蔽差異 背景介紹 絕大多數計算機都是運行多用戶操作系…

在 Spring Boot 中實現基于 TraceId 的日志鏈路追蹤

1 前言 1.1 什么是 TraceId? TraceId 是一個唯一的標識符,用于跟蹤分布式系統中的請求。每個請求從客戶端發起到服務端處理,再到可能的多個微服務調用,都會攜帶這個 TraceId,以便在整個請求鏈路中進行追蹤和調試。 1.2 日志鏈路追蹤的意義 日志鏈路追蹤可以幫助開發者…