跟濤哥一起學嵌入式15:你為什麼看不懂Linux內核驅動源碼?
學習嵌入式Linux驅動開發,最核心的技能就是能夠編寫Linux內核驅動、深入理解Linux內核。而做到這一步的基礎,就是你要看得懂Linux內核源碼,了解其基本的框架和具體實現,了解其內核API的使用方法,然後才能根據自己的需求寫出高質量的內核驅動程序。
說易行難,很多新人、甚至工作1-2年的開發者剛接觸Linux內核時,別說寫了,看內核代碼可能都是一臉懵逼:明明是C語言,但是就是看不懂是什麼意思,除了根據函數名、函數參數、函數的返回值以及注釋,了解整個函數的基本功能外,一旦分析其細節,你會發現,寸步難行,每一行代碼似乎都深不可測,彷彿蘊含著極大的陷阱和能量,於是你翻書、百度、Google,一步一步地向前推進。Linux內核,好不誇張地說,就是由各種結構體、函數指針、鏈表、隊列堆徹而成的。所以在進軍Linux內核之前,你的C語言基礎一定要打牢固:什麼函數指針、指針函數、數組指針、指針數組、以及各種指針作為函數參數、返回值等等都要搞清楚,因為Linux內核中大量使用這些。這些都是基礎,現在犯迷糊,看內核更是暈。
除此之外,數據結構也是要掌握的,鏈表、隊列在Linux內核中大量使用,所以必須要掌握。像其它的一些非線性數據結構:比如樹、二叉樹、紅黑樹等,對於做底層驅動的開發者來說,接觸得很少,可以先不學,用到的時候再補也不遲。2)C語言的語法擴展這時候,我們就不能使用C語言的面向過程思維了,Linux內核的設計其實大量使用了面向對象思想、設計模式。因此,我們要學會用面向對象的思維去分析Linux內核,分析各個模塊的復用,這樣就很方便的在腦海中搭建出系統的框架和層次了。然後再使用面向過程思維去分析具體的功能實現、具體細節,多花點時間和精力,相信你會有不一樣的收穫的。
------------------------------廣告分界線,請根據需要選擇閱讀-----------------------------
《C語言嵌入式linux高級編程》視頻教程,主要針對很多嵌入式學員來自不同專業、知識架構和體系欠缺這一背景,著重講解嵌入式開發中需要的理論知識和必備技能:
- 計算機系統結構與原理
- ARM結構與彙編語言編程
- 程序的編譯、鏈接和運行原理
- 堆棧內存管理、堆棧溢出攻擊原理、內存泄露
- Linux內核中的GNU C擴展語法
- C語言指針深入詳解
- 嵌入式中常用的數據結構
- Linux內核中的面向對象思想
- C語言的模塊化編程
- CPU和操作系統入門
這是一條全新的嵌入式C語言進階路線,獨家錄製,網上獨此一家!一線晶元驅動開發工程師耗時一年精心打造!無論是專業角度、實用性、還是深度廣度上,都作了很大的改進和提升。以含金量和專業深度提高你的C語言理論基礎和編程技能。
無論您是嵌入式初學者,還是工作1~3年的職場新兵,學習完本課程,可以彌補嵌入式開發所需要的專業壁壘和核心理論短板,為成為一個嵌入式高手奠定深厚的內功基礎。
QQ群:475504428 微信公眾號:宅學部落(armlinuxfun)
推薦閱讀: