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的適配,實現(xiàn)了從產(chǎn)品定義、工具鏈適配到內(nèi)核移植、驅(qū)動適配等關(guān)鍵環(huán)節(jié)的完整流程。并重點探討了RISC-V架構(gòu)下針對標(biāo)準(zhǔn)系統(tǒng)Linux內(nèi)核的移植以及觸摸屏驅(qū)動的開發(fā),為基于RISC-V架構(gòu)的嵌入式系統(tǒng)研究提供了實踐參考。

1. 引言

隨著RISC-V指令集架構(gòu)的快速發(fā)展,基于該架構(gòu)的計算機(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)的開源項目。它是一個全場景分布式操作系統(tǒng),旨在為各種智能設(shè)備提供統(tǒng)一的操作體驗。本文將重點探討如何將OpenHarmony 4.1 Release版本移植到潤開鴻鴻銳開發(fā)板SCDAYU800A上,并實現(xiàn)系統(tǒng)的穩(wě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移植流程

移植就是把程序從一個運行環(huán)境轉(zhuǎn)移到另一個運行環(huán)境。在主機(jī)–開發(fā)機(jī)的交叉模式下,即是把主機(jī)上的程序下載到目標(biāo)機(jī)上運行。圖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改變才會修改,而不會因為開發(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)品的編譯項目。

在//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)名。同時需要將ohos.build的module_list下的模塊及子模塊中涉及的part_name和subsystem_name全部修改為device_th1520。

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

./build.sh --product-name dayu800

3.2. 工具鏈適配

因為官方的OpenHarmony不支持RISCV64架構(gòu),因此在工具鏈架構(gòu)的配置上相對來說配置起來比較困難,首先解決的是build倉中的架構(gòu)適配,這部分仿照ARM64配置的部分進(jìn)行相應(yīng)的RISCV64架構(gòu)添加,同時對于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)實現(xiàn),專為Linux系統(tǒng)設(shè)計。它旨在提供標(biāo)準(zhǔn)兼容性、代碼簡潔性和高效性,尤其適合嵌入式系統(tǒng)、容器化環(huán)境(如Docker)或需要高度可移植性的場景。這里首先編譯musl庫是因為該庫依賴的模塊相對最少,能最快測試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)核本身很熟悉,同時也要對鴻蒙的內(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)的補丁,然后在內(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)的宏移植過來。

第五步是運行內(nèi)核,并根據(jù)運行時問題進(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中運行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模型實例[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ù)、選項和功能進(jìn)行定制和調(diào)整的過程,以滿足特定設(shè)備或場景的需求。在HDF驅(qū)動框架下,需要在配置文件中注冊驅(qū)動信息。設(shè)備描述配置主要包含Input驅(qū)動模型各模塊層級信息配置文件路徑為: vendor/hihope/dayu800/hdf_config/khdf/device_info/device_info.hcs,HDF框架依據(jù)該配置信息實現(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ū)動中,主要實現(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)的前提下,成功實現(xiàn)了OpenHarmony在潤開鴻鴻銳開發(fā)板SCDAYU800A上的穩(wěn)定運行。該研究為基于RISC-V架構(gòu)的單板機(jī)系統(tǒng)開發(fā)提供了實踐參考,具有一定的應(yīng)用價值。

參考文獻(xiàn)

[1] RISC-V架構(gòu)手冊[EB/OL].
[2] 劉暢, 武延軍, 吳敬征, 趙琛. RISC-V指令集架構(gòu)研究綜述[J]. 軟件學(xué)報, 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ā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉