Linux設備驅動移植(四)——Linux內核移植
Linux內核的移植含義爲將Linux內核運行一個新的SoC芯片或新的電路板之上,其實質含義爲:建立Linux的板級支持包(BSP),BSP板級支持包的作用:1)爲內核提供必要的硬件支撐;2)屏蔽與板相關的硬件細節。
對於Arm,BSP的源碼位置:/arch/arm下的相關plat和mach文件下,如下:
plat-xxx
linux-2.6/arch/arm/
plat-omap/
plat-pxa/
plat-s3c/
plat-s3c24xx/
plat-s3c64xx/
plat-stmp3xxx/
mach-xxx
linux-2.6/arch/arm/
mach-s3c2400/
mach-s3c2410/
mach-s3c2412/
mach-s3c2440/
mach-s3c2442/
mach-s3c2443/
mach-s3c24a0/
mach-s3c6400/
mach-s3c6410/
所有的板文件都位於相關芯片的目錄下。
上述目錄中的代碼完成的主要工作如下:
1. 始終tick(Hz)的產生
2. 系統中斷控制的方法
3. GPIO、DMA、時鐘資源的統一管理
4. 靜態映射的IO內存
5. 設備的IO、中斷、DMA等資源封裝平臺數據
Linux驅動板級移植的原則:切忌直接修改現有電路板的代碼作爲自身電路板的代碼,正確的方法是新建自己的板文件,將本身的設備和資源填寫在新的板文件裏面。
除了SoC芯片級和板級Linux移植外,移植工作量最大的是體系結構相關的Linux移植,例如將Linux移植到以個全新的CPU體系機構,如TI的DSP芯片。相關工作還會涉及到內存管理、進程調度、異常和陷阱等。
參考文獻:
1. Linux設備驅動開發詳解 宋寶華著