/**
Linux內核源碼目錄結構
Linux內核源碼采用樹形結構。功能相關的文件放到不同的子目錄下面,使程序更具有可讀行。
使用Source Insight打開源碼,如下圖所示,可以看到源碼是樹形結構。
下面我們來介紹每一個目錄的作用。
arch目錄是平台目錄。處理器原廠提供一套Linux內核的源碼,那么在這個目錄下都有一套針對具體處理器CPU的子目錄。每個CPU的子目錄,又進一步分解為boot,mm,kernel等子目錄,分別控制系統引導,內存管理,系統調用,動態調頻,主頻率設置部分等。
在arch目錄中有關鍵的平台文件。任何一款支持Linux的處理器,都有一部分內核代碼是針對特定的處理器來提供的,具體的實現就是通過平台文件。
迅為4412的平台文件,是arch→arm→mach-exynos→mach-itop4412.c。
arch→arm→boot目錄,默認編譯生成的內核鏡像是在這個目錄下。
在arch→arm→kernel目錄中,有針對具體CPU處理器的代碼,有相關內核特性實現方式,如信號處理等。這一部分當然是芯片廠商做好了,4412的這部分就是三星已經做好的部分。
在arch→arm→lib目錄中,有一些和硬件相關庫函數,后面學習驅動的時候會使用到。
在arch→arm→tools目錄中,包含了生成鏡像的工具。
如下圖所示。
在binary目錄中,有一些無源碼的驅動以二進制放到該文件夾,例如一些測試版本或者不願意公布源碼,都可以將二進制文件放到這個目錄中。
在drivers目錄中,就是需要重點學習的部分,后面的實驗都是圍繞這一步進行的。
在include目錄中,通用的Linux頭文件都在該文件下。
如下圖所示,部分目錄如下。下面的這些目錄,幾乎不需要我們去動其中任何一個文件。
如下圖所示,有內核編程的范例,實現安全性的代碼,聲卡設備驅動等
還有內核裁減配置工具目錄tools,這一部分實現的功能是將.c編譯成目標文件,連接合並成可運行的內核鏡像文件等。提供給大家的內核源碼一百多M,最后編譯成的zImage只有不到5M,這都是依靠這個工具來實現的,后面會有針對性的實驗來教大家如何使用編譯工具。