嵌入式基礎課程
Ⅰ 搞嵌入式開發需要學習那些課程
轉載:
嵌入式軟體方面最重要的課程包括:
(1)
嵌入式微處理器結構與應用:這是一門嵌入式硬體基礎課程,我院用這門課取代了傳統的「微機原理與介面」課程(目前國內已有少部分高校IT專業這樣做了,因為講x86微機原理與介面很難找到實際用處,只為教學而已)。我們說過,嵌入式是軟硬體結合的技術,搞嵌入式軟體的人應對ARM處理器工作原理和介面技術有充分了解,包括ARM的匯編指令系統。若不了解處理器原理,怎麼能控制硬體工作,怎麼能寫出節省內存又運行高速的最優代碼(嵌入式軟體設計特別講究時空效率),怎麼能寫出驅動程序(驅動程序都是與硬體打交道的)?很多公司招聘嵌入式軟體人員時都要求熟悉ARM處理器,將來若同學到公司中從事嵌入式軟體開發,公司都會給你一本該設備的硬體規格說明書
(xxx
Specification),您必須能看懂其中的內存分布和埠使用等最基本的說明(就像x86匯編一樣),否則怎麼設計軟體。有些同學覺得嵌入式處理器課程較枯燥,這主要是硬體課程都較抽象的原因,等我們的嵌入式實驗室10月份建好後,您做了一些實驗後就會覺得看得見摸得著。還有同學對ARM匯編不感興趣,以為嵌入式開發用C語言就足夠了。其實不應僅是將匯編語言當成一個程序設計語言,學匯編主要是為了掌握處理器工作原理的。一個不熟悉匯編語言的人,怎麼能在該處理器寫出最優的C語言代碼。在嵌入式開發的一些關鍵部分,有時還必須寫匯編,如Bootloader等(可能還包括BSP)。特別是在對速度有極高要求的場合(如DSP處理器的高速圖像採集和圖像解壓縮),目前主要還要靠匯編寫程序(我看到過很多公司是這樣做的)。當您在一個嵌入式公司工作時,在查看描述原理的手冊時,可能很多都是用匯編描述的(我就遇到過),這是因為很多硬體設計人員只會寫或者喜歡用匯編描述,此時您就必須看懂匯編程序,否則軟硬體人員可能就無法交流。很多嵌入式職位招聘時都要求熟悉匯編。
(2) 嵌入式操作系統類課程
除了WinCE的實時性稍差外,大多數嵌入式操作系統的實時性都很強,所以也可稱為實時操作系統Real Time
Operating
System.從事嵌入式的人至少須掌握一個嵌入式操作系統(當然掌握兩個更好),這在嵌入式的所有技術中是最為關鍵的了。目前最重要的RTOS主要包括:
第一類、傳統的經典RTOS:最主要的便是Vxworks操作系統,以及其Tornado開發平台。Vxworks因出現稍早,實時性很強(據說可在1ms內響應外部事件請求),並且內核可極微(據說最小可8K),可靠性較高等,所以在北美,Vxworks占據了嵌入式系統的多半疆山。特別是在通信設備等實時性要求較高的系統中,幾乎非Vxworks莫屬。Vxworks的很多概念和技術都和Linux很類似,主要是C語言開發。像Bell-alcatel、Lucent、華為等通信企業在開發產品時,Vxworks用得很多。但Vxworks因價格很高,所以一些小公司或小產品中往往用不起。目前很多公司都在往嵌入式Linux轉(聽說華為目前正在這樣轉)。但無論如何,Vxworks在一段長時間內仍是不可動搖的。與Vxworks類似的稍有名的實時操作系統還有pSOS、QNX、Nucleus等RTOS。
第二類、嵌入式Linux操作系統:Linux的前途除作為伺服器操作系統外,最成功的便是在嵌入式領域的應用,原因當然是免費、開源、支持軟體多、呼擁者眾,這樣嵌入式產品成本會低。Linux本身不是一個為嵌入式設計的操作系統,不是微內核的,並且實時性不強。目前應用在嵌入式領域的Linux系統主要有兩類:一類是專為嵌入式設計的已被裁減過的Linux系統,最常用的是uClinux(不帶MMU功能),目前占較大應用份額,可在ARM7上跑;另一類是跑在ARM
9上的,一般是將Linux
2.4.18內核移植在其上,可使用更多的Linux功能(當然uClinux更可跑在ARM
9上)。很多人預測,嵌入式Linux預計將占嵌入式操作系統的50%以上份額,非常重要。缺點是熟悉Linux的人太少,開發難度稍大。另外,目前我們能發現很多教材和很多大學都以ucOS/II為教學用實時操作系統,這主要是由於ucOS/II較簡單,且開源,非常適合入門者學習實時操作系統原理,但由於ucOS/II功能有限,實用用得較少,所以我院不將其作為教學重點,要學習就應學直接實用的,比如
uClinux就很實用。況且熟悉了Linux開發,不僅在嵌入式領域有用,對開發Linux應用軟體,對加深操作系統的認識也有幫助,可謂一舉多得。據我所知,目前Intel、Philip都在大搞ARM+LINUX的嵌入式開發,Fujitum則是在自己的處理器上大搞Linux開發。目前在嵌入式Linux領域,以下幾個方面的人特別難找,一是能將Linux移植到某個新型號的開發版上;二是能寫Linux驅動程序的人;三是熟悉Linux內核裁減和優化的人。我院在該嵌入式Linux方面的課程系列是:本科生操作系統必修課,然後是Linux程序設計選修課,最後是嵌入式Linux系統選修課。我院在Linux方面目前已有較強力量,魏老師和張老師熟悉Linux開發,金老師和唐老師熟悉Linux系統管理。
第三類、 Windows
CE嵌入式操作系統:Microsoft也看準了嵌入式的巨大市場,MS永遠是最厲害的,WinCE出來只有幾年時間,但目前已佔據了很大市場份額,特別是在PDA、手機、顯示儀表等界面要求較高或者要求快速開發的場合,WinCE目前已很流行(據說有一家賣工控機的公司板子賣得太好,以至來不及為客戶裁減WinCE)。WinCE目前主要為4.2版(.NET),開發平台主要為WinCE Platform Builder,有時也用EVC環境開發一些較上層的應用,由於WinCE開發都是大家熟悉的VC++環境,所以我院學過Windows程序設計課程的同學都不會有多大難度,這也是WinCE容易被人們接受的原因,開發環境方便快速,微軟的強大技術支持,WinCE開發難度遠低於嵌入式Linux。對於急於完成,不想拿嵌入式Linux冒險的開發場合,WinCE是最合適了(找嵌入式Linux的人可沒那麼好找的),畢竟公司不能像學生學習那樣試試看,保證開發成功更重要。根據不同的側重點,WinCE還有兩個特殊版本,一個是MS PocketPC操作系統專用於PDA上(掌上電腦),另一個是MS SmartPhone操作系統用於智能手機上(帶PDA功能的手機),兩者也都屬於WinCE平台。在PDA和手機市場上,除WinCE外,著名的PDA嵌入式操作系統還有Palm OS(因出現很早,很有名)、Symbian等,但在WinCE的強勁沖擊下,Palm和Symbian來日還能有多長?我院可能是全國高校中唯一一家開設專門的「Windows CE嵌入式操作系統「課程的學校,這主要是基於以下原因:我院本身前面便有Windows程序設計課程,同學學過VC++後再學WinCE,非常方便自然,通過學習WinCE同樣也可了解嵌入式軟體的一般開發過程,對Linux有懼怕心理的同學也很合適。很顯然,嵌入式Linux永遠不可能替代WinCE,而且將來誰占份額大還很難講,畢竟很多人更願意接受MS的平台,就像各國政府都在大力推LINUX已好長時間,但您能看到幾個在PC機上真正使用LINUX的用戶?據我觀察,目前在嵌入式平台上,LINUX是叫得最響,但還是WinCE實際用得更多.嵌入式LINUX可能更多地是一些有長遠產品計劃的公司,為降低成本而進行長遠考慮;
二是微軟亞洲研究院對我院WinCE課程的支持計劃,我們也很希望將來我院能有同學通過微軟的面試去實習。WinCE和多媒體(如MPEG技術)是微軟亞洲工程院目前做得較多的項目領域之一,他們很需要精通WinCE的人。
總結關於嵌入式操作系統類課程,若您覺得自己功底較深且能鑽研下去,則可去學嵌入式Linux;若您覺得自己VC++功底較好且想短平快地學嵌入式開發,則我院的WinCE課程是最好的選擇。
(3) 嵌入式開發的其它相關軟體課程
搞嵌入式若能熟悉嵌入式應用的一些主要領域,這樣的人更受企業歡迎。主要的相關領域包括:
A、數字圖像壓縮技術:這是嵌入式最重要最熱門的應用領域之一,主要是應掌握MPEG編解碼演算法和技術,如DVD、MP3、PDA、高精電視、機頂盒等都涉及MPEG高速解碼問題。為此,我院已預訂了一位能開設數字圖像處理課程的博士。
B、通信協議及編程技術:這包括傳統的TCP/IP協議和熱門的無線通信協議。首先,大多數嵌入式設備都要連入區域網或Internet,所以首先應掌握TCP/IP協議及其編程,這是需首要掌握的基本技術;其次,無線通信是目前的大趨勢,所以掌握無線通信協議及編程也是是很重要的。無結通信協議包括無線區域網通信協議802.11系列,Bluetooth,以及移動通信(如GPRS、GSM、CDMA等)。
C、網路與信息安全技術:如加密技術,數字證書CA等。我院有這方面的選修課。
D、DSP技術:DSP是Digital Signal
Process數字信號處理的意思,DSP處理器通過硬體實現數字信號處理演算法,如高速數據採集、壓縮、解壓縮、通信等。數字信號處理是電子、通信等硬體專業的課程,對於搞軟體的人若能了解一下最好。目前DSP人才較缺。如果有信號與系統、數字信號處理等課程基礎,對於學習MPEG編解碼原理會有很大幫助。
(4)嵌入式開發的相關硬體基礎
對於軟體工程專業的學生,從事嵌入式軟體開發,像數字電路、計算機組成原理、嵌入式微處理器結構等硬體課程是較重要的。另外,匯編語言、C/C++、數據結構和演算法、特別是操作系統等軟體基礎課也是十分重要的。我們的主要目地是能看懂硬體工作原理,但重點應是在嵌入式軟體,特別操作系統級軟體,那將是我們的優勢。
我們的研究生里有些是學電子、通信類專業過來的,有較好的模擬電路和單片機基礎,學嵌入式非常合適。嵌入式本身就是從單片機發展過來的,只是單片機不帶OS,而現在很多嵌入式應用越來越復雜,以至不得不引入嵌入式操作系統。另外,為追求更高速的信號處理速度,現在在一些速度要求較高的場合,有不少公司是將一些DSP演算法,如MPEG壓縮解壓縮演算法等用硬體來實現,這就涉及到HDL數字電路設計技術及其FPGA/IP核實現技術,這方面的人目前市場上也很缺。
Ⅱ 要學習嵌入式,現在需要學習哪些基本課程
嵌入式主要內容包括linux系統,C語言開發,資料庫等,JAVA部分的安卓開發等,學成後可以開發應用軟體的,內核開發,驅動開發等工作,做項目。目前國內零基礎的入門性課程較多,如果自己是軟體開發相關專業或有較好的基礎的,應該考慮星創客這樣的專為培養中高級工程師的課程
Ⅲ 嵌入式零基礎可以學嗎
零基礎也可以學,可以去全程面授的機構,更容易理解和系統的學習。
嵌入式學習基礎相關課程體系了解一下:
Linux系統
Linux Ubuntu操作系統安裝、使用、Linux常用命令、samba伺服器、SSH遠程登錄GCC編譯器、GDB調試器、VI編輯器
嵌入式C語言高級編程
1、C數據類型、控制語句
2、C程序結構設計、數組、函數、預處理:
3、指針及字元串操作
4、結構體、共用體、宏、枚舉
5、文件I/O操作
數據結構及演算法
1、數據結構之單向鏈表、雙向鏈表
2、數據結構之隊列、棧
3、數據結構之樹、圖
4、演算法之各種排序(選擇法、冒泡法、插入法等)
5、遞歸
6、演算法之二分查找
嵌入式環境配置與開發工具學習
1、Linux下項目管理工具Make以及Makefile工作原理及其編寫
2、Linux下shell腳本相關知識及其編寫
3、嵌入式開發環境的基本概念及其搭建
4、A53開發板介紹、設備使用、A53開發板與電腦通信、交叉編譯
GUI圖形界面開發
1、常用控制項——button、label、text edit等
2、常用布局方式——水平布局、垂直布局、固定布局、網格布局、相對布局等
3、常用事件及信號處理技術——信息回調、滑鼠、鍵盤事件等
4、時間編程、數據存儲、繪圖機制、定時器處理、多任務處理等
嵌入式Linux系統編程
1、Linux系統調用概念
2、進程相關概念、多進程實現多任務開發
3、進程間通信:無名管道、命名管道、信號、消息隊列、共享內存等
4、多線程實現多任務開發
5、多任務的同步互斥開發:互斥鎖、信號量
Ⅳ 嵌入式難學嗎課程都有哪些
學ARM搞純硬體不太好 結合嵌入式系統軟硬結合應該是你的方向 而嵌入式涉及很多專基礎課 大三應該有操作系統屬的課程再自己深入學習一兩個系統這樣用人單位應該會注意你了 還有微機原理是也要學的 不過學什麼x86可能沒什麼用處 關鍵是思想能用在ARM上就行
Ⅳ 嵌入式需要學什麼嵌入式需要學哪些課程和內容
重點也就是單片機[包括arm這類比較強大的]和FPGA了
專業基礎課就一大堆了,像樓上說的那些,其實還有更多。。。
不過如果像fpga這類東西學精了,可以自己設計處理器,然後開發專用的系統,再做編譯器,做配套的資料庫。。。。
不過一般似乎沒人這么玩,太累了。。。
Ⅵ 嵌入式系統從0學習需要哪些課程
首先你要學好c語言,精通最好。這是首要的要求!
其次要學的課程有:
操作系統專原理
硬體原理
硬體及接屬口技術
外圍設備
設備驅動
匯編語言
介面技術
如果你想從事嵌入式linux 那麼還要學習如下課程
linux操作系統原理
linux內核編程
linux設備驅動程序
linux網路編程
AT&T匯編程序設計
剩下的這些也是必須看的,不確定是哪本書,但必須是這方面的
嵌入式系統開發過程
嵌入式系統開發實例
嵌入式項目開發流程
其他的還需要 學一些嵌入式系統開發平台相關的東西
例如 arm7 arm9平台等等
也有幾個方向 如基於linux的 win ce的 等等
最後一條建議:學好 單片機
單片機是嵌入式系統最重要的基礎!
大一就有這樣的意識,不錯!
先到這里 手疼 呵呵
Ⅶ 想學嵌入式,需要學習哪些先修課呢
如果做嵌入式的應用軟抄件,可以不學硬體,沒有關系。學學linux、安卓之類的操作系統,QT之類的GUI等編程就可以了。
如果做驅動開發,就需要學一些控制器相關的硬體知識,其實只要好好看看用的控制器的數據手冊,學學操作系統也就可以了。
學軟體工程的不會考慮做嵌入式硬體吧,不用學模電之類的硬體課程了。
Ⅷ 大家好,什麼是嵌入式,要哪些基礎,想自學嵌入式需要學習那些課程希望行內人士回答我,廣告勿擾!!
本人從事嵌入式工程師大半年,我對嵌入式的理解就是:用為控制器去控制硬體電路,比如現在的物聯網,智能家居等都屬於嵌入式及。如樓上所說的,軟體基礎就是c語言,硬體基礎就是模數電。如果你真的想學,就別問是否需要聰明的大腦,只要用心,肯定都能學會。我就是大學畢業後才自己學的。希望對你能有幫助。
Ⅸ 要學習嵌入式,應學那些基礎課程(電子方面的)
要西,首先看你那個專業的!如果一點邊都不著,那學習起來難度是相當大的!
你問電子方面的,是想做嵌入式硬體嗎?
硬體方面:電路分析、數電模電、微機原理、介面技術、單片機、DSP、FPGA
軟體方面:C語言、單片機C51編程、數據結構、演算法(可選)
使用工具:Keil, protel或Altium Designer。
嵌入式開發,分為嵌入式硬體,嵌入式軟體。嵌入式軟體,又分為嵌入式系統軟體開發和嵌入式應用軟體開發。
對於嵌入式硬體來說,因為在中國,硬體是很落後的,基本都是使用的外國的晶元。做硬體的話,只是做一些介面電路的設計,這個很多嵌入式系統軟體工程師也會的。所以我個人認為,發展空間不是很大。
對於軟體開發,那需要學的很多了,自己網上搜,很多!