內(nèi)核、驅(qū)動、根文件系統(tǒng) - 談談我的學習工作經(jīng)歷,自學linux去中興上班
2014年12月01日 11:17 來源:電子發(fā)燒友論壇 作者:佚名 我要評論(0)
二、內(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ā)完全手冊》里構(gòu)建根文件系統(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體系架構(gòu)與編程》,再自己寫裸板程序操作硬件,接著到分析u-boot。同時看《linux內(nèi)核完全注釋》,對LINUX框架有所了解。在寫裸板時,建議各位加強對中斷的理解,內(nèi)核就是用中斷來完成各種功能的。
6. 分析完u-boot,就開始進行簡單的驅(qū)動編程了,這時候,能力還很弱。
7. 開始去中興上班,工作2年,編寫各類驅(qū)動、解決各類問題(驅(qū)動問題、幫助定位應用問題),能力得到煅煉。
總結(jié)一下:
1. 硬件方面的書: 微機原理、數(shù)字電路,高校里的教材。畢業(yè)多年,忘名了。
2. Linux方面的書:
《ARM體系架構(gòu)與編程》
《嵌入式Linux應用開發(fā)完全手冊》
《Linux設備驅(qū)動》,老外寫的那本
《linux設備驅(qū)動開發(fā)詳解》
《linux內(nèi)核完全注釋》
《Linux內(nèi)核情景分析》
本文導航
- 第 1 頁:談談我的學習工作經(jīng)歷,自學linux去中興上班
- 第 2 頁:內(nèi)核、驅(qū)動、根文件系統(tǒng)
上周熱點文章排行榜
上周資料下載排行榜
論壇熱帖
熱評
- IR將功率半導體觸角伸往消費市場
- 多功能算術/邏輯運算單元(ALU) ,什么是多功能
- 動態(tài)ip、靜態(tài)ip、pppoe撥號的區(qū)別
- ARM與MIPS的比較
- ThunderBolt端口驅(qū)動及NET改WAP方法
- ds18b20中文資料詳解
- 滴滴人臉識別怎么破解
- 超級計算機榜單重新排名 中國天河二號已淪為世界第
- 電阻色環(huán)表_色環(huán)電阻識別方法
- iphone6概念機圖片曝光_iphone6上市時
博文
帖子
- 【書籍評測活動NO.51】具身智能機器人系統(tǒng) | 了解AI的下一個浪潮! ElecFans小喇叭
- 請教關于CS1239低側(cè)采樣如何獲得使用更高的Gain? jf_94221193
- 高頻條件下的耦合線圈出現(xiàn)負值的原因是什么 jf_42363055
- 請問如何關閉獨立看門狗 jf_39582415
- ads1291雙電源供電時,Thermal Pad接AVSS嗎? ggfx
- 【米爾-Xilinx XC7A100T FPGA開發(fā)板試用】+03.SFP光口測試(zmj) 卿小小_9e6
- DAC7621的reference性能精度,可以使用外部輸入ref嗎? 萬物死
- 【「HarmonyOS NEXT啟程:零基礎構(gòu)建純血鴻蒙應用」閱讀體驗】+1-7章有感 夜孤影
- DIY了一臺無人機,用全志T113芯片 文小二
- 電子產(chǎn)品結(jié)構(gòu)與導熱材料解決方案 jf_86221244
用戶評論
查看全部 條評論
查看全部 條評論>>