怎么能學好嵌入式Linux ?
關(guān)注、星標公眾號,直達精彩內(nèi)容
ID:技術(shù)讓夢想更偉大
整理:李肖遙
俗話說萬事開頭難,剛開始的時候,你是否根本就不知如何開始,上網(wǎng)查資料被一堆堆新名詞搞的找不到北,去圖書館看書也是找不到方向?又是arm,又是linux,又是uboot頭都大了,不知道自己究竟從哪里開始?
下面就跟著我學習設(shè)計嵌入式工程師的修煉日記吧!
簡單說,從arm基礎(chǔ)知識到裸機編程,從uCOSII到linux,從linux基礎(chǔ)的命令到shell編程,從u-boot到文件系統(tǒng),最后到現(xiàn)在的linux驅(qū)動程序。從簡單到復雜,從基礎(chǔ)到高級基本是按照這個來的。
(1) arm處理器基礎(chǔ)知識,工作模式,寄存器,中斷與異常,尋址方式,匯編指令集
(2) 熟悉ADS集成開發(fā)環(huán)境為裸機程序開發(fā)做準備
(3)裸機程序開發(fā):LED,串口,LCD,觸摸屏,NANDFLASH,IIC,IIS,DMA等
這一階段的學習主要是熟悉嵌入式的硬件,為以后的linux驅(qū)動打基礎(chǔ)。因為嵌入式主打處理器架構(gòu)就是arm,所以針對arm來學習。首先學習基礎(chǔ)知識,然后通過在開發(fā)板上的練習來掌握。這一階段所用的資料主要有:
(2) 《嵌入式linux應(yīng)用開發(fā)完全手冊》 這本書主要看介紹s3c2410接口模塊的部分,實驗裸機的時候需要硬件的知識。
這一階段的學習主要是熟悉linux,會安裝linux,了解Linux的基礎(chǔ)知識,會簡單的操作。剛開始安裝linux還是在虛擬機上安裝比較好,安裝開發(fā)板推薦的Fedora9,按照開發(fā)板配套的說明一步一步的安裝,然后在上面練習各種命令。
這一階段的學習主要是了解linux應(yīng)用程序的編寫調(diào)試,也都是基礎(chǔ)知識,主要目的還是熟悉Linux。熟悉其中應(yīng)用程序有關(guān)的一些概念,為以后打基礎(chǔ)。這一階段主要看了《嵌入式Linux應(yīng)用程序開發(fā)標準教程》,這本書對linux上應(yīng)用程序編寫講的很詳細,而且不是很難,那本最經(jīng)典的《UNIX高級環(huán)境編程》講的比較深入,剛開始看有點難,萬事開頭難還是從簡單的開始。學習應(yīng)用編程以后也不一定搞應(yīng)用,從事嵌入式linux行業(yè)的人,這是必須的基本技能。
這一階段的學習主要是了解嵌入式實時操作系統(tǒng)的基礎(chǔ),因為uCOSII是開源的,可以研究他的代碼。對操作系統(tǒng)的任務(wù)調(diào)度以及資源管理有直觀的認識。并且閱讀他的源碼能夠提高自己的編程能力,規(guī)范自己的編程習慣。雖然提供了uCOSII的移植版本,但是自己實際移植一次能夠有更深刻的認識。
bootloader是一個linux嵌入式系統(tǒng)的不可缺少的部分。這一階段的學習主要是了解bootloader的作用,以及通用bootloader---u-boot的知識,剛開始學會用u-boot的各種命令。然后分析u-boot的啟動流程和Makefile以及u-boot加載內(nèi)核過程。然后按照別人的步驟一步一步的移植內(nèi)核,多做幾遍以熟悉這個過程。然后在熟悉整個u-boot的基礎(chǔ)上,獨自完成u-boot的移植,并添加自己修改。這一階段主要參考資料就是光盤自帶的u-boot移植參考手冊和一些網(wǎng)絡(luò)上的文章。個人感覺u-boot移植這方面的網(wǎng)絡(luò)資源相當?shù)呢S富。
文件系統(tǒng)也是一個linux嵌入式系統(tǒng)不可缺少的部分,這一階段的學習主要是熟悉根文件系統(tǒng)的作用以及基礎(chǔ)知識,并且自己構(gòu)建自己的根文件系統(tǒng)。這一階段所看的書有《構(gòu)建嵌入式linux系統(tǒng)》,這本書詳細講解了嵌入式linux的所有元素,包括文件系統(tǒng)。這里主要看文件系統(tǒng)這塊。我還參考了網(wǎng)上的一些文章。這里首先要熟悉基本的一些Linux文件系統(tǒng),然后學習busybox的使用以及l(fā)inux的啟動過程,最后參考別人的一步一步來構(gòu)建自己的文件系統(tǒng)。
嵌入式圖形界面GUI作為嵌入式上層系統(tǒng)的東西也是需要了解的,這里我只學習了minigui,因為QT是需要C++的知識,而我沒有學過C++,所以只看了minigui的相關(guān)知識。這個階段的目的主要是熟悉一下嵌入式圖形接界面的開發(fā)流程,因為以后也不打算搞應(yīng)用。
(1)看完《LINUX設(shè)備驅(qū)動程序》除了網(wǎng)絡(luò)驅(qū)動程序,tty驅(qū)動程序,塊驅(qū)動程序這幾章不看,其他的都要看完。
這一階段的目的就是為了linux驅(qū)動打基礎(chǔ),《LINUX設(shè)備驅(qū)動程序》(第三版)也就是大家所說的ldd3,是最經(jīng)典的一本講linux驅(qū)動的書,一定要看而且多看幾遍。第一次看很難看進去,感覺講的晦澀難懂。但是多看幾遍就會由豁然開朗的感覺??赐炅藭?,然后就是實驗書中的例子。
這一階段的學習主要是掌握實際的簡單的驅(qū)動程序的實現(xiàn)與ldd3中的差別,并且分析一些linux子系統(tǒng)。通過這一階段的學習,能夠?qū)inux驅(qū)動程序有更深入的認識。并且鍛煉自己閱讀海量代碼的能力。這一階段主要工作就是看代碼,實驗,看代碼,實驗,通過現(xiàn)象學習知識。
??

掃描下方微信,加作者微信進技術(shù)交流群,請先自我介紹喔。
嵌入式編程專輯 Linux 學習專輯 C/C++編程專輯 Qt進階學習專輯 關(guān)注微信公眾號『技術(shù)讓夢想更偉大』,后臺回復“m”查看更多內(nèi)容。 長按前往圖中包含的公眾號關(guān)注
評論
圖片
表情
