www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

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

1. 引言

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

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

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

Figure 1. Runkaihong Hongrui development board SCDAYU800A appearance

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

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

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

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

3) 提供豐富的擴(kuò)展接口,如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移植流程

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

Figure 3. Flowchart of porting OpenHarmony to SCDAYU800

3. OpenHarmony移植到SCDAYU800的流程圖

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

3.1. 產(chǎn)品定義

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

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

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

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

快速適配這三個倉的方法是學(xué)習(xí)能編譯通過的產(chǎn)品,例如rk3568產(chǎn)品,然后將其拷貝一份,并重命名為當(dāng)前產(chǎn)品名,然后按照以下步驟根據(jù)自己產(chǎn)品的特性進(jìn)行逐步修改。根據(jù)上述分析,首先需要在//vendor/hihope目錄下創(chuàng)建dayu800產(chǎn)品目錄,并創(chuàng)建config.json文件,用于描述產(chǎn)品所使用的SOC及所需的子系統(tǒng)。配置文件內(nèi)容如下[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的產(chǎn)品,然后創(chuàng)建一個ohos.build文件定義產(chǎn)品的subsystem以及BUILD.gn定義產(chǎn)品的編譯項(xiàng)目。

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

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

./build.sh --product-name dayu800

3.2. 工具鏈適配

因?yàn)楣俜降腛penHarmony不支持RISCV64架構(gòu),因此在工具鏈架構(gòu)的配置上相對來說配置起來比較困難,首先解決的是build倉中的架構(gòu)適配,這部分仿照ARM64配置的部分進(jìn)行相應(yīng)的RISCV64架構(gòu)添加,同時(shí)對于musl的編譯配置根據(jù)RISCV64架構(gòu)進(jìn)行對應(yīng)添加,內(nèi)核的編譯部分根據(jù)平頭哥提供的編譯工具鏈,使用llvm會有相關(guān)私有指令集無法編譯[6]。

3.3. musl庫適配

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

3.4. 內(nèi)核移植

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

第一步是配置內(nèi)核的編譯流程腳本。

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

第二步是將產(chǎn)品的設(shè)備樹dts完整地移植過來,然后編譯內(nèi)核并解決相應(yīng)的編譯問題。

第三步是將架構(gòu)代碼即arch/arm64下的代碼盡可能地替換成產(chǎn)品linux中的內(nèi)容,然后編譯內(nèi)核并解決相應(yīng)的編譯問題。

在device/board/hihope/dayu800/kernel目錄下進(jìn)行內(nèi)核編譯。除內(nèi)核以外的代碼編譯采用的是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

# 內(nèi)核模塊編譯

./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

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

將編譯后的內(nèi)核打包成boot.ext4鏡像文件。

第四步是將產(chǎn)品linux的config?件內(nèi)的宏移植過來。

第五步是運(yùn)行內(nèi)核,并根據(jù)運(yùn)行時(shí)問題進(jìn)行逐個解決。

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

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

1) 編譯適配startup_init模塊。

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

3.6. 顯示適配

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

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

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

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

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

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

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

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

3) 設(shè)定Input相關(guān)配置、下載及更新固件等操作。

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

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

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

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

4.1. 設(shè)備描述配置

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

input :: host {

hostName = "input_host";

priority = 100;

device_input_manager :: device {

device0 :: deviceNode {

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

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

preload = 0; // 加載該驅(qū)動

permission = 0660;

moduleName = "HDF_INPUT_MANAGER";

serviceName = "hdf_input_host";

deviceMatchAttr = "";

}

}

// 其他設(shè)備配置

}

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

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

root {

input_config {

touchConfig {

touch0 {

boardConfig {

match_attr = "touch_device1";

inputAttr {

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

solutionX = 800;

solutionY = 1280;

devName = "main_touch"; // 設(shè)備名稱

}

// 其他配置

}

}

}

}

}

4.3. 添加器件驅(qū)動

在器件驅(qū)動中,主要實(shí)現(xiàn)平臺預(yù)留的差異化接口。以數(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ù)解析邏輯

//器件私有配置解析

//器件設(shè)備注冊到平臺驅(qū)動

//調(diào)用Input HDI接口

}

圖5顯示了調(diào)用Input HDI的步驟。

Figure 5. Steps to call Input HDI

5. 調(diào)用Input HDI的步驟

5. 結(jié)論

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

參考文獻(xiàn)

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

中興微電子認(rèn)為,通用CPU憑借其高性價(jià)比、強(qiáng)兼容性與低延遲特性,正成為大模型推理服務(wù)器實(shí)現(xiàn)“普惠”的重要選項(xiàng)。而在這場算力革新中,RISC-V架構(gòu)憑借其開放、靈活、可擴(kuò)展的基因,展現(xiàn)出破解LLM高效推理核心命題的獨(dú)特潛力...

關(guān)鍵字: RISC-V架構(gòu) AI算力 集成電路

在處理器架構(gòu)的浩瀚星空中,RISC-V猶如一顆冉冉升起的新星,以其開源、靈活和模塊化的特性,吸引了全球科技界的廣泛關(guān)注。然而,盡管RISC-V架構(gòu)CPU承載著眾多期望與夢想,其普及之路卻并非一帆風(fēng)順。本文將深入探討RIS...

關(guān)鍵字: RISC-V架構(gòu) CPU

9月25日-27日,以“開源賦能產(chǎn)業(yè),生態(tài)構(gòu)筑未來”為主題的2024開放原子開源生態(tài)大會在北京隆重召開。在9月26日0penHarmony生態(tài)主題演講中,多家行業(yè)組織代表與眾多外設(shè)廠商代表齊聚北京亦創(chuàng)國際會展中心,共同見...

關(guān)鍵字: OpenHarmony 華為

7月2日,OpenHarmony賽途“職”引活動(以下簡稱“活動”)在上海交通大學(xué)舉行。本次活動面向上海交通大學(xué)師生分享了OpenHarmony技術(shù)創(chuàng)新與發(fā)展前景,并帶來了中國研究生操作系統(tǒng)開源創(chuàng)新大賽、2024中國國際...

關(guān)鍵字: 華為 OpenHarmony

MIKROE增加了圖形功能,CLANG支持ARM和RISC-V以及許多其他功能

關(guān)鍵字: 編譯器 RISC-V架構(gòu) 工業(yè)自動化

2023年12月12日,上海 - 由國產(chǎn)高性能微控制器廠商上海先楫半導(dǎo)體科技有限公司(先楫半導(dǎo)體,HPMicro)主辦的EtherCAT技術(shù)應(yīng)用峰會暨先楫半導(dǎo)體HPM6E00新品預(yù)覽在浦東喜來登由由酒店成功舉辦。此次峰會...

關(guān)鍵字: 工業(yè)以太網(wǎng) RISC-V架構(gòu) 芯片

具有顛覆性的BeagleV?-Fire單板機(jī)擁有強(qiáng)大性能和新的連接選項(xiàng)

關(guān)鍵字: 單板機(jī) RISC-V架構(gòu) 人工智能

6月11日消息,除了自己的HarmonyOS鴻蒙系統(tǒng)之外,華為還捐獻(xiàn)了代碼,聯(lián)合多家單位推出了OpenHarmony開源鴻蒙,并開放使用,涉及各種產(chǎn)品,現(xiàn)在搭載OpenHarmony系統(tǒng)的衛(wèi)星都上天了。

關(guān)鍵字: OpenHarmony 衛(wèi)星 通信電子

據(jù) 21ic 消息報(bào)道,昨天舉行了 2023 開源基金會 OpenHarmony 開發(fā)者大會,對外發(fā)布了 OpenHarmony 3.2 Release 版本?,F(xiàn)場不僅解讀了新版本技術(shù)特性,還分享了基于 OpenHarm...

關(guān)鍵字: 鴻蒙 OpenHarmony

據(jù)業(yè)內(nèi)信息,近日一位B站的開發(fā)者表示已經(jīng)將開源鴻蒙OpenHarmony系統(tǒng)成功移植到了小米6手機(jī)中,實(shí)現(xiàn)了操作系統(tǒng)在高通驍龍芯片平臺的正常開機(jī)運(yùn)行。

關(guān)鍵字: 小米手機(jī) 開源鴻蒙 OpenHarmony 小米6
關(guān)閉