OpenHarmony概述與使用

1. OpenHarmony Hi3861?

學習目標與任務

  • 硬件基礎知識:涵蓋嵌入式硬件體系架構(如 MCU 基礎、硬件接口原理 )、硬件設計流程(原理圖繪制、PCB Layout 規范 ),了解常見硬件外設(傳感器、通信模塊等)的工作邏輯與硬件適配要點。
  • 軟件 + 硬件開發模式:學習嵌入式軟件開發與硬件協同流程,包括硬件驅動開發(基于 Hi3861 芯片手冊編寫驅動代碼 )、通過 SDK 實現軟件對硬件資源(GPIO、定時器等)的調用,理解軟硬件交互的信號流程與時序控制。
  • 軟件到硬件開發邏輯:掌握從需求分析(功能定義)→ 軟件架構設計(模塊劃分、任務調度 )→ 硬件驅動適配(寄存器操作、協議實現 )→ 聯調測試(軟硬件協同排障 )的完整鏈路,理解 “軟件邏輯依賴硬件能力,硬件能力通過軟件調用釋放” 的核心邏輯。
  • 物聯網 IOT 開發流程:基于 Hi3861 實踐 “需求調研(場景定義 )→ 方案設計(硬件選型、通信協議確定 )→ 開發實現(硬件電路、軟件程序 )→ 聯調測試(功能、兼容性 )→ 部署上線(OTA 升級、遠程管理 )” 全流程,重點學習物聯網設備的組網(如 Wi-Fi 配網 )、數據上云(MQTT/CoAP 協議應用 )、邊緣計算(輕量級數據處理 )等關鍵環節。

2. OpenHarmony 概述

基本定義與定位
  • HarmonyOS(鴻蒙系統 ):華為自主研發的商業閉源分布式操作系統,聚焦全場景智慧體驗,通過 “硬件互助、資源共享”,實現手機、平板、智能穿戴、智慧屏等華為終端的無縫協同,為消費者與商業場景提供深度整合的操作系統能力。
  • OpenHarmony(開源鴻蒙 ):由開放原子開源基金會(OpenAtom Foundation )孵化、運營的開源分布式操作系統,面向全行業開放生態。以 “開源協同” 為核心,聯合硬件廠商、開發者、行業伙伴,構建跨設備(IoT 終端、行業終端等 )的無縫協同體系,推動物聯網時代的操作系統技術普惠與創新。
版本演進與關鍵特性
時間版本核心特性與支持設備
2020 年 9 月OpenHarmony 1.0聚焦 IoT 基礎設備,支持?128KB - 128MB 內存?場景(如低功耗傳感器、簡易智能終端 ),奠定開源分布式框架雛形。
2021 年 6 月OpenHarmony 2.0全量開源?升級,擴展設備支持范圍(覆蓋更多行業終端、輕量級智能設備 ),強化分布式軟總線能力,推動跨設備通信與協同開發生態初步構建。
2021 年 9 月OpenHarmony 3.0 LTS主打?“強分布式”,支持?標準系統設備(如智能座艙、工業平板 ),完善系統安全性(設備身份認證、數據加密 )與開發工具鏈,為行業應用開發提供更成熟的框架(ArkUI 界面開發、原子化服務基礎能力 )。
2023 年OpenHarmony 4.0深化?AI 與分布式技術融合,強化端側智能(設備本地 AI 推理、低功耗算力調度 ),優化分布式軟總線的跨平臺兼容性,推動 “設備協同智能化”(如多終端 AI 任務分工、協同推理 )。
2024 年OpenHarmony 5.1聚焦?AI 與機器人技術優化,加強對機器人操作系統(ROS )的適配,完善運動控制、環境感知等機器人專屬能力,同時拓展 AI 在 IoT 場景的落地(如智能識別、自主決策 ),深化行業場景滲透。
OpenHarmony 與 HarmonyOS 體系對比
對比項OpenHarmony(開源鴻蒙)HarmonyOS(鴻蒙商業版)HarmonyOS NEXT(純血鴻蒙)
性質開源項目,由開放原子基金會主導生態共建華為閉源商業系統,面向消費與商業市場華為閉源商業系統,聚焦 “純血鴻蒙” 架構
技術底座微內核架構 + LiteOS/Linux 兼容(適配不同設備資源 )基于 OpenHarmony 開源基線 + AOSP(安卓兼容層 )基于 OpenHarmony 開源基線,剔除 AOSP,構建純血微內核架構
應用生態生態分散,依賴廠商 / 開發者定制:
- 設備廠商需適配硬件、構建分發渠道;
- 應用需基于 OpenHarmony 開源 API 開發,適配多終端場景。
兼容安卓應用(通過 AOSP 層 )+ 鴻蒙原生應用,依托華為終端生態(手機、平板等 ),實現 “一次開發、多端部署”。僅支持?鴻蒙原生應用,強化系統純凈度與性能,聚焦高端旗艦設備的極致體驗,推動生態向 “純鴻蒙架構” 遷移。
典型設備IoT 終端(智能傳感器、低功耗設備 )、行業終端(工業平板、智能座艙 )、邊緣設備(輕量級網關 )等。華為手機、平板、智慧屏、智能穿戴等消費級終端,覆蓋個人與家庭全場景。未來華為旗艦手機、高端平板等核心終端,聚焦極致性能、純血架構體驗,引領操作系統技術標桿。
補充說明
  • OpenHarmony 作為開源項目,是鴻蒙生態 “技術普惠” 的基礎:通過開放代碼、工具鏈,降低行業準入門檻,推動 IoT 設備、行業終端的智能化升級;
  • HarmonyOS 商業版則聚焦 “用戶體驗與商業價值”,依托華為終端生態,為消費者與企業客戶提供深度整合的全場景服務;
  • HarmonyOS NEXT(純血鴻蒙 )代表生態演進方向:剔除安卓代碼依賴后,系統性能、安全性、協同效率將進一步突破,為高端設備與未來場景(如 AI 原生應用、元宇宙協同 )奠定技術底座。

3. OpenHarmony 開發環境

4. OpenHarmony 第一行代碼

4.1 安裝必要的開發軟件

為開展 OpenHarmony(基于 Hi3861 等設備 )開發,需提前準備工具鏈,保障開發、調試、燒錄全流程:

工具名稱作用
CH340 USB 驅動實現 Windows 與 Hi3861 開發板的硬件連接,為串口通信、程序燒錄提供基礎
HiBurn.exe海思芯片專用燒錄軟件,將編譯后的程序(如 .bin 文件 )燒錄到開發板
UartAssist.exe串口調試工具,查看開發板運行日志、打印信息,輔助調試代碼
VSCode SSH 遠程鏈接通過 SSH 遠程連接開發環境(如 Linux 服務器 ),在 VSCode 中編寫、編譯代碼

4.2 項目結構規范

基礎路徑與目標

項目需在 OpenHarmony 代碼倉庫的指定路徑創建:

/home/qf/Desktop/OpenHarmony/code-v3.0-LTS/OpenHarmony/applications/sample/wi-fi-iot/app  

在此路徑下,按規則創建項目目錄(如?demo01_thread?),并遵循目錄命名要求

目錄命名規則
  • 禁止:數字開頭、中文 / 特殊符號(如?123_demo測試_dir?不合法 )
  • 要求:英文小寫字母開頭,可包含字母、數字、下劃線(如?demo01_thread?合規 )
  • 唯一性:app?文件夾內項目名稱必須唯一,避免編譯沖突
項目結構示例(以?demo01_thread?為例 )

在?app?目錄下創建?demo01_thread?后,完整結構(核心文件說明 ):

# 項目路徑  
/home/qf/Desktop/OpenHarmony/code-v3.0-LTS/OpenHarmony/applications/sample/wi-fi-iot/app/  
└── BUILD.gn             # 在app目錄下的,明確啟動有哪些組件
|——demo01_thread/        # 項目目錄(需符合命名規范)  ├── BUILD.gn         # 編譯腳本:定義編譯規則、依賴、輸出產物  └── demo1.c          # 業務代碼:編寫功能邏輯(如線程創建、硬件控制 )  
關鍵文件作用
  • BUILD.gn:OpenHarmony 編譯系統的配置文件,需聲明:
    • 編譯目標類型(如?static_library?靜態庫 )
    • 參與編譯的源文件(如?demo1.c?)
    • 頭文件路徑、依賴庫等信息
    • 示例(簡化版 ):
      static_library("demo01_thread") {  # 庫名稱需與目錄名一致  sources = [ "demo1.c" ]       # 指定參與編譯的代碼文件  include_dirs = [              # 頭文件搜索路徑  "//utils/native/lite/include",  "//kernel/liteos_m/kal/cmsis"  ]  
      }  
      
  • demo1.c:存放具體業務代碼(如線程創建、硬件初始化邏輯 ),是功能實現的核心文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 以下是需要導入的鴻蒙相關的頭文件
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "hi_timer.h"/*
【第二步,完成線程所需的任務函數】
當前函數滿足 osThreadFunc_t typedef void (*osThreadFunc_t) (void *argument); 返回值類型為 void 類型,同時參數類型為 void * 類型。
*/
void thread_test(void *arg){int n = 10;while(n){/*osDelay OpenHarmony 提供的系統延時函數,單位是 10ms100 * 10ms ==> 1s*/osDelay(100);/*osThreadId_t osThreadGetId();返回當前真正運行的線程 ID 數據osThreadId_t ==> void **/printf("Thread is : %p,n = %d\n",osThreadGetId(),n);n -= 1;}
}/*
threadTestTask thread 測試任務當前函數要求無返回無參數,同時建議使用 static 修飾,有且只允許在當前文件中有效,可以調用。【threadTestTask】 用于注冊線程任務到 OpenHarmony OS 中。*/
static void threadTestTask(void){/*【第一步,創建線程】*//*osThreadAttr_t OpenHarmony 提供的數據類型用于描述當前線程的相關屬性重要內容1. 線程名稱2. 線程占用棧區字節數3. 【線程優先級】【重點要求】  osThreadAttr_t 必須進行 memset 擦除*/osThreadAttr_t thread_attr;memset(&thread_attr,0,sizeof(osThreadAttr_t));thread_attr.name = "thread_test";thread_attr.stack_size = 1024;thread_attr.priority = osPriorityNormal;/*系統編程中的對應線程創建函數pthread_create(pthread_t &tid, attr, function, fun_arg);*//*osThreadId_t 當前 OpenHarmony 提供的數據類型,用于描述當前線程 ID真實類型為 void * 類型。【去指針化操作】typedef void *osThreadId_t;osThreadId_t osThreadNew(osThreadFunc_t func, void *argument, const osThreadAttr_t *attr);【osThreadFunc_t func】 線程任務函數 OpenHarmony 提供的數據類型typedef void (*osThreadFunc_t) (void *argument); 根據原碼分析,當前任務函數要求參數為 void * 返回值為 void 【void *argument】 用于提供函數參數給當前線程任務函數【const osThreadAttr_t *attr】 用于初始化當前線程屬性的結構體*/osThreadId_t thread_id = osThreadNew(thread_test,NULL,&thread_attr);if(NULL == thread_id){perror("[osThreadNew] create [thread_test] thread failed!\n");exit(1);}
}/*
【第三步,注冊線程任務】
注冊當前線程任務。
利用 OpenHarmony 提供的有參數宏,對當前任務線程函數 static void threadTestTask(void) 
進行系統注冊,OpenHarmony APP 啟動會將當前自定義組件/線程任務加入到程序中。#define APP_FEATURE_INIT(func) LAYER_INITCALL_DEF(func, app_feature, "app.feature")
*/
APP_FEATURE_INIT(threadTestTask);

項目組件 BUILD.gn 文件內容:(在app目錄下的BUILD.gn)

import("//build/lite/config/component/lite_component.gni")lite_component("app") {features = ["demo01_thread",]
}

5. 編譯操作

5.1 利用HiBurn 軟件燒錄程序到Hi3861中

????????通過 hb 編譯之后,對應的編譯結果路徑在 ~/Desktop/OpenHarmony/code-v3.0-
LTS/OpenHarmony/out/hispark_pegasus/wifiiot_hispark_pegasus ,在 Windows 中,需
要利用遠程共享文件夾(知曉當前 Linux IP)方式,找到對應編譯結果文件。

當前路徑僅供參考:

\\192.168.25.129\qf\Desktop\OpenHarmony\code-v3.0-
LTS\OpenHarmony\out\hispark_pegasus\wifiiot_hispark_pegasus

選擇編譯生成的可執行文件:

燒錄中:

打開串口調試助手:

https://github.com/0voice

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

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

相關文章

大模型提示詞工程實踐:大語言模型文本轉換實踐

大模型文本轉換 學習目標 在本課程中&#xff0c;我們將探究如何使用大語言模型來完成文本轉換任務&#xff0c;例如語言翻譯、拼寫和語法檢查、語氣調整以及格式轉換。 相關知識點 大模型文本轉換 學習內容 1. 大模型文本轉換 文本轉換的核心定義與范疇 文本轉換 是指通過技術…

力扣LCR024:反轉鏈表206.反轉鏈表雙解法(經典面試題)

LCR 024. 反轉鏈表 - 力扣&#xff08;LeetCode&#xff09;LCR 024. 反轉鏈表 - 給定單鏈表的頭節點 head &#xff0c;請反轉鏈表&#xff0c;并返回反轉后的鏈表的頭節點。 示例 1&#xff1a;[https://assets.leetcode.com/uploads/2021/02/19/rev1ex1.jpg]輸入&#xff1a…

Day 6: CNN卷積神經網絡 - 計算機視覺的核心引擎

Day 6: CNN卷積神經網絡 - 計算機視覺的核心引擎 ?? 核心概念(5分鐘理解) 什么是CNN卷積神經網絡? 核心概念解釋: CNN(Convolutional Neural Network): 專門處理具有網格狀拓撲結構數據的深度學習模型,特別擅長圖像識別 為什么需要: 傳統全連接神經網絡處理圖像時參數量…

MacBook 本地化部署 Dify 指南

Dify 安裝前的準備工作 確認系統滿足最低配置要求&#xff0c;包括操作系統版本、內存、CPU 和存儲空間。 檢查是否已安裝必要的依賴項&#xff0c;如 Python、Docker 確保網絡環境穩定&#xff0c;能夠訪問所需的軟件源或鏡像倉庫。 獲取 Dify 安裝包 https://docs.dify.ai…

疫情可視化:基孔肯雅熱風險地圖實戰解析

> 一只白紋伊蚊的飛行半徑是100米,而一套WebGIS系統能將疫情防控范圍精確到每平方米。 2025年夏季,基孔肯雅熱疫情在廣東佛山爆發,短短一個月內感染病例占全省95%以上。這種由伊蚊傳播的病毒性疾病,以**突發高熱、劇烈關節痛和全身皮疹**為特征,患者關節疼痛可能持續數…

【14-模型訓練細節】

訓練步驟 1、指定輸入和輸出&#xff0c;即模型定義&#xff1b; 2、指定損失函數和成本函數&#xff1b; 3、指定訓練算法&#xff0c;如梯度下降算法&#xff1b;訓練細節 損失函數和成本函數用梯度下降算法訓練模型 主要是求成本函數的偏導數&#xff0c;使用的是反向傳播算…

ConcurrentDictionary 詳解:.NET 中的線程安全字典

什么是 ConcurrentDictionary&#xff1f; ConcurrentDictionary<TKey, TValue> 是 .NET Framework 4.0 和 .NET Core/.NET 5 中引入的線程安全字典實現&#xff0c;位于 System.Collections.Concurrent 命名空間。它解決了多線程環境下操作字典時的同步問題&#xff0c…

集成電路學習:什么是URDF Parser統一機器人描述格式解析器

URDF Parser(URDF解析器)是ROS(Robot Operating System,機器人操作系統)中用于解析URDF(Unified Robot Description Format,統一機器人描述格式)文件的工具。URDF是一種基于XML(Extensible Markup Language,可擴展標記語言)規范的格式,用于描述機器人的結構、關節、…

老式大頭顯示器(CRT)和當前最高分辨率的LED顯示器對比

老式 CRT&#xff08;陰極射線管&#xff09;和當前最頂尖的 LED&#xff08;包括 MicroLED / 高端 MiniLED / OLED&#xff09;顯示器在畫面清晰度極限相關的參數并列分析。1. 分辨率與像素密度指標老式 CRT&#xff08;PC/電視用&#xff09;頂級 LED 顯示器&#xff08;2025…

北京JAVA基礎面試30天打卡07

1. 緩存三大問題及解決方案問題場景后果常用解決方案緩存穿透請求的數據在緩存和數據庫中都不存在&#xff08;惡意攻擊或查詢異常 ID&#xff09;每次請求都會打到數據庫&#xff0c;導致 DB 壓力驟增- 緩存空值&#xff08;短期緩存不存在的 key&#xff09;- 布隆過濾器&…

后量子密碼學的遷移與安全保障:迎接量子時代的挑戰

在當今數字化時代&#xff0c;信息安全無疑是保障個人隱私、企業運營和國家安全的基石。我們依賴密碼學來保護敏感信息&#xff0c;從在線銀行交易到機密軍事通信&#xff0c;從醫療記錄的存儲到云計算中的數據傳輸&#xff0c;傳統密碼學為我們構筑起一道抵御惡意攻擊的防線。…

Android 獲取 UserAgent (UA) 的三種方式深度解析:差異、風險與最佳實踐

引言 在 Android 開發中&#xff0c;獲取 UserAgent (UA) 字符串是常見需求&#xff0c;尤其涉及網絡請求和 WebView 交互時。開發者通常使用三種方式獲取 UA&#xff1a; new WebView(context).getSettings().getUserAgentString()WebSettings.getDefaultUserAgent(context)…

Apache IoTDB 全場景部署:跨「端-邊-云」的時序數據庫 DB+AI 實戰

時序數據正成為現代工業物聯網的核心資產,從設備傳感器到業務分析,數據需跨越端、邊、云多個層級。本文將深入探討 **Apache IoTDB** 如何實現全場景統一時序數據管理,并融合AI能力實現智能決策。 --- ### 一、為什么需要「端-邊-云」協同? 在工業物聯網場景中: - **端側…

某地渣庫邊坡自動化監測服務項目

1. 項目簡介該礦山主要從事稀有金屬鉭、鈮及合金等的研發、生產、銷售和進出口業務。具有科學的管理理念、精良的工藝裝備、先進的技術水平、高素質的員工隊伍等綜合優勢&#xff0c;已形成鉭、鈮金屬及其合金材料等主要產業格局。公司產品被廣泛應用于電子、通訊、航空、航天、…

redis(2)-java客戶端使用(IDEA基于springboot)

一、準備工作首先確保&#xff1a;Linux 服務器上已安裝并啟動 Redis 服務Redis 已配置允許遠程連接&#xff08;修改 redis.conf 文件&#xff09;開發環境&#xff08;IDEA&#xff09;已準備好二、Spring Boot 項目配置 Redis1. 添加依賴在pom.xml中添加 Redis 相關依賴&…

解決 vscode 編輯 markdown 文件時退格鍵/backspace 刪除卡頓問題

文章目錄發現問題解決問題發現問題 使用 vscode 編輯 markdown 時&#xff0c;發現有時按下退格鍵 backspace 后等待很久才會生效&#xff0c;卡頓明顯 解決問題 從界面左下角的設置圖標&#xff0c;打開 vscode 的鍵盤快捷鍵設置頁面 Keyboard Shortcuts 搜索 backspace 按…

綠巨人VS Code多開項目單獨管理每個項目單獨使用一個不限制的augment

綠巨人VS Code多開項目單獨管理每個項目單獨使用一個不限制的augment 綠巨人VS前言 在AI輔助編程時代&#xff0c;Augment Code作為一款強大的代碼助手工具&#xff0c;為開發者提供了智能代碼補全、代碼生成等功能。然而&#xff0c;免費版本的使用限制&#xff08;通常為每月…

Java 之抽象類和接口

一 、抽象類 1.1 、什么是抽象類&#xff1f; 就是當一個類不能描述具體的對象時&#xff0c;那么這個類就可以寫成抽象類。比如說 Animal &#xff0c;我們知道 Animal 不能非常清楚的描述一個具體的動物&#xff0c;所以可以把 Animal 寫成抽象類。還有就是我們知道父類中的方…

【運維進階】WEB 服務器

WEB 服務器 WEB 服務器簡介 Web 服務器&#xff08;Web Server&#xff09;是指一種接收客戶端&#xff08;如瀏覽器&#xff09;發送的 HTTP 請求&#xff0c;并返回網頁內容或資源的程序或設備。它是萬維網&#xff08;WWW&#xff09;的核心組成部分。 Web 服務器的主要功能…

LLM(大語言模型)的“幻覺”本質原因

LLM(大語言模型)的“幻覺”本質原因 LLM(大語言模型)的“幻覺”(生成與事實不符但模型自信輸出的內容)本質上是其作為概率統計模型的底層機制與訓練、推理過程中多重限制共同作用的結果。從模型內部邏輯、訓練機制到推理環節 一、底層機制:基于“統計關聯”而非“真實…