在linux中,核心的移植指的是將程式碼從一種硬體平台轉移到另一種硬體平台上運行;linux核心的移植包括三個層次,分別是體系結構層級的移植、SOC級別的移植和主機板級別的移植。
本教學操作環境:linux7.3系統、Dell G3電腦。
所謂移植就是把程式碼從一個執行環境轉移到另一個執行環境。對於核心移植來說,主要是從一種硬體平台轉移到另一種硬體平台上運行。
在一個目標板上Linux核心的移植包含3個層次,分別為體系結構層級的移植、SoC層級的移植和主機板層級的移植。
體系結構層級的移植是指在不同體系結構平台上Linux核心的移植,例如,在ARM、MIPS、PPC等不同體系結構上分別都要對每個體系結構進行特定的移植工作。一個新的體系結構出現就需要進行這個層次上的移植。
SoC等級的移植是指在特定的SoC處理器平台上Linux核心的移植,例如,ARM920T IP核心的兩個處理器S3C2410和AT91RM9200等平台都分別要進行SoC特定的移植工作。
主機板層級的移植是指在特定的目標主機板上Linux核心的移植,例如,在FS2410目標板上,需要進行主機板特定的移植工作。
在這裡討論主機板層級的移植,主要是添加開發板初始化和驅動程式的程式碼。這部分程式碼大部分是與體系結構相關的,在arch目錄下依照不同的體系結構管理。
Linux 2.6核心已經支援S3C2410處理器的多種硬體板,例如,SMDK2410、Simtec-BAST、IPAQ-H1940、Thorcom-VR1000等。我們可以參考SMDK2410參考板來移植開發板的核心。
S3C2410屬於系統單晶片,處理器晶片具備串列埠、LCD等外圍介面的控制器。這樣,參考板上的設備驅動程式多數可以直接使用。但並不是所有的外部設備都相同,不同的開發板可以使用不同的SDRAM、Flash、乙太網路介面晶片等。這就需要根據硬體修改或開發驅動程式。
例如,串列埠驅動程式是典型的裝置驅動程式之一,這個驅動程式幾乎不需要任何改變。然而,如果用2.4核心的配置使用方式,是不能得到串口控制台資訊的。在2.6的核心中,串列裝置在/dev目錄下對應的裝置節點為/dev/ttySAC0、/dev/ttySAC1等。所以,再使用過去的串列設備ttyS0,就得不到控制台列印資訊了。現在可以很簡單地解決這個問題,把核心命令列參數的控制台設定修改為console = ttySAC0,115200。
在核心已經支援S3C2410處理器以後,基本上無須改動程式碼就可以讓核心運作起來。但是,在有些情況下,我們必須針對不同的裝置進行驅動級的移植,至少硬體位址和中斷號碼可能會不同。例如,有時需要移植網路晶片和Nand Flash晶片等周邊的驅動程式。
相關推薦:《Linux影片教學》
以上是什麼是linux核心的移植的詳細內容。更多資訊請關注PHP中文網其他相關文章!