如何學習嵌入式?


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

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

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

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

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

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

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


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

建議從單片機搞起

說真的

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

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

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

既然樓主問的是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設備驅動開發詳解》)

4.vim編輯(不熟不會)

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

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

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

Linux命令一開始就說了,

越熟越好越多越好

越熟越好越多越好

越熟越好越多越好

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

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

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


總結:

計算機這個方向

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

畢竟網上視頻很多

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

加油!

打字真.腦闊疼


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

一、嵌入式高級C語言

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

二、嵌入式設備及GUI開發

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

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

嵌入式linux系統編程

四、linux高級網路程序設計

linux高級網路編程

五、資料庫開發

資料庫開發

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

C++語言高級語言開發

七、物聯網

物聯網開發

八、CotexA53linux平台驅動開發

物聯網開發

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

1、智能家居項目

2、智能人臉識別項目

3、RFID智能門禁項目

4、多媒體播放項目

5、智能手機設計項目

6、智慧教室項目


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

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

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


推薦閱讀:

悅花越有:「互聯網 」大數據時代背後的「非凡創新」。
互聯網時代如何打造主題公園的核心競爭力?
65%的工作在00後上班時就沒了,也就四!年!後!
破次元壁的跨界營銷,如何做到「1+1>2」?
「互聯網 」創新養老模式

TAG:互聯網 | 教育 | Linux |