內(nèi)核、驅(qū)動、根文件系統(tǒng) - 談談我的學習工作經(jīng)歷,自學linux去中興上班

2014年12月01日 11:17 來源:電子發(fā)燒友論壇 作者:佚名 我要評論(0)

標簽:電子工程師(94930)Linux(205936)


  二、內(nèi)核:

  想速成的人,先跨過內(nèi)核的學習,直接學習怎么寫驅(qū)動。

  想成為高手,內(nèi)核必須深刻了解。注意,我說的是了解,我沒奢望去寫出一個內(nèi)核。

  要對里面的調(diào)度機制、內(nèi)存管理機制、文件管理機制等等有所了解。

  推薦兩本書:

  1. 通讀《linux內(nèi)核完全注釋》,請看薄的那本(浮燥的社會講求速度, 呵),

  2. 選讀《Linux內(nèi)核情景分析》,想了解哪一塊就讀哪一節(jié)

  三、驅(qū)動:

  驅(qū)動包含兩部分:硬件本身的操作、驅(qū)動程序的框架。又是硬件,還是要看得懂原理圖、讀得懂芯片手冊,多練吧。說到驅(qū)動框架,有一些書介紹一下。LDD3,即《Linux設備驅(qū)動》,老外寫的那本,里面介紹了不少概念,值得一讀。但是,它的作用也就限于介紹概念了。我基本上是入門之前用它來熟悉一下概念,入門后就扔掉了。驅(qū)動方面比較全的介紹,應該是宋寶華的《linux設備驅(qū)動開發(fā)詳解》了,老實說我只看過目錄,有不少人說好,這里推薦一下。要想深入了解某一塊,《Linux內(nèi)核情景分析》絕對是超5星級推薦。你別指望把它讀完,1800多頁,上下兩冊呢。我是某一塊不清楚時,就去翻一下它。任何一部分,這書都可以講上2、3百頁,非常詳細。并且是以某個目標來帶你分析內(nèi)核源碼。它以linux 2.4為例,但是原理相通,同樣適用于其它版本的linux。還有沒有其他介紹?呵呵,當然有了,韋東山Linux視頻第2期?!肚度胧絃inux應用開發(fā)完全手冊》里對驅(qū)動講得不多,不夠深入。

  四、根文件系統(tǒng):

  大家有沒有想過這2個問題:

  1. 對于Linux做出來的產(chǎn)品,有些用作監(jiān)控、有些做手機、有些做平板。那么內(nèi)核啟動后,掛載根文件系統(tǒng)后,應該啟動哪一個應用程序呢?答:內(nèi)核不知道也不管應該啟動哪一個用戶程序。它只啟動init這一個應用程序,它對應/sbin/init。顯然,這個應用程序就要讀取配置文件,根據(jù)配置文件去啟動用戶程序(監(jiān)控、手冊界面、平板界面等等),這個問題提示我們,文件系統(tǒng)的內(nèi)容是有一些約定的,比如要有/sbin/init,要有配置文件

  2. 你寫的hello,world程序,有沒有想過里面用到的printf是誰實現(xiàn)的?答:這個函數(shù)不是你實現(xiàn)的,是庫函數(shù)實現(xiàn)的。它運行時,得找到庫。這個問題提示我們,文件系統(tǒng)里還要有庫。簡單的自問自答到這里,要想深入了解,可以看一下busybox的init.c,就可以知道init進程做的事情了。當然,也可以看《嵌入式Linux應用開發(fā)完全手冊》里構建根文件系統(tǒng)那章。

  說一下我的學習經(jīng)歷吧。

  1. 我在學校時讀的是物理電子專業(yè),其實課程里沒有教怎么設計電路,只是教了些電子電路方面的知識。PCB的設計是在實驗室里自學的,只設計過2層板,現(xiàn)在忘記得差不多了。但是保留了看原理圖、看芯片手冊的能力。

  2. 選修了軟件學位,對軟件設計挺感興趣,但是也只是學了C語言、數(shù)據(jù)庫而已。憑著興趣做了不少競賽題。沒能力去參加競賽,但是把C語言練得很扎實。

  3. 在實驗室、在第1家公司,就是設計些簡單的PCI卡,寫一下windows的驅(qū)動程序

  4. 在第2家公司,用51單片機做車載電話,開始走上純軟件的道路。

  5. 開始感到單片機的不足,辭職半年閉門學Linux,從red hat怎么操作開始。步驟就是先看《ARM體系架構與編程》,再自己寫裸板程序操作硬件,接著到分析u-boot。同時看《linux內(nèi)核完全注釋》,對LINUX框架有所了解。在寫裸板時,建議各位加強對中斷的理解,內(nèi)核就是用中斷來完成各種功能的。

  6. 分析完u-boot,就開始進行簡單的驅(qū)動編程了,這時候,能力還很弱。

  7. 開始去中興上班,工作2年,編寫各類驅(qū)動、解決各類問題(驅(qū)動問題、幫助定位應用問題),能力得到煅煉。

  總結一下:

  1. 硬件方面的書: 微機原理、數(shù)字電路,高校里的教材。畢業(yè)多年,忘名了。

  2. Linux方面的書:

  《ARM體系架構與編程》

  《嵌入式Linux應用開發(fā)完全手冊》

  《Linux設備驅(qū)動》,老外寫的那本

  《linux設備驅(qū)動開發(fā)詳解》

  《linux內(nèi)核完全注釋》

  《Linux內(nèi)核情景分析》

上一頁12全文

本文導航