0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenHarmony瘦設(shè)備內(nèi)核移植實(shí)戰(zhàn)

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:OpenHarmony技術(shù)社區(qū) ? 2023-05-08 10:50 ? 次閱讀

OpenHarmony 系統(tǒng)移植最核心的步驟是內(nèi)核的移植,內(nèi)核的穩(wěn)定是一切子系統(tǒng)穩(wěn)定的基礎(chǔ),本文將介紹內(nèi)核移植實(shí)操部分。

內(nèi)核啟動(dòng)流程梳理

確保移植前開(kāi)發(fā)板的官方 SDK 是可以跑起來(lái)的,原有 SDK 通常為 FreeRTOS 或者其他系統(tǒng),固件的編譯有對(duì)應(yīng)編譯流程,以及系統(tǒng)啟動(dòng)流程。

我們要做的工作就是梳理原有系統(tǒng)啟動(dòng)流程,包括:如何將固件代碼拷貝到內(nèi)存,棧針從哪里開(kāi)始引導(dǎo)系統(tǒng)啟動(dòng),系統(tǒng)啟動(dòng)前需要做哪些軟硬件的初始工作,然后讓 OH 通過(guò)這套流程跑起來(lái)。

系統(tǒng)啟動(dòng)流程及原理圖:

b0dba7a2-ed42-11ed-90ce-dac502259ad0.png

MCU 啟動(dòng)工作原理圖:

b0f627da-ed42-11ed-90ce-dac502259ad0.png

①BootLoader 將系統(tǒng)程序從 Flash 加載到運(yùn)行內(nèi)存中。

②通過(guò)匯編指令完成系統(tǒng)啟動(dòng)前的軟硬件初始化準(zhǔn)備工作。

③初始化系統(tǒng)并啟動(dòng)系統(tǒng)。

④系統(tǒng)啟動(dòng)完成。

⑤完成系統(tǒng)框架層的啟動(dòng),使各個(gè)子系統(tǒng)處于可用狀態(tài)。

配置 vendor

配置 vendor,創(chuàng)建如下目錄結(jié)構(gòu):

b10a6dee-ed42-11ed-90ce-dac502259ad0.png

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內(nèi)核
"subsystem":"kernel",
"components":[
{
"component":"liteos_m",
"features":[]
}
]
},
//這里可以繼續(xù)添加X(jué)TS子系統(tǒng)、DFX子系統(tǒng),以及其他特性子系統(tǒng)
],
"third_party_dir":"",
"product_adapter_dir":""
}
配置完成后保存,我們可以使用 hb set 命令嘗試編譯。b11cd86c-ed42-11ed-90ce-dac502259ad0.png可以看到在選項(xiàng)中會(huì)出現(xiàn) alientek -> explorer 構(gòu)建選項(xiàng)。

直接使用 hb build -f 編譯后看看結(jié)果,得到錯(cuò)誤提示:需要?jiǎng)?chuàng)建 device 相關(guān)的文件。

b12feb14-ed42-11ed-90ce-dac502259ad0.png

根據(jù)報(bào)錯(cuò)提示,可得知應(yīng)該是缺少 device 相關(guān)配置,接下來(lái)繼續(xù)創(chuàng)建 device 相關(guān)配置文件。

配置 device/board

board 配置板卡編譯相關(guān)的工具鏈,以及最為核心的啟動(dòng)匯編命令、鏈接庫(kù)腳本,它將指定 main 函數(shù)來(lái)啟動(dòng)系統(tǒng)。

根據(jù)配置規(guī)范,我們?cè)?device 下創(chuàng)建對(duì)應(yīng)的文件夾,開(kāi)發(fā)板是正點(diǎn)原子(alientek)的探索者(explorer),因此我們根據(jù) OH 規(guī)范創(chuàng)建目錄結(jié)構(gòu),如下:

b143f50a-ed42-11ed-90ce-dac502259ad0.png

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 文件,以及 liteos_m 目錄。BUILD.gn 代碼與之前一樣。

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

b156360c-ed42-11ed-90ce-dac502259ad0.png配置文件代碼如下:

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 配置:

configBOARD_EXPLORER_STM32F407
bool"selectboardexplorerstm32f407"
dependsonSOC_STM32F407

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

ifBOARD_EXPLORER_STM32F407
configBOARD
string
default"explorer_stm32f407"
endif#BOARD_EXPLORER_STM32F407

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

ifSOC_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 配置:

//可以不用填內(nèi)容


審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1372

    瀏覽量

    40303
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1037

    瀏覽量

    45978
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3723

    瀏覽量

    16343

原文標(biāo)題:OpenHarmony瘦設(shè)備內(nèi)核移植實(shí)戰(zhàn)

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    linux 內(nèi)核移植問(wèn)題 make menuconfig

    linux內(nèi)核移植問(wèn)題make menuconfig
    發(fā)表于 08-25 13:25

    linux內(nèi)核移植

    linux內(nèi)核移植教程
    發(fā)表于 10-15 21:24

    Linux內(nèi)核移植

    Linux內(nèi)核移植 上一節(jié)介紹了u-boot的移植,這一節(jié)來(lái)介紹Linux內(nèi)核移植。 工具和源碼在路徑:F:\韋東山\CD1_主光盤\system。 通過(guò)Samba,將工具和源碼拷貝到共享目錄
    發(fā)表于 12-25 14:43

    OpenHarmony設(shè)備內(nèi)核移植實(shí)戰(zhàn)(一)

    一、背景 在各行各業(yè)存在很多不同的智能設(shè)備,每個(gè)設(shè)備都使用芯片去實(shí)現(xiàn)不同的業(yè)務(wù)場(chǎng)景需求。本文將以常用的STM32F407ZG芯片為例,介紹OpenHarmony
    發(fā)表于 04-24 16:04

    OpenHarmony設(shè)備內(nèi)核移植實(shí)戰(zhàn)(二)

    一、背景 OpenHarmony系統(tǒng)移植最核心的步驟是內(nèi)核移植,內(nèi)核的穩(wěn)定是一切子系統(tǒng)穩(wěn)定的基礎(chǔ),上一篇我們一起認(rèn)識(shí)了板卡、SoC、芯片架
    發(fā)表于 05-10 16:03

    HHARM9200移植2.6內(nèi)核移植文檔

    HHARM9200移植2.6內(nèi)核移植文檔
    發(fā)表于 03-01 16:04 ?37次下載
    HHARM9200<b class='flag-5'>移植</b>2.6<b class='flag-5'>內(nèi)核移植</b>文檔

    ARM開(kāi)發(fā)板上uClinux內(nèi)核移植

    ARM開(kāi)發(fā)板上uClinux內(nèi)核移植 簡(jiǎn)述:針對(duì)“如何在以S3C44B0X為核心的ARMSYS開(kāi)發(fā)板上建立uClinux內(nèi)核移植”的一個(gè)總結(jié),其內(nèi)容包括對(duì)Bootloader的功能分析和uClinux2.4.24發(fā)行版內(nèi)
    發(fā)表于 02-02 11:07 ?735次閱讀

    嵌入式Linux內(nèi)核移植詳解(頂嵌)

    嵌入式內(nèi)核移植步驟詳解 含配置含義及內(nèi)容等方面
    發(fā)表于 11-20 16:00 ?19次下載

    基于DSP的嵌入式Linux內(nèi)核移植的研究與實(shí)現(xiàn)_王曉東

    基于DSP的嵌入式Linux內(nèi)核移植的研究與實(shí)現(xiàn)_王曉東
    發(fā)表于 03-19 11:45 ?1次下載

    Linux內(nèi)核移植相關(guān)代碼解析

    本文通過(guò)整理之前研發(fā)的一個(gè)項(xiàng)目(ARM7TDMI +uCLinux),分析內(nèi)核啟動(dòng)過(guò)程及需要修改的文件,以供內(nèi)核移植者參考。整理過(guò)程中也同時(shí)參考了眾多網(wǎng)友的帖子,在此謝過(guò)。由于整理過(guò)程匆忙,難免錯(cuò)誤
    發(fā)表于 11-07 11:29 ?0次下載

    騰訊物聯(lián)網(wǎng)系統(tǒng)TOS內(nèi)核移植起來(lái)比你想象的要簡(jiǎn)單

    騰訊物聯(lián)網(wǎng)系統(tǒng)TOS,內(nèi)核移植起來(lái)比你想象的要簡(jiǎn)單
    的頭像 發(fā)表于 02-05 12:51 ?2485次閱讀

    Armlinux內(nèi)核移植及系統(tǒng)初始化過(guò)程分析

    Armlinux內(nèi)核移植及系統(tǒng)初始化過(guò)程分析說(shuō)明。
    發(fā)表于 04-06 15:53 ?11次下載

    RT-Thread文檔_內(nèi)核移植

    RT-Thread文檔_內(nèi)核移植
    發(fā)表于 02-22 18:31 ?3次下載
    RT-Thread文檔_<b class='flag-5'>內(nèi)核移植</b>

    OpenHarmony設(shè)備內(nèi)核移植實(shí)戰(zhàn)(一)

    背景 在各行各業(yè)存在很多不同的智能設(shè)備,每個(gè)設(shè)備都使用芯片去實(shí)現(xiàn)不同的業(yè)務(wù)場(chǎng)景需求。本文將以常用的STM32F407ZG芯片為例,介紹OpenHarmony
    的頭像 發(fā)表于 05-11 20:16 ?1068次閱讀
    <b class='flag-5'>OpenHarmony</b><b class='flag-5'>瘦</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>內(nèi)核移植</b><b class='flag-5'>實(shí)戰(zhàn)</b>(一)

    鴻蒙設(shè)備移植:SoC適配

    OpenHarmony 系統(tǒng)移植最核心的步驟是內(nèi)核移植,內(nèi)核的穩(wěn)定是一切子系統(tǒng)穩(wěn)定的基礎(chǔ),上一篇我們講述了
    的頭像 發(fā)表于 05-22 10:49 ?1459次閱讀
    鴻蒙<b class='flag-5'>瘦</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>移植</b>:SoC適配