衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

萌新必看:嵌入式該怎么學

工程師 ? 來源:21ic電子網 ? 作者:21ic電子網 ? 2020-10-27 10:52 ? 次閱讀

01

嵌入式的定義和舉例分析

官方定義:

根據IEEE(國際電氣電子工程師協會)的定義,嵌入式系統(Embedded System)是指以應用為中心、以計算機技術為基礎,軟件硬件可裁剪、適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。舉例來說,大到油田的集散控制系統和工廠流水線,小到家用VCD機或手機,甚至組成普通PC終端設備的鍵盤、鼠標、硬盤、Modem等均是由嵌入式處理器控制的。

這主要是從應用上加以定義的,從中可以看出嵌入式系統是軟件和硬件的綜合體,還可以涵蓋機械等附屬裝置。

目前國內一個普遍被認同的定義是:以應用為中心、以計算機技術為基礎,軟件硬件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗嚴格要求的專用計算機系統。

說白了就是先設計硬件,然后根據需求編寫能在該硬件上運行的軟件,就成了所謂的“智能硬件”。

嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。

首先嵌入式技術主要分為嵌入式軟件和嵌入式硬件2大方向。

嵌入式硬件方向

嵌入式硬件工程師主要工作職責是為產品設計硬件電路原理圖,設計硬件PCB板,選擇合適的元器件,焊接調試硬件電路板,保證硬件電路板的可靠性、穩定性和抗干擾能力。因為現在集成電路發展迅速,大部分集成電路廠商都會提供參考電路,所以硬件電路原理圖的設計相對來說比較簡單,硬件工程師工作的含金量主要體現在產品的可靠性和穩定性設計、以及電磁兼容設計,這才是硬件設計工程師的含金量所在。一個資深的嵌入式硬件工程師年薪都在15萬~40萬之間。

要成為一個資深的嵌入式工程師相當難,一方面要有非常扎實的理論知識,同時也要有相當的那種大型的、高頻CPU、多層PCB板的設計經驗。嵌入式硬件工程師要學的課程主要有模擬電路設計數字電路設計、電磁波理論等。熟悉常用的放大電路、濾波電路、電源電路設計和分析。

嵌入式軟件方向

嵌入式軟件工程師的職責主要是根據產品的功能需求設計好軟件,讓硬件工作起來。嵌入式電子產品硬件部分,大部分都是相同的,核心的都是由CPU、RAM和FLASH 幾大部分組成,而軟件就千差萬別了。產品的具體功能都是由軟件來實現的,一般來講一個產品的實現,軟件設計的工作量是硬件設計的4~5倍。所以一般情況下,一個公司的軟件工程師數量是硬件硬件工程師的4~5倍,嵌入式軟件工程師需求比硬件工程師大很多,同時跟硬件工程師相比,嵌入式軟件工程師學起來相對容易些,所以這里21ic家重點和大家談一下嵌入式軟件工程的學習路線。 延伸閱讀:《 嵌入式有什么值得學習的軟硬件技術? 》、《 嵌入式軟件和硬件誰更重要? 》。

02

嵌入式設計應具備的基本技能

1、Linux 基礎

安裝Linux操作系統

Linux文件系統

Linux常用命令

Linux啟動過程詳解

熟悉Linux服務能夠獨立安裝Linux操作系統,能夠熟練使用Linux系統的基本命令

認識Linux系統的常用服務安裝Linux操作系統

Linux基本命令實踐

設置Linux環境變量

定制Linux的服務Shell

編程基礎使用vi編輯文件

使用Emacs編輯文件

使用其他編輯器

2、Shell 編程基礎

Shell簡介

認識后臺程序Bash編程

熟悉Linux系統下的編輯環境

熟悉Linux下的各種Shell

熟練進行shell編程熟悉vi基本操作

熟悉Emacs的基本操作

比較不同shell的區別

編寫一個測試服務器是否連通的shell腳本程序

編寫一個查看進程是否存在的shell腳本程序

編寫一個帶有循環語句的shell腳本程序

3、Linux下的C編程基礎

linux c語言環境概述

Gcc使用方法

Gdb調試技術

AutoconfAutomake Makefile 代碼優化

熟悉Linux系統下的開發環境

熟悉Gcc編譯器

熟悉Makefile規則編寫Hello,World程序

使用 make命令編譯程序

編寫帶有一個循環的程序

調試一個有問題的程序

4、嵌入式系統開發基礎

嵌入式系統概述

交叉編譯

配置TFTP服務

配置NFS服務

下載Bootloader和內核

嵌入式Linux應用軟件開發流程熟悉嵌入式系統概念以及開發流程

建立嵌入式系統開發環境制作cross_gcc工具鏈

編譯并下載U-boot

編譯并下載Linux內核

編譯并下載Linux應用程序

5、嵌入式系統移植

Linux內核代碼

平臺相關代碼分析

ARM平臺介紹

平臺移植的關鍵技術

移植Linux內核到 ARM平臺

了解移植的概念

能夠移植Linux內核移植Linux2.6內核到ARM9開發板

6、嵌入式 Linux 下串口通信

串行I/O的基本概念

嵌入式Linux應用軟件開發流程

Linux系統的文件和設備

與文件相關的系統調用

配置超級終端和MiniCOM

能夠熟悉進行串口通信

熟悉文件I/O

編寫串口通信程序

編寫多串口通信程序

7、嵌入式系統中多進程程序設計

Linux系統進程概述

嵌入式系統的進程特點

進程操作

守護進程

相關的系統調用了解Linux系統中進程的概念

能夠編寫多進程程序編寫多進程程序

編寫一個守護進程程序

sleep系統調用任務管理

同步與通信Linux任務概述任務調度

管道 信號 共享內存 任務管理 API

了解Linux系統任務管理機制

熟悉進程間通信的幾種方式

熟悉嵌入式Linux中的任務間同步與通信編寫一個簡單的管道程序實現文件傳輸

編寫一個使用共享內存的程序

8、嵌入式系統中多線程程序設計

線程的基礎知識

多線程編程方法

線程應用中的同步問題了解線程的概念

能夠編寫簡單的多線程程序編寫一個多線程程序

03

嵌入式軟件工程師學習流程

第一部分:Linux平臺搭建與環境熟悉

了解linux系統;區分各種版本的Linux系統,以便于拓展 Linux視野。

1、Linux 簡介;

2、Linux 系統的主要特點;

3、Linux 的組成;

4、主要的 Linux 版本;

5、嵌入式 Linux簡介與發展

第二部分:虛擬機安裝和LINUX系統安裝

1、虛擬機安裝;

2、Linux系統的安裝;

3、Linux系統的常用軟件的安裝;

4、Linux快速入門

5、 熟悉運用 Linux環境下,常用命令的操作與系統設置,如常用的 Shell;掌握基本的Shell 應用

第三部分:嵌入式LINUX環境搭建

1、 建立嵌入式 Linux開發環境

2、 熟悉嵌入式開發平臺

3、 嵌入式 Linux開發工具

4、 Linux下的調試技巧

5、 MAKE工程管理器

6、 硬件環境的搭建;arm-linux-gcc與 gcc安裝配置

第四部分:U-Boot

了解 U-Boot 的作用及工作流程;了解Bootloader 的代碼結構、編譯過程;移植U-Boot;掌握常用的U-Boot命令。

1、 Bootloader介紹

2、 u-boot工程介紹

3、 u-boot的編譯使用

4、 u-boot源碼分析

5、 u-boot資源分配

6、 配置編譯u-boot

7、 u-boot移植過程

8、 u-boot常用命令操作

9、 添加u-boot新命令

10、設置u-boot環境變量

11、 u-boot驅動添加網卡:DM9000

第五部分:LINUX內核移植

熟悉內核的原碼結構和kbuild Makefile語法;掌握和內核、驅動模塊編譯相關的原理及方法。

1、Linux內核介紹

2、Linux內核特點

3、Linux內核源代碼結構

4、Linux內核選項解析

5、Linux內核編譯鏈接

6、內核模塊編譯、使用方法

第六部分:LINUX根文件系統

1、busybox 包移植、編譯

2、Linux跟文件系統制作過程

3、根文件系統介紹

4. nfs文件服務器系統搭建

第七部分:LINUX應用學習

嵌入式Linux應用開發和系統開發是嵌入式Linux中最重要的一部分,也是企業人才需求最廣的一部分。

主要目標是精通嵌入式Linux下的程序設計,熟練掌握嵌入式Linux的開發環境、系統編程以及網絡編程,熟悉C++、QT編程并且深刻體會整個嵌入式Linux項目開發流程,強化學員對Linux應用開發的能力。

1、Linux系統中的進程的概念,在應用程序中線程與父子進程的創建與應用

2、線程之間、進程之間的通信

3、進程間通信基本概念

4、管道(PIPE)

5、信號(SIGNAL)

6、內存映射(MAPPED MEMORY)

7、消息隊列(MESSAGE QUEUE)

8、信號量(SEMAPHORE)

9、共享內存(SHARE MEMORY)@

10、tcPip協議在應用程序中的編程開發(SOCKET套接字編程開發)

10.1. ISO/OSI七層協議模型與IP網絡四層模式

10.2.TCP/IP協議簇

10.3. 基于嵌入式Linux的TCP/IP網絡結構

10.4. 基于嵌入式Linux的SOCKET編程

10.5.UDP與TCP的區別

10.6. UDP SERVER-CLIENT關系程

11、文件讀寫與存儲

04

嵌入式軟件工程師的內功修煉

所謂嵌入式軟件開發,抽象的講,就是在專用的硬件平臺借助宿主機交叉編譯環境通過編程、編譯、鏈接下載、調試達到目標需求;往細了分,嵌入式軟件開發可分為嵌入式驅動設計師(向下根據接口協議驅動硬件設備,向上提供應用API),嵌入式系統設計師(編寫固件程序,設計操作系統內核或文件系統,根據不同硬件平臺移植操作系統,優化系統功能),嵌入式界面設計師(嵌入式硬件平臺的上位機GUI設計,人機交互),嵌入式應用設計師(裸機或操作系統移植調度驅動API按照一定的算法邏輯實現相應的需求功能),嵌入式算法設計師(把相關數學算法設計成軟件程序精準優化系統功能,如PID控算、卡爾曼濾波算法、低通濾波等)。

C語言就是嵌入式軟件的內功,21ic家也曾經多次強調。相信大家都看過武俠小說或電視,金老前輩的甚是出名,里面有“天下武功出少林”一說,為什么呢?

就是因為少林有一本《易筋經》,“掃地僧”也就是當時江湖的大神,學了易筋經的人想再學其他武功可謂是游刃有余,就像《射雕英雄傳》的郭靖郭大俠因為修煉了全真教馬鈺道長的內功,再學洪七公、老頑童等的外功就很簡單了,而C語言就是所有各種編程語言(像PythonJava、C++、PHP、JavaScript等等)里面的“易筋經”,達到精通C的境界,再學其他就很簡單了,因為C要整明白,必須了解底層、明白計算機系統的運行機制,當然一個沒學過匯編的人不能真正掌握C語言的真諦。

在如今Python、Java編程語言火熱的市場前景下,資深工程師的建議是,在學校讀書真心想搞IT技術,從C語言學起,會受益終生的。

學習C語言難嗎?資深工程師表示:不難。真正懂得用C語言難嗎?--難,但是按照心法不斷去實踐會化解“難”這顆頑石。現在對C語言水平層次的定義有幾階:入門、掌握、熟悉、精通。現在很多一線的軟件工程師都是至多在“熟悉”的水平階上。

內功心法:用數學思維抽象化去學習,多編程、多調試、多實際應用,多看高手寫的優秀代碼,可以嘗試去寫寫RTOS內核;知錯就改,溫故知新,不斷學習

內功大綱:結構體、數組、指針、函數、內存管理

深度理解ANSI標準定義的C語言預處理指令用法,文件結構問題

明確定義及聲明,深度解析C語言的32個關鍵字,sizeof是關鍵字

標準C語言的20個基本符號深度熟練怎么用,還有表達式的優先級問題

深度理解內存管理與內存泄漏問題,野指針的問題,棧、堆、靜態區的問題

深度解析指針和數組的內存布局,它們之間的相互訪問形式以及地址的強制轉換 ,還有多維數組和多級指針問題

深度理解函數設計的原則和技巧,養成良好的編程風格和編程習慣

順便提提軟件面試一般考察的問題,也就是面試官想通過面試了解的問題:

在需求實現的前提下,看你的編程風格;

編程邏輯不可能一步到位,很多時候需要不斷修改,看你出錯問題的處理能力;

對你代碼算法復雜度進行分析,是否提高系統性能。

05

嵌入式軟硬件界限又不是那么深

嵌入式系統的應用范圍可以粗略分為兩大類:

(1)電子系統的智能化(工業控制,現代農業、家用電器、汽車電子、測控系統、數據采集等等);

(2)計算機應用的延伸(MP3、手機、通信、網絡、計算機外圍設備等)。從這些應用可以看出,要完成一個以MCU為核心的嵌入式系統應用產品設計,需要有硬件、軟件及行業領域相關知識。硬件主要有MCU的硬件最小系統、輸入/輸出外圍電路、人機接口設計。軟件設計有固化軟件的設計,也可能含PC機軟件的設計。行業知識需要通過協作、交流與總結獲得。

概括地說,學習以MCU為核心的嵌入式系統,需要以下軟件硬件基礎知識與實踐訓練:

1:硬件最小系統(包括電源、晶振、復位、寫入調試接口);

2:通用I/O(開關量輸入/輸出,涉及各種二值量檢測與控制);

3:模數轉換A/D(各種傳感器信號的采集與處理,如紅外、溫度、光敏、超聲波、方向等等);

4:數模轉換D/A(對模擬量設備利用數字進行控制);

5:通信(串行通信接口SCI、串行外設接口SPI、集成電路互聯總線I2CCANUSB、嵌入式以太網ZigBee技術等);

6:顯示(LED、LCD等等);

7:控制(控制各種設備,包含PWM等控制技術);

8:數據處理(圖形、圖像、語音、視頻等處理或識別);

9:各種具體應用。

事實上,萬變不離其宗,任何應用都可以歸入這幾類。而應用中的硬件設計、軟件設計、測試等都必須遵循嵌入式軟件工程的方法、原理與基本原則。所以,嵌入式軟件工程也是嵌入式系統知識體系的有機組成部分,只不過,它融于具體項目的開發過程之中。21ic家多次強調,雖然嵌入式工程師有軟件和硬件工程師的分別,但是其實對于嵌入式工程師來說,兩手都要硬,只不過相關領域工程師的深淺不同。更多相關內容可以在21ic中國電子網查閱查看。

以上實踐訓練涉及硬件基礎、軟件基礎及相關領域知識。計算機語言、操作系統、開發環境等均是完成這些目的的工具。有些初學者,容易把工具的使用與所要達到的真正目的相混淆。例如,有的學習者,學了很長時間的嵌入式操作系統移植,而不進行實際嵌入式系統產品的開發,到了最后,做不好一個嵌入式系統小產品,偏離了學習目標,甚至放棄了嵌入式系統領域。這就是進入了嵌入式系統學習誤區的情況,下面對此做一些分析。

06

嵌入式系統的學習誤區

關于嵌入式系統的學習方法,因學習經歷、學習環境、學習目的、已有的知識基礎等不同,可能在學習順序、內容選擇、實踐方式等方面有所不同。但是,應該明確哪些是必備的基礎知識,哪些應該先學,哪些應該后學,哪些必須通過實踐才能獲得的,哪些是與具體芯片無關的通用知識,哪些是與具體芯片或開發環境相關的知識。

由于微處理器微控制器種類繁多,也可能由于不同公司、不同機構出于自身的利益,給出一些誤導性宣傳,特別是我國嵌入式微控制器制造技術的落后及其他相關情況,使得人們對微控制器的發展,在認識與理解上存在差異。導致一些初學者,進入了嵌入式系統的學習誤區,浪費了寶貴的學習時間。下面分析初學者可能存在的幾個誤區。

如果說,學習嵌入式系統不是為了開發其應用產品,那就沒有具體目標了,許多諸如學習方法問題也就不必談了。實際上,這正是許多人想學,又不知從何開始學習的關鍵問題所在,不知道自己學習的具體目標。于是,看了一些培訓廣告,看了書店中書架上種類繁多的嵌入式系統的書籍,或上網以“嵌入式系統”為關鍵詞進行查詢,然后參加培訓或看書,開始“學習起來”。對于有計算機閱歷的人,往往選擇一個嵌入式操作系統就開始學習了。不好聽的比喻,有點象“瞎子摸大象”,只了解其一個側面。這樣如何能對嵌入式產品的開發過程有個全面了解呢?針對許多初學者選擇“xxx嵌入式操作系統+xxx處理器”的嵌入式系統入門學習模式,我認為是不合適的。我的建議是:首先把嵌入式系統軟件與硬件基礎打好了,再根據實際需要,選擇一種實時操作系統(RTOS)進行學習實踐。要記住:RTOS是開發某些類嵌入式產品的輔助工具,是手段,不是目的。許多類嵌入式產品,并不需要RTOS。所以,一開始就學習RTOS,并不符合學習“由淺入深、循序漸進”的學習規律。

RTOS本身由于種類繁多,實際使用何種RTOS,一般需要工作單位確定。基礎階段主要學習RTOS的基本原理與在RTOS之上的軟件開發方法,而不是學習如何設計RTOS。以開發實際嵌入式產品為目標的學習者,不要把過多的精力花在設計或移植RTOS上面。正如很多人使用Windows操作系統,而設計Windows操作系統只有Microsoft。許多人“研究”Linux,但不使用它,浪費時間了,人的精力是有限的,學習必須有所選擇。

硬件與軟件的困惑

以MCU為核心的嵌入式技術的知識體系必須通過具體的MCU來體現、實踐與訓練。但是,選擇任何型號的MCU,其芯片相關的知識只占知識體系的20%,80%是通用知識。但是80%的通用知識,必須通過具體實踐才能進行,所以學習嵌入式技術要選擇一個系列的MCU。但不論如何,系統含有硬件與軟件兩大部分,它們之間的關系如何?

有些學者,僅從電子角度認識嵌入式系統。認為“嵌入式系統=MCU硬件系統+小程序”。這些學者,大多學習背景是具有良好的電子技術基礎知識。實際情況是,早期MCU內部RAM小、程序存儲器外接,需要外擴各種I/O,沒有象現在這樣USB、嵌入式以太網等較復雜的接口,因此,程序占總設計量小于50%,使人們認為嵌入式系統(單片機)是“電子系統”,以硬件為主、程序為輔。但是,隨著MCU制造技術的發展,不僅MCU內部RAM越來越大,Flash進入MCU內部改變了傳統的嵌入式系統開發與調試方式,固件程序可以被更方便地調試與在線升級,許多情況與開發PC機程序方便程度相差無幾,只不過開發環境與運行環境不是同一載體而已。這些情況使得嵌入式系統的軟件硬件設計方法發生了根本變化。

有些學者,僅從軟件開發角度認識嵌入式系統,甚至有的僅從嵌入式操作系統認識嵌入式系統。這些學者,大多具有良好的計算機軟件開發基礎知識,認為硬件是生產廠商的事,沒有認識到,嵌入式系統產品的軟件與硬件均是需要開發者設計的。我常常接到一些關于嵌入式產品穩定性的咨詢電話,發現大多數是由于軟件開發者對底層硬件的基本原理不理解造成的。特別是,有些功能軟件開發者,過分依賴于底層硬件的驅動軟件設計完美,自己對底層驅動原理知之甚少。實際上,一些功能軟件開發者,名義上在做嵌入式軟件,實際上,僅僅使用嵌入式編輯、編譯環境而已,本質與開發通用PC機軟件沒有兩樣。

而底層硬件驅動軟件的開發,若不全面考慮高層功能軟件對底層硬件的可能調用,也會使得封裝或參數設計得不合理或不完備,導致高層功能軟件的調用困難。從這段描述可以看出,若把一個嵌入式系統的開發孤立地分為硬件設計、底層硬件驅動軟件設計、高層功能軟件設計,一旦出現了問題,就可能難以定位。實際上,嵌入式系統設計是一個軟件、硬件協同設計工程,不能象通用計算機那樣,軟件、硬件完全分開來看,要在一個大的框架內協調工作。 面對學習嵌入式系統以軟件為主還是以硬件為主,或是如何選擇切入點,如何在軟件與硬件之間取得一些平衡。對于這個困惑的建議是:要想成為一名真正的嵌入式系統設計師,在初學階段,必須重視打好嵌入式系統的硬件與軟件基礎。以下是從事嵌入式系統設計二十多年的一個美國學者John Catsoulis 在《Designing Embedded Hardware》一書中關于這個問題的總結:嵌入式系統與硬件緊密相關,是軟件與硬件的綜合體,沒有對硬件的理解就不可能寫好嵌入式軟件,同樣沒有對軟件的理解也不可能設計好嵌入式硬件。

嵌入式系統產品種類繁多,應用領域各異。在2.1小節中,我們把嵌入式系統的應用范圍粗略分為電子系統的智能化與計算機應用的延伸兩大類,從初學者角度,可能有分別從這兩個角度片面認識嵌入式系統的問題。因此,一些從電子系統智能化角度認識嵌入式系統的學習者,可能會忽視編程結構、編程規范、軟件工程的要求、操作系統等知識的積累。另一些從計算機應用的延伸角度認識嵌入式系統的學習者,可能會把通用計算機學習過程中的概念與方法生搬硬套到嵌入式系統的實踐中,忽視嵌入式系統與通用計算機的差異。

實際上,在嵌入式系統學習與實踐的初始階段,應該充分了解嵌入式系統的特點,根據自身的已有知識結構,制定適合自身情況的學習計劃。目標應該是打好嵌入式系統的硬件與軟件基礎,通過實踐,為成為良好的嵌入式系統設計師建立起基本知識結構。學習過程,可以通過具體應用系統為實踐載體,但不能拘泥于具體系統,應該有一定的抽象與歸納。例如,有的初學者開發一個實際控制系統,沒有使用實時操作系統,但不要認為實時操作系統不需要學習。又例如,有的初學者以一個帶有實時操作系統的樣例為藍本進行學習,但不要認為,任何嵌入式系統都需要使用實時操作系統,甚至把一個十分簡明的實際系統加上一個不必要的實時操作系統。因此,片面認識嵌入式系統,可能導致學習困惑。應該根據實際項目需要,鍛煉自己分析實際問題、解決問題的能力。這是一個比較長期的學習與實踐過程,不能期望通過短期培訓完成整體知識體系的建立,應該重視自身實踐,全面地理解嵌入式系統的知識體系。

嵌入式系統的大部分初學者需要選擇一個微控制器(MCU)進行入門級學習,面對眾多廠家生產的微控制器系列,不知如何是好。

首先是關于位數問題,目前主要有8位、16位、32位,面對嵌入式系統應用的多樣性,不同位數的MCU各有應用領域,這一點與通用微機有很大不同。你做一個遙控器,不需要使用一個32位MCU,可能一個MCU芯片價格已經超過遙控器價格需求。對于首次接觸嵌入式系統的學習者,可以根據自己的知識基礎選擇入門芯片的位數。建議大多數初學者,可以選擇一個8位MCU作為快速入門芯片,了解一些匯編與底層硬件知識,之后再選一個16位或32位芯片進行學習實踐。

關于芯片選擇的另一個誤區,認為有“主流芯片”存在,嵌入式系統也可以形成芯片壟斷。這完全是一種誤解,是套用通用計算機系統的思維模式,而忽視了嵌入式系統應用的多樣性。

關于學習芯片選擇還有一個誤區,是系統的工作頻率。誤認為選擇工作頻率高的芯片進行入門學習,表示更先進。實際上,工作頻率高可能給初學者帶來學習過程中的不少困難。

實際嵌入式系統設計不是追求芯片位數、工作頻率、操作系統等因素,而是追求穩定可靠、維護、升級、功耗、價格等指標。而初學者選擇入門芯片,是通過某一MCU作為藍本獲得嵌入式系統知識體系的通用基礎,其基本原則是:入門時間較快、硬件成本較少,知識要素較多,學習難度較低。

07

基礎階段的學習建議

基于以上討論,21ic家總結了渴望學習嵌入式系統的學子提出幾點基礎階段的學習建議:

(1)嵌入式系統軟件硬件密切相關,一定要打好軟件硬件基礎。其實,只要找到正確的方法,加上努力,任何理工科學生,甚至非理工科學生,都能學好嵌入式系統。

(2)選擇一個芯片及硬件評估板(入門芯片最好是簡單一點,例如8位MCU)、選擇一本好書(最好有規范的例子)、找一位好老師(最好是有經驗且熱心的)。硬件評估板的價格一定要在1000元以下,不要太貴,最好能有自己動手的空間。不花一分硬件錢,要想學好嵌入式系統不實際。因為,這是實踐性很強的學科。好書,可以使你少走彎路,不會被誤導,要知道有的書是會使人進入學習誤區的。好老師也可以是做過一些實際項目的學長(一定要找做過幾個成功項目的學長或老師做指導,否則,經驗不足也可能誤導),有教師指導,學習進程會加快(人工智能學科里有個術語叫無教師指導學習模式與有教師指導學習模式,無教師指導學習模式比有教師指導學習模式復雜許多)。

(3)許多人怕硬件,其實嵌入式系統硬件比電子線路好學多了。只要深入理解MCU的硬件最小系統,對I/O口、串行通信、鍵盤、LED、LCD、SPI、I2C、PWM、A/D(包括一些傳感器)、D/A等逐個實驗理解,逐步實踐。再通過自己做一個實際的小系統,底層硬件基礎就有了。各個硬件模塊驅動程序的編寫是嵌入式系統的必備基礎。學習嵌入式系統的初期,這個過程是必須的。

(4)至于嵌入式實時操作系統RTOS,一定不要一開始就學,這樣會走很多彎路,也會使你對嵌入式系統感到畏懼。等你軟件硬件基礎打好了,再學習就感到容易理解。實際上,眾多嵌入式應用,并不一定需要操作系統。也可以根據實際項目需要再學習特定的RTOS。一定不要被一些嵌入式實時操作系統培訓班宣傳所誤導,而忽視實際嵌入式系統軟件硬件基礎知識的學習。

(5)要避免片面地單純從“電子”或“計算機軟件”角度認識嵌入式系統。前面說過,嵌入式系統是軟件與硬件的綜合體。因此,要逐步從MCU的最小系統開始,一點一點理解硬件原理及底層硬件驅動編程方法。要通過規范的例子,理解軟件工程封裝、可復用等思想。通過規范編程,積累底層構件(Component),也就是一個一個模塊,但是要封裝得比較好,可復用。

(6)注重實驗與實踐。這里說的實驗主要指通過重復或驗證他人的工作,目的是學習基礎知識,這個過程一定要經歷。實踐是自己設計,有具體的“產品”目標。如果你能花500元左右自己做一個具有一定功能的小產品,且能穩定運行1年以上,就可以說接近入門了。

(7)關于入門芯片的選擇。不要選太復雜的微控制器作為入門芯片,不能超越學習過程。不要一下子學習幾種芯片,可以通過一個芯片入門并具有一個實踐經驗后,根據實際需要選擇芯片開發實際產品。注意,不要把微處理器(MPU)與微控制器(MCU)概念相混淆,微處理器只是微控制器的內核。

(8)關于操作系統的選擇。可以等到你具有一定實踐后,選擇一個簡單容易理解原理的進行學習,不要一開始就學習幾種操作系統,理解了基本原理,實踐中確有實際需要再學習也不遲。人總是要不斷學習的。

(9)關于匯編與C語言的取舍。隨著MCU對C編譯的優化支持,對于匯編可以只了解幾個必須的語句,直接使用C語言編程。但必須通過第一個程序理解芯片初始化過程、中斷機制、程序存儲情況等區別于PC機程序的內容。另外,為了測試的需要,最好掌握一門PC機編程語言。

(10)要明確自己的學習目的,并注意學習方法。關于學習目的要明確是打基礎,還是為了適應某些工作而進行的短訓;而學習方法方面,要根據學習目的選擇合適的學習途徑,注意理論學習與實踐、通用知識與芯片相關知識、硬件知識與軟件知識的平衡,要在理解軟件工程基本原理基礎上理解硬件構件與軟件構件等基本概念。

以上建議,僅供參考。 當然,以上只是基礎階段的學習建議,要成為良好的嵌入式系統設計師,還需要在實際項目中鍛煉,并不斷學習與積累經驗。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • IEEE
    +關注

    關注

    7

    文章

    386

    瀏覽量

    47175
  • 嵌入式
    +關注

    關注

    5094

    文章

    19178

    瀏覽量

    307731
  • 計算機
    +關注

    關注

    19

    文章

    7540

    瀏覽量

    88649
收藏 人收藏

    評論

    相關推薦

    嵌入式主板的概述與發展

    隨著科技的迅猛發展,嵌入式系統在現代電子產品中扮演著越來越重要的角色。嵌入式主板作為嵌入式系統的核心組件之一,承擔著控制、處理和通訊等多種功能。本文將對嵌入式主板的基本概念、構成部分、
    的頭像 發表于 01-13 16:30 ?318次閱讀
    <b class='flag-5'>嵌入式</b>主板的概述與發展

    嵌入式好找工作嗎?

    嵌入式好找工作嗎? 在當今科技飛速發展的時代,眾多新興職業領域不斷涌現,嵌入式也是很多人選擇職業發展方向時的一個選項。那么,嵌入式好找工
    發表于 12-16 15:43

    新手怎么嵌入式?

    新手怎么嵌入式? 在科技飛速發展的今天,嵌入式技術已經滲透到我們生活的各個角落,從智能手機到智能家居,從汽車電子到醫療設備。對于新手而言,嵌入式技術就像是一座充滿神秘和機遇的寶藏,等
    發表于 12-12 10:51

    什么是嵌入式人工智能

    嵌入式人工智能是指將人工智能技術應用于嵌入式系統中的一種技術。嵌入式系統是嵌入到其他設備或系統中的計算機系統,通常用于控制、監測或執行特定任務,如智能手機、智能家居設備、智能汽車等中的
    的頭像 發表于 12-11 09:23 ?413次閱讀
    什么是<b class='flag-5'>嵌入式</b>人工智能

    什么是嵌入式?一文讀懂嵌入式主板

    在現代科技浪潮中,嵌入式技術已成為支撐各種智能設備和系統運行的核心力量。那么,究竟什么是嵌入式嵌入式系統,顧名思義,是將計算機的硬件和軟件嵌入到某種設備或系統中,以實現特定功能的計算
    的頭像 發表于 10-16 10:14 ?1593次閱讀

    AMD 面向嵌入式系統推出高能效 EPYC 嵌入式 8004 系列

    AMD 憑借其 EPYC? 嵌入式處理器不斷樹立行業標準,為網絡、存儲和工業應用提供卓越的性能、效率、連接與創新。今天,我們正以第四代 AMD EPYC 嵌入式 8004 系列處理器擴展這一
    發表于 10-11 13:58 ?760次閱讀

    嵌入式主板是什么意思?嵌入式主板全面解析

    嵌入式主板,通常被稱為嵌入式系統的核心組件,是一種用于控制和數據處理的計算機硬件,其設計旨在嵌入特定設備中執行專門任務。嵌入式主板如同是設備的“大腦”,主要功能是根據需要管理和控制設備
    的頭像 發表于 09-30 10:05 ?984次閱讀

    嵌入式linux開發的基本步驟有哪些?

    嵌入式Linux開發是一個復雜的過程,涉及到硬件選擇、操作系統移植、驅動開發、應用程序開發等多個方面。以下是嵌入式Linux開發的基本步驟,以及每個步驟的說明。 硬件選擇 在開始嵌入式Linux開發
    的頭像 發表于 09-02 09:11 ?635次閱讀

    嵌入式開發前景怎么樣?

    嵌入式開發前景非常廣闊,這主要得益于物聯網、人工智能、大數據等技術的快速發展,以及嵌入式系統在各個領域的廣泛應用。以下是對嵌入式開發前景的詳細分析
    的頭像 發表于 07-10 09:00 ?2944次閱讀
    <b class='flag-5'>嵌入式</b>開發前景怎么樣?

    嵌入式開發學習

    我在學校專注于這一門,感覺特別受用,所以想深入學習一些關于嵌入式的一些知識
    發表于 07-09 08:24

    嵌入式系統怎么?

    嵌入式系統怎么? 隨著物聯網、智能制造等新技術的興起,嵌入式系統的應用范圍更加廣泛。包括但不限于工業控制、汽車電子、醫療設備、智能家居、智慧城市、消費電子、通信設備等。學習嵌入式
    發表于 07-02 10:10

    嵌入式主板,你了解多少?

    嵌入式主板,也稱為嵌入式計算機主板,是一種專門設計用于嵌入式系統的計算機主板。與臺式機和筆記本電腦中使用的常規主板不同,嵌入式主板設計用于集成到更大的電子設備中,例如汽車、醫療設備或自
    的頭像 發表于 04-17 15:11 ?1678次閱讀

    fpga和嵌入式應該哪個

    FPGA和嵌入式系統是兩個不同的領域,各有其特點和優勢,選擇學習哪個取決于個人的興趣、職業目標以及市場需求。
    的頭像 發表于 03-27 14:43 ?846次閱讀

    嵌入式fpga是什么意思

    嵌入式FPGA是指將FPGA技術集成到嵌入式系統中的一種解決方案。嵌入式系統是一種為特定應用而設計的計算機系統,它通常包括處理器、內存、外設接口等組件,并且被嵌入到更大的設備或系統中,
    的頭像 發表于 03-15 14:29 ?1385次閱讀

    fpga是嵌入式

    FPGA(現場可編程門陣列)不是嵌入式系統,但FPGA在嵌入式系統中有著重要的應用。
    的頭像 發表于 03-14 17:19 ?2535次閱讀
    大发888游戏平台dafa 888 gw| 百家乐官网概率统计| 太阳城大酒店| 波音百家乐自动投注| 百家乐官网群必胜打朽法| 蒙特卡罗代理| 大发888娱乐游戏可以玩吗| 威尼斯人娱乐代理注| 中国百家乐技巧| 百家乐论坛香港马会| 百家乐投注综合分析法| 百家乐四式正反路| 百家乐视频象棋| 百家乐官网种类| 百家乐官网又称什么| 明珠百家乐官网的玩法技巧和规则 | 太阳城丝巾| 大发888娱乐成| 百家乐园蒙特卡罗| 威尼斯人娱乐城首选金杯娱乐城| 缅甸百家乐的玩法技巧和规则| 百家乐路子分| 百家乐官网双峰县| 百家乐官网算牌方| 百家乐官网首页红利| 百家乐官网乐赌| 百家乐真钱棋牌| 易胜博百家乐娱乐城| 海尔百家乐的玩法技巧和规则| 百家乐园百乐彩| 大发888娱乐城好吗| 大发娱乐城官网| 会昌县| 美高梅百家乐官网娱乐城| 百家乐官网翻天粤语qvod| 太原百家乐官网的玩法技巧和规则 | 988百家乐官网娱乐| 鼎龙百家乐官网的玩法技巧和规则| 百家乐园会员注册| 巴比伦百家乐的玩法技巧和规则 | 百家乐官网连黑记录|