內核、驅動、根文件系統 - 談談我的學習工作經歷,自學linux去中興上班
2014年12月01日 11:17 來源:電子發燒友論壇 作者:佚名 我要評論(0)
二、內核:
想速成的人,先跨過內核的學習,直接學習怎么寫驅動。
想成為高手,內核必須深刻了解。注意,我說的是了解,我沒奢望去寫出一個內核。
要對里面的調度機制、內存管理機制、文件管理機制等等有所了解。
推薦兩本書:
1. 通讀《linux內核完全注釋》,請看薄的那本(浮燥的社會講求速度, 呵),
2. 選讀《Linux內核情景分析》,想了解哪一塊就讀哪一節
三、驅動:
驅動包含兩部分:硬件本身的操作、驅動程序的框架。又是硬件,還是要看得懂原理圖、讀得懂芯片手冊,多練吧。說到驅動框架,有一些書介紹一下。LDD3,即《Linux設備驅動》,老外寫的那本,里面介紹了不少概念,值得一讀。但是,它的作用也就限于介紹概念了。我基本上是入門之前用它來熟悉一下概念,入門后就扔掉了。驅動方面比較全的介紹,應該是宋寶華的《linux設備驅動開發詳解》了,老實說我只看過目錄,有不少人說好,這里推薦一下。要想深入了解某一塊,《Linux內核情景分析》絕對是超5星級推薦。你別指望把它讀完,1800多頁,上下兩冊呢。我是某一塊不清楚時,就去翻一下它。任何一部分,這書都可以講上2、3百頁,非常詳細。并且是以某個目標來帶你分析內核源碼。它以linux 2.4為例,但是原理相通,同樣適用于其它版本的linux。還有沒有其他介紹?呵呵,當然有了,韋東山Linux視頻第2期。《嵌入式Linux應用開發完全手冊》里對驅動講得不多,不夠深入。
四、根文件系統:
大家有沒有想過這2個問題:
1. 對于Linux做出來的產品,有些用作監控、有些做手機、有些做平板。那么內核啟動后,掛載根文件系統后,應該啟動哪一個應用程序呢?答:內核不知道也不管應該啟動哪一個用戶程序。它只啟動init這一個應用程序,它對應/sbin/init。顯然,這個應用程序就要讀取配置文件,根據配置文件去啟動用戶程序(監控、手冊界面、平板界面等等),這個問題提示我們,文件系統的內容是有一些約定的,比如要有/sbin/init,要有配置文件
2. 你寫的hello,world程序,有沒有想過里面用到的printf是誰實現的?答:這個函數不是你實現的,是庫函數實現的。它運行時,得找到庫。這個問題提示我們,文件系統里還要有庫。簡單的自問自答到這里,要想深入了解,可以看一下busybox的init.c,就可以知道init進程做的事情了。當然,也可以看《嵌入式Linux應用開發完全手冊》里構建根文件系統那章。
說一下我的學習經歷吧。
1. 我在學校時讀的是物理電子專業,其實課程里沒有教怎么設計電路,只是教了些電子電路方面的知識。PCB的設計是在實驗室里自學的,只設計過2層板,現在忘記得差不多了。但是保留了看原理圖、看芯片手冊的能力。
2. 選修了軟件學位,對軟件設計挺感興趣,但是也只是學了C語言、數據庫而已。憑著興趣做了不少競賽題。沒能力去參加競賽,但是把C語言練得很扎實。
3. 在實驗室、在第1家公司,就是設計些簡單的PCI卡,寫一下windows的驅動程序
4. 在第2家公司,用51單片機做車載電話,開始走上純軟件的道路。
5. 開始感到單片機的不足,辭職半年閉門學Linux,從red hat怎么操作開始。步驟就是先看《ARM體系架構與編程》,再自己寫裸板程序操作硬件,接著到分析u-boot。同時看《linux內核完全注釋》,對LINUX框架有所了解。在寫裸板時,建議各位加強對中斷的理解,內核就是用中斷來完成各種功能的。
6. 分析完u-boot,就開始進行簡單的驅動編程了,這時候,能力還很弱。
7. 開始去中興上班,工作2年,編寫各類驅動、解決各類問題(驅動問題、幫助定位應用問題),能力得到煅煉。
總結一下:
1. 硬件方面的書: 微機原理、數字電路,高校里的教材。畢業多年,忘名了。
2. Linux方面的書:
《ARM體系架構與編程》
《嵌入式Linux應用開發完全手冊》
《Linux設備驅動》,老外寫的那本
《linux設備驅動開發詳解》
《linux內核完全注釋》
《Linux內核情景分析》
本文導航
- 第 1 頁:談談我的學習工作經歷,自學linux去中興上班
- 第 2 頁:內核、驅動、根文件系統
上周熱點文章排行榜
上周資料下載排行榜
論壇熱帖
熱評
- IR將功率半導體觸角伸往消費市場
- 多功能算術/邏輯運算單元(ALU) ,什么是多功能
- 動態ip、靜態ip、pppoe撥號的區別
- ARM與MIPS的比較
- ThunderBolt端口驅動及NET改WAP方法
- ds18b20中文資料詳解
- 滴滴人臉識別怎么破解
- 超級計算機榜單重新排名 中國天河二號已淪為世界第
- 電阻色環表_色環電阻識別方法
- iphone6概念機圖片曝光_iphone6上市時
博文
帖子
- 【書籍評測活動NO.51】具身智能機器人系統 | 了解AI的下一個浪潮! ElecFans小喇叭
- 請教關于CS1239低側采樣如何獲得使用更高的Gain? jf_94221193
- 高頻條件下的耦合線圈出現負值的原因是什么 jf_42363055
- 請問如何關閉獨立看門狗 jf_39582415
- ads1291雙電源供電時,Thermal Pad接AVSS嗎? ggfx
- 【米爾-Xilinx XC7A100T FPGA開發板試用】+03.SFP光口測試(zmj) 卿小小_9e6
- DAC7621的reference性能精度,可以使用外部輸入ref嗎? 萬物死
- 【「HarmonyOS NEXT啟程:零基礎構建純血鴻蒙應用」閱讀體驗】+1-7章有感 夜孤影
- DIY了一臺無人機,用全志T113芯片 文小二
- 電子產品結構與導熱材料解決方案 jf_86221244
用戶評論
查看全部 條評論
查看全部 條評論>>