LiteOS-A 內(nèi)核
移植概述
移植場景
LiteOS-A 當前支持 ARMv7-a 指令集架構(gòu),如果三方芯片為 ARMv7-a 架構(gòu),可以進行內(nèi)核基礎適配;否則還需要先根據(jù)芯片的架構(gòu)來新增內(nèi)核對該芯片架構(gòu)的支持,這個工作較為復雜,不在這篇文章范圍內(nèi)。
基礎適配
LiteOS-A 提供系統(tǒng)運行所需的系統(tǒng)初始化流程和定制化配置選項。移植過程中,需要關注初始化流程中跟硬件配置相關的函數(shù)。
如下圖所示,LiteOS-A 的初始化流程主要包含以下七步:
1.新增 target_config.h 文件,并且編寫單板內(nèi)存相關的配置宏 DDR_MEM_ADDR 和 DDR_MEM_SIZE,分別表示內(nèi)存起始地址和內(nèi)存的長度,預鏈接腳本 board.ld.S 會根據(jù)這兩個宏進行展開生成鏈接腳本 board.ld。
2.新增定義 MMU 映射全局數(shù)組(g_archMmuInitMapping),指定各個內(nèi)存段屬性及虛實映射關系,內(nèi)核啟動階段根據(jù)該表建立內(nèi)存映射關系。
3.如果是多核,需要新增定義從核操作函數(shù)句柄(struct SmpOps),其中 SmpOps->SmpCpuOn 函數(shù)需要實現(xiàn)喚醒從核的功能;接著定義 SmpRegFunc 函數(shù),調(diào)用 LOS_SmpOpsSet 接口進行句柄注冊;最后通過啟動框架完成注冊過程,即 LOS_MODULE_INIT(SmpRegFunc, LOS_INIT_LEVEL_EARLIEST)。
4.鏈接階段根據(jù)鏈接腳本 board.ld 生成內(nèi)核鏡像。
5.單核 CPU 鏡像運行入口為匯編文件 reset_vector_up.S,多核 CPU 的入口為 reset_vector_mp.S,在匯編文件中進行中斷向量表初始化、MMU 頁表初始化等操作。
6.reset_vector.S 匯編代碼最終會跳轉(zhuǎn)到 C 語言的 main 函數(shù),進行硬件時鐘、軟件定時器、內(nèi)存和任務等初始化,這個過程會依賴 target_config.h 的特性宏配置,最后會創(chuàng)建 SystemInit 任務,并且開啟任務調(diào)度 OsSchedStart()。
7.SystemInit 任務在單板代碼中實現(xiàn),其中調(diào)用 DeviceManagerStart 函數(shù)進行 HDF 驅(qū)動初始化,這個過程會調(diào)用單板代碼中的驅(qū)動配置文件 hdf.hcs 以及 drivers 源碼實現(xiàn)
整體啟動流程如下圖所示:
圖 1 整體啟動流程
從圖 1 中可以看到,內(nèi)核基礎適配需要單板進行適配的代碼包含三部分:
新增 target_config.h 文件,其中新增單板硬件配置參數(shù)和特性開關的配置參數(shù),具體說明如下:
表 1 target_config.h 配置項說明
SystemInit 函數(shù)用于單板用戶態(tài)業(yè)務初始化,典型的初始化場景如圖 2 所示:
圖 2 業(yè)務啟動流程
main 函數(shù)用于內(nèi)核基礎初始化和單板內(nèi)核態(tài)業(yè)務初始化,流程如下圖 3 所示,整體由內(nèi)核啟動框架主導初始化流程,圖中淺藍色部分為啟動框架中可接受外部模塊注冊啟動的階段。
注意:
同一層級內(nèi)的模塊不能有依賴關系。
圖 3 內(nèi)核啟動框架
表 2 啟動框架層級
可通過查看系統(tǒng)編譯生成文件 OHOS_Image.map 中.rodata.init.kernel.*段內(nèi)的符號表來了解當前已注冊進內(nèi)核啟動框架中的各個模塊初始化入口,以及檢查新注冊的模塊初始化入口是否生效。
編程樣例
在單板 SDK 文件中
/* 內(nèi)核啟動框架頭文件 */ #include "los_init.h" ...... /* 新增模塊的初始化函數(shù) */ unsigned int OsSampleModInit(void) { PRINTK("OsSampleModInit SUCCESS!n"); ...... } ...... /* 在啟動框架的目標層級中注冊新增模塊 */ LOS_MODULE_INIT(OsSampleModInit, LOS_INIT_LEVEL_KMOD_EXTENDED);
?
驗證
main core booting up... OsSampleModInit SUCCESS! releasing 1 secondary cores cpu 1 entering scheduler cpu 0 entering scheduler
根據(jù)上述系統(tǒng)啟動階段的打印可知,內(nèi)核在啟動時進行了該注冊模塊的初始化函數(shù)調(diào)用,完成該模塊的初始化操作。
系統(tǒng)啟動完畢后進入內(nèi)核態(tài) shell,能夠運行 task 命令能夠正常顯示即可。
OHOS # help ***shell commands:* arp cat cd chgrp chmod chown cp cpup date dhclient dmesg dns format free help hwi ifconfig ipdebug kill log ls lsfd memcheck mkdir mount netstat oom partinfo partition ping ping6 pmm pwd reset rm rmdir sem shm stack statfs su swtmr sync systeminfo task telnet touch umount uname v2p virstatfs vmm watch writeproc
為了能讓大家更好的學習鴻蒙 (OpenHarmony) 開發(fā)技術(shù),這邊特意整理了《鴻蒙 (OpenHarmony)開發(fā)學習手冊》,希望對大家有所幫助:
《鴻蒙(Harmony OS)開發(fā)學習手冊》
入門必看:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.應用開發(fā)導讀(ArKTS)
2.……
HarmonyOS概念:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.系統(tǒng)定義
2.技術(shù)框架
3.技術(shù)特性
4.系統(tǒng)安全
快速入門:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.基本概念
2.構(gòu)建第一個ArkTS應用
3.……
開發(fā)基礎知識:https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.應用基礎知識
2.配置文件
3.應用數(shù)據(jù)管理
4.應用安全管理
5.應用隱私保護
6.三方應用調(diào)用管控機制
7.資源分類與訪問
8.學習ArkTS
9…
基于ArkTS 開發(fā):https://docs.qq.com/doc/DUk51cHZJaUpmSlhH
1.Ability開發(fā)
2.UI開發(fā)
3.公共事件與通知
4.窗口管理
5.媒體
6.安全
7.網(wǎng)絡與鏈接
8.電話服務
9.數(shù)據(jù)管理
10.后臺任務(Background Task)管理
11.設備管理
12.設備使用信息統(tǒng)計
13.DFX
14.國際化開發(fā)
15.折疊屏系列
16………
審核編輯 黃宇
-
芯片
+關注
關注
459文章
51988瀏覽量
434223 -
內(nèi)核
+關注
關注
3文章
1405瀏覽量
40994 -
Liteos
+關注
關注
10文章
33瀏覽量
47919 -
鴻蒙
+關注
關注
57文章
2474瀏覽量
43680 -
HarmonyOS
+關注
關注
79文章
2006瀏覽量
31920
發(fā)布評論請先 登錄
淺談OpenHarmony LiteOS-A內(nèi)核之基礎硬件——中斷控制器GIC400
【精品連載】韋東山老師帶你上手鴻蒙內(nèi)核Liteos-a開發(fā)
鴻蒙介紹--韋東山老師帶你上手鴻蒙內(nèi)核Liteos-a開發(fā)
基于liteos-a,能方便地開發(fā)GUI程序嗎?
韋東山鴻蒙系統(tǒng)移植課程:給IMX6ULL編譯Liteos-a
鴻蒙是一套龐大的體系,底層支持很多內(nèi)核吧?liteos-m, liteos-a,linux 都支持?
【HarmonyOS】鴻蒙Liteos-a內(nèi)核移植手冊(PDF下載)
鴻蒙liteos-a如何啟動第一個用戶進程init_lite
LiteOS-A內(nèi)核
OpenHarmony LiteOS-A內(nèi)核介紹
Liteos-a是什么?為什么還要開發(fā)Liteos-a呢?
在100ASK_IMX6ULL上移植Liteos-a
VectorCAST/QA如何在LiteOS-A內(nèi)核上實現(xiàn)系統(tǒng)白盒測試

鴻蒙liteos-a系統(tǒng)入門實戰(zhàn)直播亮點

Liteos-a內(nèi)核工作隊列的實現(xiàn)原理分析及經(jīng)驗總結(jié)——芯海科技PPG芯片CS1262接入OpenHarmony實戰(zhàn)

評論