成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

51CTO 開源基礎軟件社區

https://ost.51cto.com

一、背景

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

二、內核啟動流程梳理

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

系統啟動流程及原理圖:

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

MCU啟動工作原理圖

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

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

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

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

4.系統啟動完成。

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

三、配置vendor

配置vendor,創建如下目錄結構

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

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":[]
}
]
},
// 這里可以繼續添加XTS子系統、DFX子系統,以及其他特性子系統
],
"third_party_dir": "",
"product_adapter_dir": ""
}

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

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

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

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

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

四、配置device/board

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

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

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

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/目錄下創建BUILD.gn文件,以及liteos_m目錄。

BUILD.gn代碼與之前一樣。

創建開發板配置文件,最終得到如下目錄結構。

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

配置文件代碼如下:

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 開源基礎軟件社區

https://ost.51cto.com

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

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-03-06 16:11:00

設備移植開源GPU驅動

2023-03-10 09:47:45

OpenGL渲染設備移植

2023-02-08 15:46:50

設備移植第三方內核適配

2023-02-28 15:40:16

鴻蒙CPU渲染

2023-03-23 16:02:07

樹莓派4GPU調試

2023-04-06 09:10:13

設備移植鴻蒙

2023-02-14 17:06:31

設備移植打包刷機

2023-02-07 15:52:50

2023-02-01 16:28:30

Linux內核鴻蒙

2023-04-10 09:44:22

內核鼠標調試鴻蒙

2013-03-13 10:51:44

瘦客戶端VDI

2022-09-07 15:08:58

操作系統鴻蒙

2022-04-15 14:31:02

鴻蒙操作系統

2021-09-08 15:23:51

鴻蒙HarmonyOS應用

2024-07-26 16:39:33

鴻蒙系統開源構建系統

2023-02-01 16:38:53

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩色视频 | 成人免费在线观看 | 欧美日韩亚洲系列 | 99久久精品国产一区二区三区 | 天天操 天天操 | 天天爱爱网 | 一级毛片视频 | av一级久久| 国产日韩欧美 | 国产激情在线播放 | 日韩伦理一区二区 | 亚洲电影第三页 | 四虎影视| 欧美中文字幕一区二区三区 | 99热免费在线 | 午夜噜噜噜 | 欧美一级毛片免费观看 | 免费毛片网站 | 黄色网址免费看 | 亚洲成人www | 亚洲三区在线观看 | 国产精久久久 | 亚洲精品久久嫩草网站秘色 | 久久久久久成人 | 精品婷婷| 亚洲一页| 国产成人网 | 国产精品无码专区在线观看 | 精品国产欧美一区二区三区成人 | 免费在线视频一区二区 | 99精品欧美一区二区蜜桃免费 | 久久精品视频一区二区 | 天堂一区二区三区 | 亚洲不卡在线观看 | 欧美五月婷婷 | 91色视频在线观看 | 日韩成人在线一区 | 成人不卡 | 国产99热在线 | 日韩欧美在线免费观看 | 中文字幕免费在线观看 |