自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OpenHarmony瘦設備內核移植實戰(zhàn)(二)

系統 OpenHarmony
我們要做的工作就是梳理原有系統啟動流程,包括:如何將固件代碼拷貝到內存,棧針從哪里開始引導系統啟動,系統啟動前需要做哪些軟硬件的初始工作,然后讓OH通過這套流程跑起來。

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區(qū)

https://ost.51cto.com

一、背景

OpenHarmony系統移植最核心的步驟是內核的移植,內核的穩(wěn)定是一切子系統穩(wěn)定的基礎,上一篇我們一起認識了板卡、SoC、芯片架構,并在OpenHarmony源碼中找到了對應層面的開發(fā)路徑,本文將開始介紹實操部分。

二、內核啟動流程梳理

確保移植前開發(fā)板的官方SDK是可以跑起來的,原有SDK通常為FreeRTOS或者其他系統,固件的編譯有對應編譯流程,以及系統啟動流程。我們要做的工作就是梳理原有系統啟動流程,包括:如何將固件代碼拷貝到內存,棧針從哪里開始引導系統啟動,系統啟動前需要做哪些軟硬件的初始工作,然后讓OH通過這套流程跑起來。

系統啟動流程及原理圖:

OpenHarmony瘦設備內核移植實戰(zhàn)(二)-開源基礎軟件社區(qū)

MCU啟動工作原理圖

OpenHarmony瘦設備內核移植實戰(zhàn)(二)-開源基礎軟件社區(qū)

1.BootLoader將系統程序從Flash加載到運行內存中。

2.通過匯編指令完成系統啟動前的軟硬件初始化準備工作。

3.初始化系統并啟動系統。

4.系統啟動完成。

5.完成系統框架層的啟動,使各個子系統處于可用狀態(tài)。

三、配置vendor

配置vendor,創(chuàng)建如下目錄結構

OpenHarmony瘦設備內核移植實戰(zhàn)(二)-開源基礎軟件社區(qū)

BUILD.gn代碼如下:

group("explorer") {
}

config.json代碼如下:

"product_name": "explorer",
"type": "mini",
"version": "3.0",
"device_company": "alientek",
"board": "explorer",
"kernel_type": "liteos_m",
"kernel_version": "3.0.0",
"subsystems": [
{ // 增加liteos_m內核
"subsystem": "kernel",
"components": [
{
"component": "liteos_m",
"features":[]
}
]
},
// 這里可以繼續(xù)添加XTS子系統、DFX子系統,以及其他特性子系統
],
"third_party_dir": "",
"product_adapter_dir": ""
}

配置完成后保存,我們可以使用hb set命令嘗試編譯。

OpenHarmony瘦設備內核移植實戰(zhàn)(二)-開源基礎軟件社區(qū)

可以看到在選項中會出現 alientek -> explorer 構建選項。直接使用hb build -f編譯后看看結果,得到錯誤提示:需要創(chuàng)建device相關的文件。

OpenHarmony瘦設備內核移植實戰(zhàn)(二)-開源基礎軟件社區(qū)

根據報錯提示,可得知應該是缺少device相關配置,接下來繼續(xù)創(chuàng)建device相關配置文件。

四、配置device/board

board配置板卡編譯相關的工具鏈,以及最為核心的啟動匯編命令、鏈接庫腳本,它將指定main函數來啟動系統。

根據配置規(guī)范,我們在device下創(chuàng)建對應的文件夾,開發(fā)板是正點原子(alientek)的探索者(explorer),因此我們根據OH規(guī)范創(chuàng)建目錄結構,如下:

OpenHarmony瘦設備內核移植實戰(zhàn)(二)-開源基礎軟件社區(qū)

BUILD.gn 代碼如下:

if (ohos_kernel_type == "liteos_m") {
import("http://kernel/liteos_m/liteos.gni")
module_name = get_path_info(rebase_path("."), "name")
module_group(module_name) {
modules = [
"explorer",
]

在/device/board/alientek/explorer/目錄下創(chuàng)建BUILD.gn文件,以及l(fā)iteos_m目錄。

BUILD.gn代碼與之前一樣。

創(chuàng)建開發(fā)板配置文件,最終得到如下目錄結構。

OpenHarmony瘦設備內核移植實戰(zhàn)(二)-開源基礎軟件社區(qū)

配置文件代碼如下:

device/board/alientek/explorer/explorer_stm32f407_defconfig配置:

LOSCFG_BOARD_EXPLORER_STM32F407=y
LOSCFG_SOC_SERIES_STM32F407=y
LOSCFG_SOC_STM32F407=y

device/board/alientek/explorer/Kconfig.liteos_m.board配置:

config BOARD_EXPLORER_STM32F407
bool "select board explorer stm32f407"
depends on SOC_STM32F407

device/board/alientek/explorer/Kconfig.liteos_m.defconfig.board配置:

if BOARD_EXPLORER_STM32F407
config BOARD
string
default "explorer_stm32f407"
endif #BOARD_EXPLORER_STM32F407

device/board/alientek/Kconfig.liteos_m.boards配置:

if SOC_STM32F407
orsource "explorer/Kconfig.liteos_m.board"
endif

device/board/alientek/Kconfig.liteos_m.defconfig.boards配置:

orsource "*/Kconfig.liteos_m.defconfig.board"

device/board/alientek/Kconfig.liteos_m.shields配置:

// 可以不用填內容

想了解更多關于開源的內容,請訪問:

51CTO 開源基礎軟件社區(qū)

https://ost.51cto.com

責任編輯:jianghua 來源: 51CTO 開源基礎軟件社區(qū)
相關推薦

2023-05-16 14:49:25

鴻蒙內核移植

2023-02-06 16:21:48

2020-09-17 17:41:24

Liteos-a鴻蒙Linux

2020-11-13 09:45:36

Liteos-a

2023-02-08 15:46:50

設備移植第三方內核適配

2023-03-10 09:47:45

OpenGL渲染設備移植

2023-03-06 16:11:00

設備移植開源GPU驅動

2023-04-06 09:10:13

設備移植鴻蒙

2023-02-28 15:40:16

鴻蒙CPU渲染

2023-03-23 16:02:07

樹莓派4GPU調試

2023-02-14 17:06:31

設備移植打包刷機

2023-02-07 15:52:50

2022-09-07 15:08:58

操作系統鴻蒙

2013-03-13 10:51:44

瘦客戶端VDI

2023-02-01 16:28:30

Linux內核鴻蒙

2023-04-10 09:44:22

內核鼠標調試鴻蒙

2022-04-15 14:31:02

鴻蒙操作系統

2021-09-08 15:23:51

鴻蒙HarmonyOS應用

2023-02-01 16:38:53

2024-07-26 16:39:33

鴻蒙系統開源構建系統
點贊
收藏

51CTO技術棧公眾號