天天看點

Linux系統添加核心,一個linux系統裡頭能有多個kernel嗎?如果可以應該怎麼添加呢?...

可以。

添加思路:cpu core初始化,記憶體管理子系統(mmu),硬體時鐘系統,早期調試列印機制,異常中斷子系統,時間子系統(timer),序列槽驅動。

具體方式:

1 cpu core初始化

cpu core的初始化主要指cpu的工作模式,通用寄存器初始化,cache初始化,異常入口初始化,mmu初始化等。也就是cpu core内部各個單元子產品的初始化。

2 記憶體管理子系統

kernel是運作在動态存儲器(DRAM DDR),首先保證動态存儲器的穩定運作,動态存儲器的初始化一般是放在bootloader中,或者在我們的調試工具腳本中去配置DDR參數,實作DDR的穩定讀寫運作。

3 硬體時鐘系統

最小的soc片上系統應該有CPU,時鐘,複位電路和一塊存儲器構成,缺一不可。

4 早期調試列印機制

在dram和寄存器讀寫正常後,接下來首要任務是實作kernel早期的調試列印,這是調試kernel所必須的。

5 異常 中斷子系統

timer和uart要正常工作,異常(ppc核内有timer,作為一種單獨的異常來處理) 中斷是必須要正常工作起來。

6 時間子系統

kernel下時間子系統實作計時和定時功能,主要是根據一個外部timer或者核内timer(PPC提供核内timer)來實作。

7 序列槽驅動

最後實作序列槽驅動就完成了移植kernel的最後一步了。序列槽驅動實作這裡不細說了。

取消

評論