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