03.06 如何學習嵌入式?


本人研究生階段是控制工程,現在是硬件工程師,關於作者提問的如何學習嵌入式的問題,我想在回答前,先說一下什麼是嵌入式,嵌入式的概念是啥?嵌入式是一個很泛的概念,就是把自己特定需求的代碼,嵌入到系統的程序中,然後把生成的這整個軟件嵌入式到硬件平臺中,凡是與以上工作相關的開發,全部叫做嵌入式開發。比如寫自己特定需求的代碼,或者移植到系統中的設計過程,系統與自己代碼的完全結合,最終的代碼與硬件平臺的平滑兼容,凡是以上這些工作,都叫嵌入式開發。

接下來我將從一下幾個方面對嵌入式做一個詳細的介紹,主要包括:學習嵌入式必備知識、嵌入式工作做什麼、如何入門嵌入式、大學生如何規劃自己的四年,成為合格的嵌入式工程師。

學習嵌入式必備知識

1、C語言  

嵌入式Linux工程師的學習需要具備一定的C語言基礎,C語言是嵌入式領域最重要也是最主要的編程語言,通過大量編程實例重點理解C語言的基礎編程以及高級編程知識。包括:基本數據類型、數組、指針、結構體、鏈表、文件操作、隊列、棧等。  

2、Linux基礎  

Linux操作系統的概念、安裝方法,詳細瞭解Linux下的目錄結構、基本命令、編輯器VI ,編譯器GCC,調試器GDB和 Make 項目管理工具, Shell Makefile腳本編寫等知識,嵌入式開發環境的搭建。  

3、Linux系統編程  

重點學習標準I/O庫,Linux多任務編程中的多進程和多線程,以及進程間通信(pipe、FIFO、消息隊列、共享內存、signal、信號量等),同步與互斥對共享資源訪問控制等重要知識,主要提升對Linux應用開發的理解和代碼調試的能力。  

4、Linux網絡編程  

計算機網絡在嵌入式Linux系統應用開發過程中使用非常廣泛,通過Linux網絡發展、TCP/IP協議、socket編程、TCP網絡編程、UDP網絡編程、Web編程開發等方面入手,全面瞭解Linux網絡應用程序開發。重點學習網絡編程相關API,熟練掌握TCP協議服務器的編程方法和併發服務器的實現,瞭解HTTP協議及其實現方法,熟悉UDP廣播、多播的原理及編程方法,掌握混合C/S架構網絡通信系統的設計,熟悉HTML,Javascript等Web編程技術及實現方法。  

5、數據結構與算法  

數據結構及算法在嵌入式底層驅動、通信協議、及各種引擎開發中會得到大量應用,對其掌握的好壞直接影響程序的效率、簡潔及健壯性。此階段的學習要重點理解數據結構與算法的基礎內容,包括順序表、鏈表、隊列、棧、樹、圖、哈希表、各種查找排序算法等應用及其C語言實現過程。  

6、C++ 、QT  

C++是Linux應用開發主要語言之一,本階段重點掌握面向對象編程的基本思想以及C++的重要內容。圖形界面編程是嵌入式開發中非常重要的一個環節。由於QT具有跨平臺、面向對象、豐富API、支持2D/3D渲染、支持XML、多國語等強大功能,在嵌入式領域的GUI開發中得到了廣範的應用,在本階段通過基於QT圖形庫的學習使學員可以熟練編寫GUI程序,並移植QT應用程序到Cortex-A8平臺。包括IDE使用、QT部件及佈局管理器、信息與槽機制的應用、鼠標、鍵盤及繪圖事件處理及文件處理的應用。  

7、Cortex A8 、Linux 平臺開發  

通過基於ARM Cortex-A8處理s5pv210瞭解芯片手冊的基本閱讀技巧,掌握s5pv210系統資源、時鐘控制器、電源管理、異常中斷控制器、nand flash控制器等模塊,為底層平臺搭建做好準備。Linux平臺包括內核裁減、內核移植、交叉編譯、GNU工具使用、內核調試、Bootloader介紹、製作與原理分析、根文件系統製作以及向內核中添加自己的模塊,並在s5pv210實驗平臺上運行自己製作的Linux系統,集成部署Linux系統整個流程。同時瞭解Android操作系統開發流程。Android系統是基於Linux平臺的開源操作系統,該平臺由操作系統、中間件、用戶界面和應用軟件組成,是首個為移動終端打造的真正開放和完整的移動軟件,目前它的應用不再侷限於移動終端,還包括數據電視、機頂盒、PDA等消費類電子產品。  

8、驅動開發  

驅動程序設計是嵌入式Linux開發工作中重要的一部分,也是比較困難的一部分。本階段的學習要熟悉Linux的內核機制、驅動程序與用戶級應用程序的接口,掌握系統對設備的併發操作。熟悉所開發硬件的工作原理,具備ARM硬件接口的基礎知識,熟悉ARM Cortex-A8處理器s5pv210各資源、掌握Linux設備驅動原理框架,熟悉工程中常見Linux高級字符設備、塊設備、網絡設備、USB設備等驅動開發,在工作中能獨立勝任底層驅動開發。

嵌入式工作做什麼

嵌入式的工作是萬金油,這個也只是相對來說的,在大企業裡面,不可能讓一個人從事非常多的任務,這樣會導致一個問題,風險非常大,你承擔的任務越多,那麼風險就越大,所以大企業需要的是在某個領域非常專業的人才,從事的事情也是非常專業的,單一的。 單一的工作需要一個Leader來指揮,這就需要一個架構師,這個架構師需要指導你往哪裡天聰你的代碼,你拉了一車磚頭過來,不能隨便就亂扔吧,這就需要規則,需要架構師來制定這個規則,所以就出現了各種軟件總工。 大企業需要單一的某個領域的人才,但是小企業,需要的就不是了,他們需要比較全面的人才,他們沒有那麼多錢來請各個方面的人才,比如你要做一個手環,在小公司,那你就需要把驅動,應用,後臺通信,各個功能子模塊都一個人來完成。但是如果你在大公司,你可能就只負責手環的功耗部分,如果功耗有問題就來找你,其他的事情,就不是你負責的範圍。

如何入門嵌入式

問嵌入式怎麼入門,我第一想法和大多數人一樣,買塊開發板,跟著例程學習,按照步驟學習就行了。其實我自己在這個過程中也是走了不少的彎路,今天我把自己的一點小經驗分享給大家,希望大家在學習的過程中少走彎路。

(1)如果還是學生,有條件一定參加大學裡面的那些比賽,雖然技術含量不高,但配合軟硬件開發調試的經歷對於今後的發展很有助益,對於畢業後進入大公司也很有幫助。 (2)開發板一定要購買,且要選擇文檔資料齊全的(我即使現在手裡也有兩塊開發板,一塊單片機,一塊嵌入式的,就是在業餘學習新知識的時候驗證下)

(3)和”hello world”一樣,嵌入式是從點亮LED開始的,但後面最好不要按照模塊順序逐個學習的方式,而是先定需求,根據需求反過來學習模塊,這一步對於入門門檻是比較高的,但只要花費時間踏過去了,後面其實一片坦途。

如果不知道怎麼算需求,那我定個稍顯複雜的上位機-下位機需求:

1. 使用串口完成PC和設備通訊

2. 串口使用自定義協議,包含起始位,地址,數據,結束位,crc校驗

3. 通過串口能夠管理外部設備,如復位,蜂鳴器,設置DA輸出,獲取AD值,並在界面顯示

4. 支持串口在線升級,存儲使用外部FLASH,下載支持斷點重傳,版本檢驗以及完整性檢驗,可自定義檢驗方法,如累加和,crc等。

5. 上位機開發支持自定義串口協議的軟件,使用常用能夠實現圖形界面的語言和框架,如c#, c++或者python皆可以。

6. 如果有能力,支持上述自定義協議替換為FreeModbus協議,使用宏切換

7. 更進一步,將協議和上層應用部分與驅動獨立開來設計,利用宏使應用和協議部分支持多平臺的移植。

(4)多做總結,可以自己總結記錄文檔,也可以發表博客,不一定全部做完了才能發,你調試成功了AD,串口通訊協議調試成功,每一步都可以總結,分享自己開發心得和問題解決方式,會寫代碼調試可能只是把別人的拿來用,但能夠寫出來講解給別人,就一定是深入瞭解過的,這也是我學習過中留下的最大財富,保存至今,另外你可以看看我其它的回答,應該會對嵌入式有更深刻的認識。

大學生如何規劃自己的四年,成為合格的嵌入式工程師。

大一:數電 模電 C語言這些都是基礎,必不可少了。數電,驅動的邏輯與寄存器的入門;模電,電路圖以及外圍電路的基礎;C語言,這個沒啥好說了吧!

大二:數據結構 單片機數據結構這個沒學,後來自學的,Linux內核就是大量的數據結構之間的嵌套的派生;單片機,這個已經是嵌入式入門的開始了,可以開始編程設計控制完成一些基本的功能了。

大三:STM32 uCOS 操作系統原理這些東西我都已經是自學了,因為沒有課程,STM32這個玩意主要是他在市場應用領域廣泛,因為他性價比高嘛!外圍資源豐富,穩定,cortex M3的先驅者,學習的話,買個開發板,找個視頻看起來,同時自己也要擴展性的學習編碼。uCOS這個操作系統入門簡單,資料豐富,完全可以自學,同時通過書籍學習閱讀源碼,但是當你懂得怎麼用之後我建議你看RT Thread這款操作系統,非常Linux,強大的組件,只有你想不到,沒有你看不到的。操作系統 這個書,我看了一小小部分,不好評價,但是已經加入我的必看書單了。

大四:ubuntu POSIX接口應用 socket等此時,你已經真正進入嵌入式大門領域了,到了這步,或許不用我說你也有你自己的目標了。

以上為本人對此問題的回答,感謝留言、評論、轉發。更多電子電路、嵌入式、DSP、FPGA、電機控制等等相關內容請關注@弱電小工。感謝大家。


弱電小工


我來發表一下我的觀點。說下我的方法,適合在校大學生,大家有什麼見解歡迎糾正討論。


為什麼說適合在校大學生呢,因為在校大學生時間充裕。而參加工作的人,時間就是金錢,與其花費太長時間自學,還不如報個培訓班速成,但是培訓班的缺點可能就是基礎不牢(這個是個人見解,如有不同意見也可以看看我寫的自學經歷,根據自己的基礎跳過相應的步驟即可)。


我認為學習任何東西都是需要分模塊的。各個模塊熟悉了最後串起來(個人經驗)


提醒!!

提醒!!

提醒!!


玩嵌入式是有點費錢的。但是有舍有得,這個看你們自己把握了。



下面我說下我的方法

一、嵌入式分為幾個模塊(給自己學的勇氣)

二、起步學什麼(打基礎)

三、進階學什麼(給自己堅持下去的動力)


一、嵌入式分幾個模塊

嵌入式分為軟件、硬件(簡單吧)。軟件,其實可以分的更詳細,但是我們不需要分這麼詳細,後面學習的過程中你就明白了。


二 、起步學什麼


首先,你最好是計算機、電子、電氣、微電子、電子信息、通信、自動化、信息工程等相關專業。


可能有人會問為什麼必須這些專業。因為這些專業要麼編程能力強,要麼硬件基礎很熟悉,學習嵌入式是天然的優勢。比如自動化專業,他們學習過電路,模電,數電,電力電子這些課能讓你們有牢固的硬件基礎;還有C++,51單片機,微機讓你們有一定的軟件基礎。特別是51單片機,一旦學會了,後面學習嵌入式會更容易。


接下來仔細說說如何起步(基礎不勞,地動山搖)

第一步,你要懂得硬件的基本知識,這些硬件知識能幫你更好的理解51單片機的內部原理,硬件的管腳配置,引腳功能,更重要的是幫你理解放大電路,濾波電路等。(第三步推薦一本我認為比價好的關於51的書,裡面有51的內部原理)這些懂了,在用51C語言寫程序的時候就會發現so easy。至於為什麼先學51呢,因為大學大部分還是開設51的課,再者51容易理解,教學視頻豐富。


第二步,你要懂C/C++,c語言是學習嵌入式的靈魂。因為大學都開設有C課程,所以大家從C開始學會相對方便和節約時間。


第三步,有了相關基礎後開始看51單片機系列的書(見下圖),網上各種各樣的視頻多的很,對著網絡上的視頻學習,效果會更好。但是不能只學不練,買個開發板(當初我們是自己焊的),自己對著視頻練習。理論和實際結合效果最好。

當然需要用到相應的燒錄軟件,和編程軟件。我在這裡統一說一下。

燒錄軟件就用STC-ISP(好用),編程的用KEIL c51(keil3也能用),後面玩32了再用KEIL5。


三、進階學什麼


第一步、51單片機玩差不多半個學期就行啦,半個學期夠你掌握了,太長浪費時間。我們已經玩過51了,已經是大孩子了,哈哈哈。但是我們沒有玩過32位的,直接上arm是不行的。

所以我們要開始學習32,其實32比51 簡單的多,因為他們有豐富的庫,各種庫。市面上的教學資源非常非常的豐富,產品也比較成熟,某寶上面各種開發板(價格300以內),自己選一個買就行了。

其實你也可以跳過51學32,畢竟51太老了,太陳舊了,但是我覺得你學習51會幫你牢固知識,幫你形成寫程序的習慣等。

學習32 的週期,根據自己情況安排,一般一個到一個半學期。


第二步、現在咱們對32比較瞭解了,輪到學習嵌入式系統了,對,沒錯就是系統,是不是很興奮。。

想學習嵌入式系統Linux/WIN等 ,首先你需要買個arm學習版,在淘寶上面買的話,不太貴S3C2440,500+元。資料非常多,建議買arm9,因為ram11的資料太少,不適於自學。或者你們預算非常充足,可以考慮Cortex-A8/A9的開發板。

我相信你們學到這裡已經有了自己的想法和見解了。到這個過程的時候,知乎上的大佬回答的很詳細和網上的資源也非常豐富,多看看大家寫的共同學習。


最後,做下總結


看懂電路圖、看懂芯片手冊(更牛皮的要求是會自己繪製PCB板,會器件選型,會自己調試自己設計板子,直至可以量產)

有編寫,移植驅動的能力

懂內核的實現機制

懂C語言,C++等

下面列有詳細的要求,你們自己把握下。


等到找工作的時候,有嵌入式硬件,嵌入式軟件,嵌入式等,甚至可以觸類旁通,要看你們的學習水平了, 哈哈哈。


嵌入式硬件要求:

1、熟練使用Allegro Cadence等EDA工具進行硬件原理圖及PCB的設計,精通PCB佈線流程、具備多層板佈線經驗規範及信號完整性分析,熟悉至少一種高速通信接口,如PCIE、SRIO、10GBE等。

2、精通嵌入式處理器設計,具有大型CPU或者DSP的板級硬件設計調試經驗,例如P系列或者T系列PowerPC,C6678、C6655等DSP,以及FPGA設計經驗者等。

3、負責硬件產品的需求調研、方案設計,熟練使用各類電子儀器儀表進行測試。

。。。。。。


嵌入式軟件要求:

1、熟悉Linux操作系統內核,有Linux內核和驅動開發經驗。

2、精通C/C++開發語言,shell腳本。

3、精通C語言,能獨立編寫、調試硬件驅動程序和功能程序。

4、熟悉多線程的開發,精通ucosII嵌入式系統移植、驅動和應用開發。

。。。。。。


嵌入式硬件的工作:

嵌入式軟件的工作:

嵌入式的工作:

那你可以以“低端單片機-高端單片機-低端ARM-高端ARM”來學。我現在就是工作中用STM32,晚上回去自學ARM9。


究極體工程師


嵌入式系統由硬件+軟件構成。我們分別從硬件和軟件這兩個方面來講述一下學習要點。

一、我們來看硬件部分:

我們都有使用個人桌面電腦的經歷,而個人電腦系統屬於通用計算機系統。那嵌入式系統跟通用系統在硬件設計上有什麼區別呢?

1. 通用計算機系統

這裡所講的通用計算機系統,主要指的是intel x86系統。這種系統基本由intel cpu + 南北橋芯片組成。cpu通過南橋連接到低速外設,比如:實時時鐘、usb、以太網、wifi、藍牙等;通過北橋連接到高速外設,比如:內存,顯卡等。

這樣設計的通用系統性能非常強大。比如,我們可以在個人電腦上辦公、運行大型軟件、玩遊戲、運行photoshop等。

我們在使用個人PC的時候也從來不關注能耗的問題,反正我們玩電腦都要插電源的。

以上是通用系統(以個人電腦為例)的硬件架構和使用場景。

2. 嵌入式系統

跟通用計算機系統不同,嵌入式系統使用所謂的soc實現硬件的最大集成。具體來講就是把cpu和外設都封裝在同一個芯片上,也叫soc,或者叫片上系統。

這樣設計有什麼好處呢?最大的好處就是減小系統尺寸、節能省電。

尺寸問題好理解,因為很多嵌入式設備是手持的,甚至是可穿戴的。

為什麼要考慮節能省電的問題呢?因為嵌入式系統一般都無法做到像個人pc一樣持續供電。舉個例子:大疆的無人機,就是一個典型的嵌入式系統,你能想象讓它拖著一根電源線上天嗎?顯然不可能。所以,無人機系統必須要考慮電能的供給和消耗的問題。供給靠電池,消耗就是系統的事情了,所以低功耗的硬件才能工作更長的時間,而只有嵌入式專用系統才能做到低功耗。能耗和性能是嵌入式系統設計者需要不斷優化和改善的兩個指標。

另外有些外設和接口也是傳統的通用系統所不支持的,所以就需要嵌入式系統來做定製了。

二、再來看軟件部分:

嵌入式系統一般採用linux系統(也有wince,vxworks,ucos等),開發語言一般用c語言。因為c語言的效率高、性能優,這樣可以最大程度的節省能耗、提升性能。我們在PC上做開發的時候可以選擇java,c#等開發語言,這些語言在開發上給我們提供了很大的便利性,但是代碼的執行效率並不高。但是,在嵌入式系統上開發應用軟件需要考慮的最大的因素就是性能,所以最佳的開發語言是c語言。這也是嵌入式系統和通用系統在軟件開發上的的差異。

以上,我從硬件和軟件這兩個方面講述了嵌入式系統的學習要點和開發事項,希望對你有所幫助!


雲平臺架構


以下均為個人想法,有問題歡迎討論指教

建議從單片機搞起

說真的

如果你學過單片機再學嵌入式的話,會有更多收穫

沒學過就算了(假的,還是去學學吧,學了對自己有好處)

嵌入式開發分帶操作系統和不帶的

既然樓主問的是Linux,那麼不帶操作系統的咱就直接過了

直接上帶操作系統的

帶操作系統的嵌入式主要是ARM方向的開發

此方向又分應用開發和底層開發

應用開發主要是一些功能應用程序,瞭如視頻監控,網絡通信,編譯軟件,彙編軟件,評估板,在線仿真器等等

底層開發對技術要求較高

不管是什麼方向,大神都是從基礎打過來的,憑的就是他們對每一個接口驅動都瞭解

重點:

不管做哪個方向

C語言一定要學好!!

C語言一定要學好!!

C語言一定要學好!!

C語言一定要學好!!

C語言一定要學好!!


推薦一個網站:GitHub


一.打好軟件編程的基礎

第一階段的基礎包括以下步驟

C語言編程基礎,數據結構,計算機原理,編譯原理,操作系統,Linux系統的基本應用,Linux的常用命令(越熟越好)

(敲黑板)以上真的要好好學,都是基礎都是基礎!學不好下面就別繼續了!

覺得以上基礎已經打好了,沒問題了,往下看

某寶弄一臺裸機(!!!)

個人認為,如果想真正的瞭解驅動程序的過程。

還是要優先考慮裸機的驅動程序,他可以讓你清楚地知道各個接口是怎麼進行驅動的

自己從零開始動手肯定比死記硬背或者啥都不知道要好。

至少到了最後你知道怎麼寫操作系統。(23333)

二.ARM體系結構編程(邊玩邊學)

包括 模擬電路,數字電路,微機原理,單片機(沒錯還是要學)

咱們從電燈開始熟悉,不懂就翻書(看視頻),弄不來就翻書(看視頻),覺得不熟再翻一遍書(看視頻),就是這麼簡單粗暴(打住)

弄清楚ARM架構,CPU 怎麼取指譯碼,以及三個總線怎麼工作balabalabala

以及搞清楚cpu怎麼啟動的程序鏡像怎麼佈局的,還有中斷以及保護現場等等等等

這一塊學的主要就是CPU編程思想,目的是為了之後不要一碰上別款CPU就直接懵逼了

推薦書籍:《自己百度,找經典就成》(個人覺得看視頻比看書效果要好,視頻自己找,MOOC和網易雲課堂啥的有很多)

單片機開發板還是有的好(真的!)

Ps:認真學習操作系統

認真學習操作系統

認真學習操作系統

(個人建議)

三.Linux應用程序開發

重頭戲來了(敲黑板!)

此項目分以下幾個步驟

1.命令(多試,多記,多練)這個書籍就不用推薦了,百度上很多

2.系統編程(推薦書籍《嵌入式系統》毛德操)

3.驅動(推薦書籍《Linux設備驅動開發詳解》)

5.服務器(同上不熟不會)

6.內核(推薦書籍a、《深入理解Linux內核》b、《Linux內核源代碼情景分析》毛德操)

7……..(不行,說不下去了)


Linux命令一開始就說了,

越熟越好越多越好

越熟越好越多越好

越熟越好越多越好

當然死記硬背肯定是沒用的。

所以要把實踐和理論結合起來

多試試,多做做實例。各個類型都擼一遍(盡力吧hhh)



總結:

計算機這個方向

有興趣能堅持就沒啥大問題

畢竟網上視頻很多

自學會累,但是也不是沒可能

加油!

打字真.腦闊疼


一碗派大星


作為一個從事車載嵌入式行業的程序員,廢話不多說,總結有以下幾條:

1. C語言是基礎,因為很多操作系統以及底層驅動都是基於C語言寫的。比如Linux操作系統以及其驅動。我說的基礎並不是簡單只是簡單的瞭解一些C語言,而是要深入的學習。比如:指針的使用等。

2.要熟悉主流的操作系統,比如Linux為例。

3.熟悉硬件相關知識,至少知道如何配置寄存器等。

4.如果是小白的話,開始最好還是買個嵌入式開發板吧,具體實踐一下。

5.嵌入式行業變化太快了,要有持續的學習能力,不斷學習。


一個尚未禿頂的程序員


1)先選擇一個主流的平臺,比如NXP I.MX6UL,買一塊好的廠家(用戶多,資料多、技術支持好)的開發板。

2)對照著提供的實驗動手操作

建議

i) 初學者先做應用層,以完成某個應用功能為導向。不要過早的陷入到某個具體的不懂的知識點中,因為Linux太複雜深奧了,你想完全的搞明白一個知識點太難了。

ii) 隨著逐步的熟悉,可以慢慢的去了解和學習驅動、移植、裁剪等相關內容


TopSemic


嵌入式的學習主要包括兩個方面。

其一,是稱為硬件部分。1. 看懂以及繪製電路原理圖,繪製PCB,注意器件原理圖與器件PCB對應關係,熟悉電路繪製自動化軟件,比較通用的是AltiumDesign, PowerPCB等。2. 讀懂器件,IC datasheet,注重電氣特性部分。3. 瞭解各種電阻與電容等使用方法,使用場景。4. 熟悉烙鐵的使用方法,會焊接電路板。5. 熟悉測試工具的使用,對電路板進行測試。

其二,是稱為軟件部分。1. 學習C語言基礎,有可能的話,可以熟悉一下彙編語言。2. 數字基本電路驅動,如LED驅動,閃燈驅動。3. 研究網上通用驅動軟件的學習。4. 很重要的是讀懂器件datasheet裡面器件的使用。5. 瞭解軟件開發工具以及debug方法。


Mr漣水二少爺


物聯網越來越火熱,隨著人工智能的發展,物聯網行業將是接下來高薪就業的趨勢,物聯網技術培訓課程學哪些內容呢?接下來讓你全方面瞭解物聯網,學到時下新潮的技術。

一、嵌入式高級C語言

linux系統,恰如是C語言高級編程,數據結構及算法

二、嵌入式設備及GUI開發

嵌入式環境配置與開發工具學習,GUI圖形界面開發

三、嵌入式linux高級程序設計

嵌入式linux系統編程

四、linux高級網絡程序設計

linux高級網絡編程

五、數據庫開發

數據庫開發

六、C++面向對象高級語言程序設計

C++語言高級語言開發

七、物聯網

物聯網開發

八、CotexA53linux平臺驅動開發

物聯網開發

物聯網開發學科實戰項目內容包括:

1、智能家居項目

2、智能人臉識別項目

3、RFID智能門禁項目

4、多媒體播放項目

5、智能手機設計項目

6、智慧教室項目


千鋒長沙


學習嵌入式Linux一般有兩個方向一個是應用層,另一個是底層。

應用層是在嵌入式設備上實現一些功能(此時設備已經將系統跑起來),像網絡通信,人機交互界面,設備管理和監控等等。

底層要做的是將系統在設備上跑起來,我們需要移植bootloader、Linux內核、文件系統,編寫外設驅動等。

學習嵌入式Linux的話,以我個人經歷來說的話,我覺得你最好有單片機開發的經歷這樣你對於底層的知識有更容易理解。

首先選擇一款Linux系統的發行版作為平臺來學習基本的系統操作和一些應用層知識,進程間通信,時間編程,網絡編程等,平臺可以選擇redhat,Ubuntu,debian等。此時我們就可以做一些系統應用層的練習,玩一些開源項目。

之後就看你的意願了,喜歡做應用層就繼續做應用層,學習一門高級語言,瞭解下內核機制就可以,可以不用更深入的瞭解底層。

如果要做底層,可以選擇一個一款arm板來學習底層,推薦經典的s3c2440,資料豐富,容易入門。可以先從bootloader、內核、文件系統的移植開始,然後再學習驅動的編寫。


GGZ40


首先要有一點的英語和電路基礎,然後再一步步學習深入。

1.先學習單片機,c語言。可從51單片機書籍或視頻或開發板入手。有了一定的編程和電路驅動概念。

2.對MCU的運行和寄存器有所理解之後,可以進一步學習性能強大一點的單片機。STM32之類的ARM單片機。

3.開始接觸嵌入式系統,ucos或freeRTOS之類,掌握一定的嵌入式系統概念。

4.有了嵌入式系統概念之後,可以研究市場上的電子產品,借鑑別人的設計思路。如果需要更強大的系統可學習Linux或Android


分享到:


相關文章: