鴻蒙原始碼目錄整理
程式碼庫地址
程式碼目錄
下載下來的原始碼有下面的目錄:
base
startup
啟動恢復負責在核心啟動之後到應用啟動之前的系統關鍵程式和服務的啟動過程。涉及以下模組:
-
init啟動引導
支援使用LiteOS-A核心的平臺,當前包括:Hi3516DV300平臺和Hi3518EV300平臺。
負責處理從核心載入第一個使用者態程式開始,到第一個應用程式啟動之間的系統服務程式啟動過程。啟動恢復子系統除負責載入各系統關鍵程式之外,還需在啟動的同時設定其對應許可權,並在子程式啟動後對指定程式實行保活(若程式意外退出要重新啟動),對於特殊程式意外退出時,啟動恢復子系統還要執行系統復位操作。
-
appspawn應用孵化
支援使用LiteOS-A核心的平臺,當前包括:Hi3516DV300平臺和Hi3518EV300平臺。
負責接受應用程式框架的命令孵化應用程式,設定其對應許可權,並呼叫應用程式框架的入口。
-
bootstrap啟動服務模組
支援使用LiteOS-M核心的平臺,當前包括:Hi3861平臺。
提供了各服務和功能的啟動入口標識。在SAMGR啟動時,會呼叫boostrap標識的入口函式,並啟動系統服務。
-
系統屬性
支援使用LiteOS-M核心和LiteOS-A核心的平臺,包括:Hi3861平臺,Hi3516DV300平臺,Hi3518EV300平臺。
負責提供獲取與設定作業系統相關的系統屬性。
系統屬性包括:預設系統屬性、OEM廠商系統屬性和自定義系統屬性。OEM廠商部分僅提供預設值,具體值需OEM產品方按需進行調整,詳見“使用”部分。
security
包括安全啟動、應用許可權管理、IPC通訊鑑權、HUKS、HiChain、應用簽名驗籤。
security
├── framework
│ ├── appverify 應用簽名驗籤
│ ├── crypto_lite 加解密
│ ├── hichainsdk_lite 裝置認證能力
│ ├── huks_lite 祕鑰管理和證書管理
│ ├── secure_os 安全OS
├── interface 介面目錄
│ ├── innerkits 內部kit目錄
│ │ ├── appverify 應用簽名驗籤
│ │ ├── crypto_lite 加解密
│ │ ├── hichainsdk_lite 裝置認證
│ │ ├── huks_lite 祕鑰管理和證書管理
│ │ ├── iam_lite 應用許可權管理
│ │ ├── secure_os 安全OS
│ ├── kits 外部kit目錄
│ │ ├── iam_lite 應用許可權管理
├── services 具體實現
│ ├── iam_lite 應用許可權管理
│ ├── secure_os 安全OS
hiviewdfx
用於存放DFX框架的程式碼。主要包含DFR(Design for Reliability,可靠性)和DFT(Design for Testability,可測試性)特性。主要是日誌。
iot_hardware
IoT外設控制
global
全球化資源管理模組主要提供語言資源回溯和多偏好語言支援的能力。
docs
此工程存放OpenHarmony提供的快速入門、開發指南、API參考等開發者文件
kernel
OpenHarmony核心是華為推出面向IoT領域的實時作業系統核心,它同時具備RTOS輕快和Linux易用的特點。
OpenHarmony核心主要包括程式和執行緒排程、記憶體管理、IPC機制、timer管理等核心基本功能。
OpenHarmony核心的原始碼分為 kernel_liteos_a 和 kernel_liteos_m 這2個程式碼倉庫,其中kernel_liteos_a主要針對Cortex-A系列處理器,而kernel_liteos_m則主要針對Cortex-M系列處理器,兩者目錄結構非常相似。
third_party
cJSON
用c實現的超輕量級JSON庫。
lwip
TCP/IP協議實現庫
musl
Musl是一個輕量級的C標準庫。設計作為GNU C library (glibc)、 uClibc或Android Bionic的替代用於嵌入式作業系統和移動裝置。
NuttX
Nuttx 是一個實時嵌入式作業系統(RTOS)
Mbed TLS
SSL/TLS功能庫
foundation
ace
JS應用開發框架,提供了一套跨平臺的類web應用開發框架,通過Toolkit將開發者編寫的HML、CSS和JS 檔案編譯打包成JS Bundle,解析執行JS Bundle,生成native UI View元件樹並進行渲染顯示。通過支援三方開發者使用宣告式的API進行應用開發,以資料驅動檢視變化,避免大量的檢視操作,大大降低應用開發難度,提升開發者開發體驗。
communication
分散式通訊子系統。
distributedschedule
分散式任務排程模組負責跨裝置元件管理,提供訪問和控制遠端元件的能力,支援分散式場景下的應用協同。
graphic
圖形子系統。
圖形子系統主要包括UI元件、佈局、動畫、字型、輸入事件、視窗管理、渲染繪製等模組,構建基於輕量OS的應用框架,滿足硬體資源較小的物聯網裝置的OpenHarmony系統應用開發。
appexecfwk
包資訊查詢、安裝、解除安裝等功能
aafwk
Ability開發框架介面、Ability管理服務
multimedia
媒體子系統。
多媒體包括camera,recorder和player,camera提供YUV、RGB、JPEG以及H264,H265資料到共享記憶體surface中,recorder模組將surface中h264/h265資料和音訊aac資料打包成mp4檔案,player模組把mp4檔案解複用成音訊和視訊資料,分別送入對應編碼器解碼,然後進行播放。
drivers
驅動
vendor
廠商晶片驅動軟體,包含LICENSE、編譯指令碼、配置檔案、驅動實現、工具等
utils
公共基礎庫存放OpenHarmony通用的基礎元件。這些基礎元件可被OpenHarmony各業務子系統及上層應用所使用。
公共基礎庫在不同平臺上提供的能力:
LiteOS-M核心(Hi3861平臺):KV儲存、檔案操作、定時器、IoT外設控制
LiteOS-A核心(Hi3516、Hi3518平臺):KV儲存、定時器、ACE JS API
build
編譯構建子系統。
編譯構建提供了一個在GN和ninja基礎上的編譯構建框架。支援以下功能:
- 構建不同晶片平臺的產品。如:Hi3518EV300平臺的ipcamera產品,Hi3516DV300平臺的ipcamera產品,Hi3861平臺的WLAN模組產品。
- 構建HPM包管理配置生成的自定義產品。
build/lite # 編譯構建主目錄
├── config # 編譯相關的配置項
│ ├── boards # 開發板相關的變數定義。包括:開發板名、目標架構、目標CPU等
│ ├── component # OpenHarmony元件相關的模板定義。包括:靜態庫、動態庫、擴充套件元件、模擬器庫等
│ ├── kernel # OpenHarmony核心的編譯變數定義與配置引數
│ └── subsystem # OpenHarmony子系統列表
├── ndk # NDK相關編譯指令碼與配置引數
├── platform # 平臺相關的配置檔案
│ ├── hi3516dv300_liteos_a # hi3516dv300, liteos_a平臺。包括:平臺全量配置表,啟動檔案。
│ ├── hi3518ev300_liteos_a # hi3518ev300, liteos_a平臺。包括:平臺全量配置表,啟動檔案。
│ └── hi3861v100_liteos_riscv # hi3861v100, liteos_riscv平臺。包括:平臺全量配置表,啟動檔案。
├── product # 產品全量配置表。包括:配置單元、子系統列表、編譯器等。
├── toolchain # 編譯工具鏈相關。包括:編譯器路徑、編譯選項、連結選項等。
└── tools # 編譯構建依賴的工具。包括:mkfs等。
applications
內建應用
test
xts
XTS是OpenHarmony生態認證測試套件的集合,當前包括acts(application compatibility test suite)應用相容性測試套,後續會擴充dcts(device compatibility test suite)裝置相容性測試套等。
developertest
開發過程採用測試驅動開發模式,開發者基於系統新增特性可以通過開發者自己開發用例保證,對於系統已有特性的修改,也可通過修改專案中原有的測試用例保證,開發者測試旨在幫助開發者在開發階段就能開發出高質量程式碼
prebuilts
系統標頭檔案和標準庫
相關文章
- 鴻蒙JS 開發整理鴻蒙JS
- 鴻蒙輕核心原始碼分析:Newlib C鴻蒙原始碼
- 鴻蒙再換“小目標”鴻蒙
- 鴻蒙OS的系統呼叫是如何實現的? | 解讀鴻蒙原始碼鴻蒙原始碼
- 鴻蒙 移植 樹莓派(下)修改原始碼鴻蒙樹莓派原始碼
- 鴻蒙輕核心原始碼分析:虛實對映鴻蒙原始碼
- Netty 原始碼分析-目錄Netty原始碼
- Linux核心原始碼目錄Linux原始碼
- 鴻蒙輕核心原始碼分析:檔案系統LittleFS鴻蒙原始碼
- 鴻蒙輕核心原始碼分析:虛擬記憶體鴻蒙原始碼記憶體
- 鴻蒙程式碼配置混淆鴻蒙
- PostgreSQL:原始碼目錄結構SQL原始碼
- vue 原始碼目錄設計Vue原始碼
- 鴻蒙OS架構及關鍵技術整理鴻蒙架構
- 鴻蒙OS學習資料整理,持續更新中鴻蒙
- Android系統原始碼目錄解析Android原始碼
- 鴻蒙 OS 程式碼正式開源!!鴻蒙
- 3.5鴻蒙鴻蒙
- 鴻蒙layoutWeight鴻蒙
- 鴻蒙輕核心M核原始碼分析:LibC實現之Musl LibC鴻蒙原始碼
- Dubbo原始碼分析(七)服務目錄原始碼
- Kubernetes原始碼系列:Kubernetes目錄結構原始碼
- EOS原始碼分析(7)目錄結構原始碼
- Vue.js 原始碼目錄設計Vue.js原始碼
- Android------- IjkPlayer 原始碼學習目錄Android原始碼
- 鴻蒙生態鴻蒙
- 初窺鴻蒙鴻蒙
- 優酷鴻蒙開發實踐 | 鴻蒙卡片開發鴻蒙
- 鴻蒙前端開發1-檔案目錄結構鴻蒙前端
- 認識鴻蒙Context鴻蒙Context
- 認識鴻蒙ContextUQ鴻蒙Context
- 鴻蒙語言ArkTS鴻蒙
- 人人都能懂的Vue原始碼系列(一)—Vue原始碼目錄結構Vue原始碼
- 掌握鴻蒙輕核心靜態記憶體的使用,從原始碼分析開始鴻蒙記憶體原始碼
- 你知道Golang原始碼各目錄的作用嗎?Golang原始碼
- libevent原始碼初識及目錄結構分析原始碼
- 鴻蒙NEXT開發案例:隨機密碼生成鴻蒙隨機密碼
- 鴻蒙系統系列教程5-鴻蒙開發環境的搭建鴻蒙開發環境