嵌入式linux如何學習

2021-09-20 12:27:57 字數 4379 閱讀 1411

俗話說萬事開頭難(然後中間難,最後難?),剛開始的時候,你是否根本就不知如何開始,上網查資料被一堆堆新名詞搞的找不到北,去圖書館看書也是找不到方向?又是arm,又是linux,又是uboot頭都大了。不知道自己究竟從**開始?

嵌入式linux如何學習 

簡單說,從arm基礎知識到裸機程式設計,從ucosii到linux,從linux基礎的命令到shell程式設計,從u-boot到檔案系統,最後到現在的linux驅動程式。從簡單到複雜,從基礎到高階基本是按照這個來的。

第一階段:嵌入式硬體基礎以及裸機程式開發

1.知識點:

(1) arm處理器基礎知識,工作模式,暫存器,中斷與異常,定址方式,彙編指令集

(2) 熟悉ads整合開發環境為裸機程式開發做準備

(3) 裸機程式開發:led,串列埠,lcd,觸控螢幕,nandflash,iic,iis,dma等

2.過程以及目的:

這一階段的學習主要是熟悉嵌入式的硬體,為以後的linux驅動打基礎。因為嵌入式主打處理器架構就是arm,所以針對arm來學習。首先學習基礎知識,然後通過在開發板上的練習來掌握。這一階段所用的資料主要有:

(1) 《arm嵌入式基礎教程》 這本書主要看arm基礎的知識。這本書是講arm7的,但是arm的基礎的指令集以及模型是一樣的。

(2) 《嵌入式linux應用開發完全手冊》 這本書主要看介紹s3c2410介面模組的部分,實驗裸機的時候需要硬體的知識。

第二階段:linux基礎以及shell程式設計

1.知識點

(1) linux基礎知識

(2) linux安裝與使用

(3) linux常用命令

(4) vi使用

(5) 簡單shell程式設計

2.過程以及目的:

這一階段的學習主要是熟悉linux,會安裝linux,了解linux的基礎知識,會簡單的操作。剛開始安裝linux還是在虛擬機上安裝比較好,安裝開發板推薦的fedora9,按照開發板配套的說明一步一步的安裝,然後在上面練習各種命令。這一階段主要要看《鳥哥的linux私房菜基礎學習篇》,這個書有電子版,也不用全看,主要是看前面對linux基礎知識的描述,以及基本的命令。命令只是了解,那麼多記也記不下來,以後用時的再查閱。這一階段主要目的是對linux有乙個整體的了解,最起碼要知道基礎的一些概念,還有會一些基本的操作。

第三階段:linux應用程式基礎開發

1.知識點:

(1) gcc,gdb,make 基礎

(2) 檔案,時間程式設計

(3) 多程序,多執行緒程式設計

(4) 程序間通訊

2. 過程以及目的:

這一階段的學習主要是了解linux應用程式的編寫除錯,也都是基礎知識,主要目的還是熟悉linux。熟悉其中應用程式有關的一些概念,為以後打基礎。這一階段主要看了《嵌入式linux應用程式開發標準教程》,這本書對linux上應用程式編寫講的很詳細,而且不是很難,那本最經典的《unix高階環境程式設計》講的比較深入,剛開始看有點難,萬事開頭難還是從簡單的開始。學習應用程式設計以後也不一定搞應用,從事嵌入式linux行業的人,這是必須的基本技能。

第四階段:ucosii作業系統學習

1.知識點:

(1)嵌入式實時作業系統的概念以及基礎知識

(2)ucosii作業系統源**閱讀

(3)移植ucosii

(4)ucosii作業系統應用程式設計

2.過程以及目的:

這一階段的學習主要是了解嵌入式實時作業系統的基礎,因為ucosii是開源的,可以研究他的**。對作業系統的任務排程以及資源管理有直觀的認識。並且閱讀他的原始碼能夠提高自己的程式設計能力與雖說友規範自己的程式設計習慣。善之臂提供了ucosii的移植版本。但是自己實際移植一次能夠有更深刻的認識。這個作業系統比較簡單,所以應用程式的編寫就很重要,在上面實現幾個功能還是有助於對系統的理解。這一階段主要看的就是紹貝貝翻譯的ucosii作者所著的《嵌入式實時作業系統ucos-ii》,裡面對作業系統的原始碼有這詳細的分析。看透這本書後就會對ucosii有乙個深入的了解。這一階段的主要目的是了解作業系統的知識,比如任務排程,併發與競態。還有乙個目的就是鍛鍊自己的程式設計能力。因為如果看介紹作業系統原理的書會比較枯燥,我感覺閱讀乙個作業系統的原始碼比看一千本介紹原理的書來的實惠的多。

第五階段:bootloader學習

1.知識點:

(1)bootloader基礎知識

(2)u-boot基礎與命令

(3)u-boot移植

2.過程以及目的:

bootloader是乙個linux嵌入式系統的不可缺少的部分。這一階段的學習主要是了解bootloader的作用,以及通用bootloader---u-boot的知識,剛開始學會用u-boot的各種命令。然後分析u-boot的啟動流程和makefile以及u-boot載入核心過程。然後按照別人的步驟一步一步的移植核心,多做幾編以熟悉這個過程。然後在熟悉整個u-boot的基礎上,獨自完成u-boot的移植,並新增自己修改。這一階段主要參考資料就是光碟自帶的u-boot移植參考手冊和一些網路上的文章。個人感覺u-boot移植這方面的網路資源相當的豐富。

第六階段:檔案系統學習

1.知識點:

(1)linux檔案系統的種類與作用

(2)熟悉busybox的使用,以及linux系統啟動過程

(3)構建自己的根檔案系統

2.過程以及目的:

檔案系統也是乙個linux嵌入式系統不可缺少的部分,這一階段的學習主要是熟悉根檔案系統的作用以及基礎知識。並且自己構建自己的根檔案系統。這一階段所看的書有《構建嵌入式linux系統》,這本書詳細講解了嵌入式linux的所有元素,包括檔案系統.這裡主要看檔案系統這塊。我還參考了網上的一些文章。這裡首先要熟悉基本的一些linux檔案系統,然後學習busybox的使用以及linux的啟動過程,最後參考別人的一步一步來構建自己的檔案系統。

第七階段:嵌入式圖形介面gui

1.知識點:

(1)嵌入式圖形介面gui的種類與特點

(2)minigui 基礎知識

(3)minigui 移植與程式編寫

2.過程以及目的:

嵌入式圖形介面gui作為嵌入式上層系統的東西也是需要了解的,這裡我只學習了minigui,因為qt是需要c++的知識,而我沒有學過c++.所以只看了minigui的相關知識。這個階段的目的主要是熟悉一下嵌入式圖形接介面的開發流程,因為以後也不打算搞應用。只是熟悉一下嵌入式組成的一些方面。這裡只要將minigui移植到板子上能跑hello程式就可以了。其他的也不用深入了解。通過移植minigui對linux上執行的軟體以及函式庫,程式執行原理,編譯器都會有乙個新的認識。

第八階段:linux驅動程式基礎知識

1.知識點:

(1)看完《linux裝置驅動程式》除了網路驅動程式,tty驅動程式,塊驅動程式這幾章不看,其他的都要看完。

(2)實驗書中所有例程,要仔細分析結果,理解相關知識點。

(3)就算是例子,程式程式設計習慣一定要統一,文件一定要規範。

2.過程以及目的

這一階段的目的就是為了linux驅動打基礎,《linux裝置驅動程式》(第三版)也就是大家所說的ldd3,是最經典的一本講linux驅動的書,一定要看而且多看幾遍。第一次看很難看進去,感覺講的晦澀難懂。但是多看幾遍就會由豁然開朗的感覺。看完了書,然後就是實驗書中的例子。

第九階段:linux驅動實戰

1.  知識點:

(1)通過led驅動理解雜項字元裝置的註冊與實現,並掌握mini2440的io操作過程。

(2)通過button驅動程式掌握基本的中斷實現方法。

(3)掌握pwm驅動程式。

(4)通過觸控螢幕驅動程式掌握input裝置模型的實現。

(5)掌握adc驅動程式的設計

(6)掌握看門狗,rtc驅動程式的設計

(7)通過lcd驅動程式分析platform裝置模型的實現。

2.過程以及目的:

這一階段的學習主要是掌握實際的簡單的驅動程式的實現與ldd3中的差別,並且分析一些linux子系統。通過這一階段的學習,能夠對linux驅動程式有更深入的認識。並且鍛鍊自己閱讀海量**的能力。這一階段主要工作就是看**,實驗,看**,實驗,通過現象學習知識。

第十階段:深入理解linux核心與usb子系統的研究

前九個階段完成了,自己感覺嵌入式linux應該應該算是入門了。所以要開始計畫第十個階段了。這一階段基本上要確定自己未來的發展方向了。因為現在嵌入式系統的標準介面都有usb,所以學會usb的相關知識是很有競爭力的。搞驅動的人對核心應該有一定的了解,所以《深入理解linux核心》還是必須的。這一階段主要是學習usb協議,閱讀linux usb子系統全部的**,通過閱讀**加深對usb的理解,隨後就是熟悉各種usb類協議,編寫和移植usb驅動了。usb是我確定的方向,因為我想搞什麼東西都要專一,什麼都搞,什麼也搞不好。所以我決定學習usb。決定以後從事嵌入式有關usb方面的工作。這一階段的學習正在進行中,現在正在linux usb子系統浩瀚的**中漫遊。

如何學習嵌入式 嵌入式如何入門?

學習嵌入式,該學習什麼基本的知識呢?嵌入式如何入門?其次,應該對作業系統有所了解,這對你對硬體和軟體的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如程序 執行緒,系統如何來分配資源的,系統如何來管理硬體的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關係,多看看,結合以後的專案經驗...

如何學習嵌入式

對於嵌入式工作室的同學,最大的困難莫過於真正的找到自己的方向。嵌入式本身實在包含太多的東西。以下是我進工作室半年的一些總結 基於linux開發平台 希望對大家有所幫助。對於選擇嵌入式方向的同學,大部分原因應該是覺得嵌入式包含的東西比較廣闊。可以學到很多東西。然而太廣闊的內容不一定是一件好事。就單單基...

如何學習嵌入式

如何學習嵌入式 第一篇 先講一講需要掌握的基本技能。答 1 c語言是所有程式語言中的王者 微控制器 dsp 類似arm的種種晶元的程式設計都可以用c語言搞定 因此必須非常熟練的掌握,大學本科教學中的c語言是遠遠不夠的,有兩個非常重要的內容沒有講 檔案的操作 和 io的操作 其中 io的操作 是必須掌...