日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 《嵌入式技術與智能系統(tǒng)》
[導讀]文章詳細介紹了針對潤開鴻鴻銳開發(fā)板SCDAYU800A的OpenHarmony操作系統(tǒng)的移植適配過程。潤開鴻鴻銳開發(fā)板SCDAYU800A基于平頭哥高性能RISC-V架構曳影TH1520芯片,具備強大的AI算力和豐富的功能接口。通過對OpenHarmony的適配,實現(xiàn)了從產品定義、工具鏈適配到內核移植、驅動適配等關鍵環(huán)節(jié)的完整流程。并重點探討了RISC-V架構下針對標準系統(tǒng)Linux內核的移植以及觸摸屏驅動的開發(fā),為基于RISC-V架構的嵌入式系統(tǒng)研究提供了實踐參考。

1. 引言

隨著RISC-V指令集架構的快速發(fā)展,基于該架構的計算機系統(tǒng)在工業(yè)控制、智能設備等領域得到了廣泛應用[1]-[3]。潤開鴻鴻銳開發(fā)板SCDAYU800A作為一款高性能的RISC-V開發(fā)平臺,具備強大的AI算力和豐富的功能接口,適用于多種應用場景。OpenHarmony是一個由華為公司貢獻給開放原子基金會(OpenAtom Foundation)的開源項目。它是一個全場景分布式操作系統(tǒng),旨在為各種智能設備提供統(tǒng)一的操作體驗。本文將重點探討如何將OpenHarmony 4.1 Release版本移植到潤開鴻鴻銳開發(fā)板SCDAYU800A上,并實現(xiàn)系統(tǒng)的穩(wěn)定運行。

2. 潤開鴻鴻銳開發(fā)板SCDAYU800A硬件特性

潤開鴻鴻銳開發(fā)板SCDAYU800A具備平頭哥高性能RISC-V架構曳影TH1520芯片,集成4核高性能RISC-V處理器玄鐵C910架構。潤開鴻鴻銳開發(fā)板SCDAYU800A的外觀如圖1所示。

Figure 1. Runkaihong Hongrui development board SCDAYU800A appearance

1. 潤開鴻鴻銳開發(fā)板SCDAYU800A的外觀

該開發(fā)板具備以下硬件特性:

1) AI算力達4TOPs,支持藍牙、音頻、視頻和攝像頭等功能。

2) 支持多種視頻輸入輸出接口,如MIPI、HDMI等。

3) 提供豐富的擴展接口,如GPIO、SPI、I2C等。

4) 適用于工控平板、智慧大屏、智能NVR、信息發(fā)布系統(tǒng)、云終端、車載中控等多種場景。

圖2顯示了潤開鴻鴻銳開發(fā)板SCDAYU800A Mipi屏幕安裝的方法。

Figure 2. Runkaihong Hongrui development board SCDAYU800A Mipi screen installation

2. 潤開鴻鴻銳開發(fā)板SCDAYU800A Mipi屏幕安裝

3. OpenHarmony移植流程

移植就是把程序從一個運行環(huán)境轉移到另一個運行環(huán)境。在主機–開發(fā)機的交叉模式下,即是把主機上的程序下載到目標機上運行。圖3顯示了OpenHarmony移植到SCDAYU800的流程情況。OpenHarmony版本選擇必須大于3.2 Beta2以上版本。

Figure 3. Flowchart of porting OpenHarmony to SCDAYU800

3. OpenHarmony移植到SCDAYU800的流程圖

OpenHarmony的移植過程包括產品定義、工具鏈適配、musl庫適配、內核移植、init啟動子系統(tǒng)移植、顯示適配等關鍵環(huán)節(jié)[4]。以下是移植步驟。

3.1. 產品定義

在OpenHarmony的移植過程中,產品定義是基礎步驟。針對OpenHarmony標準系統(tǒng),適配新的產品的方法是首先要在vendor、device/board和device/soc三個目錄下創(chuàng)建產品相關的三個目錄vendor/hihope/${product_name}、device/board/hihope/${product_name}和device/soc/${chip_product}/${chip},以SCDAYU800A為例,在當前產品中product_name設置為dayu800,chip_product設置為thead,chip設置為th1520。

vendor/hihope/dayu800目錄主要存放廠家資料以及產品的配置文件,包括描述產品的config.json、產品的hcs配置文件以及其他配置文件等。

device/board/hihope/dayu800目錄主要用于存放開發(fā)板相關的文件,包括外設驅動、啟動參數(shù)、內核編譯相關文件、燒錄相關文件、uboot相關文件以及升級相關文件。

device/soc/thead/th1520目錄主要用于存放和芯片SoC相關的文件和庫,這些文件只會因芯片soc改變才會修改,而不會因為開發(fā)板變化而進行修改。

快速適配這三個倉的方法是學習能編譯通過的產品,例如rk3568產品,然后將其拷貝一份,并重命名為當前產品名,然后按照以下步驟根據(jù)自己產品的特性進行逐步修改。根據(jù)上述分析,首先需要在//vendor/hihope目錄下創(chuàng)建dayu800產品目錄,并創(chuàng)建config.json文件,用于描述產品所使用的SOC及所需的子系統(tǒng)。配置文件內容如下[5]:

"product_name": "dayu800",

"device_company": "thead",

"device_build_path": "device/board/hihope/dayu800",

"target_cpu": "RISCV64",

"type": "standard",

"version": "3.0",

"board": "dayu800",

"api_version": 11,

"enable_ramdisk": true,

"build_selinux": false,

"build_seccomp": false,

"inherit": [

"vendor/hihope/dayu800/rich.json",

"vendor/hihope/dayu800/chipset_common.json"

],

"subsystems": [

{

"subsystem": "security",

"components": [

{

"component": "selinux",

"features": []

}

]

}

// 其他子系統(tǒng)配置

]

}

該部分根據(jù)vendor倉的定義,在//device/board/hihope目錄下創(chuàng)建一個dayu800的產品,然后創(chuàng)建一個ohos.build文件定義產品的subsystem以及BUILD.gn定義產品的編譯項目。

在//device/soc下根據(jù)芯片公司名稱創(chuàng)建一個thead的倉,存放th1520 soc相關的代碼和閉源庫,通過//device/board/hihope/BUILD.gn添加模塊進行關聯(lián)編譯。該倉下的ohos.build文件描述的是設備子系統(tǒng),這里使用的是device_th1520,相關名稱需要將拷貝過來的文件修改為當前設備的子系統(tǒng)名。同時需要將ohos.build的module_list下的模塊及子模塊中涉及的part_name和subsystem_name全部修改為device_th1520。

至此,可以通過使用如下命令,啟動dayu800的構建:

./build.sh --product-name dayu800

3.2. 工具鏈適配

因為官方的OpenHarmony不支持RISCV64架構,因此在工具鏈架構的配置上相對來說配置起來比較困難,首先解決的是build倉中的架構適配,這部分仿照ARM64配置的部分進行相應的RISCV64架構添加,同時對于musl的編譯配置根據(jù)RISCV64架構進行對應添加,內核的編譯部分根據(jù)平頭哥提供的編譯工具鏈,使用llvm會有相關私有指令集無法編譯[6]。

3.3. musl庫適配

musl庫是一個輕量級、高性能的C標準庫(libc)實現(xiàn),專為Linux系統(tǒng)設計。它旨在提供標準兼容性、代碼簡潔性和高效性,尤其適合嵌入式系統(tǒng)、容器化環(huán)境(如Docker)或需要高度可移植性的場景。這里首先編譯musl庫是因為該庫依賴的模塊相對最少,能最快測試RISCV64架構編譯配置結果是否符合要求,該部分的編譯主要涉及到build倉的配置、musl倉的RISCV64架構配置,以及musl庫中有架構的代碼,這一塊部分從glibc中獲取。

3.4. 內核移植

內核移植是OpenHarmony移植過程中的核心環(huán)節(jié)。潤開鴻鴻銳開發(fā)板SCDAYU800A采用平頭哥提供的Linux內核,適配OpenHarmony特性。該部分的移植既要對Linux內核本身很熟悉,同時也要對鴻蒙的內核特性宏配置很熟悉。本內核移植工作的主要思路是:

第一步是配置內核的編譯流程腳本。

內核的編譯是device/board/hihope/dayu800/kernel/BUILD.gn中kernel模塊調用對應目錄下的build_kernel.sh腳本進行編譯的。該腳本的核心思想是首先拷貝內核源碼到out/kernel/src_tmp/linux-5.10路徑下,給內核源碼中打上HDF (Hardware Driver Foundation)的補丁,然后在內核源碼中創(chuàng)建vendor路徑的軟鏈接(主要是設備樹dts和產品的外設驅動),然后將編譯的config文件拷貝到arch/arm64/config路徑下,將產品的dts文件拷貝到vendor/arch/arm64/boot/dts/hihope路徑下,接下來將外設驅動鏈接到內核中,編譯內核。最后拷貝編譯成功的鏡像到out/dayu800/packages/phone/images中。

第二步是將產品的設備樹dts完整地移植過來,然后編譯內核并解決相應的編譯問題。

第三步是將架構代碼即arch/arm64下的代碼盡可能地替換成產品linux中的內容,然后編譯內核并解決相應的編譯問題。

在device/board/hihope/dayu800/kernel目錄下進行內核編譯。除內核以外的代碼編譯采用的是OpenHarmony版本自身的llvm工具鏈。

這里只列出核心編譯命令。

# 首次編譯請先執(zhí)行下面命令

./build/prebuilts_download.sh

# 全量代碼編譯

./build.sh --product-name dayu800 --gn-args full_mini_debug=false --ccache

# 單模塊編譯

# module_name舉例:"kernel:kernel",表示編譯kernel目錄下的kernel模塊,所有后面的kernel是module_name

./build.sh --product-name dayu800 --ccache --build-target module

# 內核模塊編譯

./build.sh --product-name dayu800 --ccache --build-target kernel

編譯成功有如下信息打印

[OHOS INFO] c overall build overlap rate: 1.05

[OHOS INFO]

[OHOS INFO]

[OHOS INFO] dayu800 build success

[OHOS INFO] cost time: 0:45:57

=====build successful=====

2025-01-18 13:06:52

++++++++++++++++++++++++++++++++++++++++

將編譯后的內核打包成boot.ext4鏡像文件。

第四步是將產品linux的config?件內的宏移植過來。

第五步是運行內核,并根據(jù)運行時問題進行逐個解決。

3.5. init啟動子系統(tǒng)移植

在成功適配musl庫和內核后,需要適配和啟動第一個init進程及其初始化配置文件。主要工作包括:

1) 編譯適配startup_init模塊。

2) 配置啟動參數(shù),確保系統(tǒng)能夠正常啟動。

3.6. 顯示適配

顯示適配是系統(tǒng)啟動的最后一步,主要包括以下內容:

1) 在shell中運行bootanimation,確保啟動動畫正常顯示。

2) 調試OpenHarmony的Launcher模塊,完成系統(tǒng)啟動。

3) 該模塊涉及的倉為graphic_graphic_2d,代碼路徑為foundation/graphic/graphic_2d,該模塊是針對當前產品?適配。

4. 觸摸屏驅動開發(fā)

觸摸屏驅動是潤開鴻鴻銳開發(fā)板SCDAYU800A的重要組成部分,其開發(fā)過程基于HDF驅動管理框架中的Input模型。觸摸屏的驅動被放置在//drivers/hdf_core/framework/model/input/driver/touchscreen目錄中。移植觸摸屏驅動主要工作是向系統(tǒng)注冊ChipDevice模型實例[7]。觸摸屏驅動的主要工作包括:

1) 對觸摸屏驅動IC進行上電、配置硬件管腳并初始化其狀態(tài)。

2) 注冊中斷、配置通信接口(I2C或SPI)。

3) 設定Input相關配置、下載及更新固件等操作。

圖4顯示了潤開鴻鴻銳開發(fā)板SCDAYU800A觸摸屏的常用管腳。

Figure 4. Common pins of the development board SCDAYU800A touch screen

4開發(fā)板SCDAYU800A觸摸屏的常用管腳

潤開鴻鴻銳開發(fā)板SCDAYU800A觸摸屏驅動的開發(fā)過程分為以下三個步驟,這里僅列出部分代碼。

4.1. 設備描述配置

在OpenHarmony中,配置(Configuration)通常指對系統(tǒng)、硬件或應用程序的參數(shù)、選項和功能進行定制和調整的過程,以滿足特定設備或場景的需求。在HDF驅動框架下,需要在配置文件中注冊驅動信息。設備描述配置主要包含Input驅動模型各模塊層級信息配置文件路徑為: vendor/hihope/dayu800/hdf_config/khdf/device_info/device_info.hcs,HDF框架依據(jù)該配置信息實現(xiàn)對Input模型各模塊的依次加載。配置內容如下:

input :: host {

hostName = "input_host";

priority = 100;

device_input_manager :: device {

device0 :: deviceNode {

policy = 2; // 向外發(fā)布服務

priority = 100; // 加載優(yōu)先級

preload = 0; // 加載該驅動

permission = 0660;

moduleName = "HDF_INPUT_MANAGER";

serviceName = "hdf_input_host";

deviceMatchAttr = "";

}

}

// 其他設備配置

}

4.2. 板級配置及器件私有配置

板級配置及器件私有配置文件路徑為vendor/hihope/dayu800/hdf_config/khdf/input/input_config.hcs,配置內容如下:

root {

input_config {

touchConfig {

touch0 {

boardConfig {

match_attr = "touch_device1";

inputAttr {

inputType = 0; // 0代表觸摸屏

solutionX = 800;

solutionY = 1280;

devName = "main_touch"; // 設備名稱

}

// 其他配置

}

}

}

}

}

4.3. 添加器件驅動

在器件驅動中,主要實現(xiàn)平臺預留的差異化接口。以數(shù)據(jù)獲取及解析為例,潤開鴻鴻銳開發(fā)板SCDAYU800A使用了gt911觸摸屏,代碼路徑為: drivers/hdf_core/framework/model/input/driver/touchscreen/touch_gt911.c,部分代碼如下:

static void ParsePointData(ChipDevice *device, FrameData *frame, uint8_t *buf, uint8_t pointNum)

{

int32_t resX = device->driver->boardCfg->attr.resolutionX;

int32_t resY = device->driver->boardCfg->attr.resolutionY;

// 數(shù)據(jù)解析邏輯

//器件私有配置解析

//器件設備注冊到平臺驅動

//調用Input HDI接口

}

圖5顯示了調用Input HDI的步驟。

Figure 5. Steps to call Input HDI

5. 調用Input HDI的步驟

5. 結論

本文介紹了潤開鴻鴻銳開發(fā)板SCDAYU800A的OpenHarmony操作系統(tǒng)的移植適配過程。在分析OpenHarmony標準系統(tǒng)的前提下,成功實現(xiàn)了OpenHarmony在潤開鴻鴻銳開發(fā)板SCDAYU800A上的穩(wěn)定運行。該研究為基于RISC-V架構的單板機系統(tǒng)開發(fā)提供了實踐參考,具有一定的應用價值。

參考文獻

[1] RISC-V架構手冊[EB/OL].
[2] 劉暢, 武延軍, 吳敬征, 趙琛. RISC-V指令集架構研究綜述[J]. 軟件學報, 2021, 32(12): 3992-4024.
[3] 林金龍, 何小慶. 深入理解RISC-V程序開發(fā)[M]. 北京: 航空航天大學出版社, 2021.
[4] OpenHarmony官方文檔[EB/OL].
[5] 潤開鴻鴻銳開發(fā)板SCDAYU800A技術手冊[EB/OL].
[6] HDF驅動開發(fā)框架[EB/OL]. OpenHarmony開發(fā)者社區(qū).
[7] ITOPEN/DAYU800 [EB/OL].
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉