第一篇:嵌入式學習之路
1、必須認真學習一個操作系統
(例如從UC/OSII 到 Linux)
2、必須熟悉TCP/IP網絡協議
(現在的嵌入式產品與網絡的聯系越來越緊密,融入網絡是必然趨勢)
3、必須認真的學習一款CPU的工作原理
(例如現在地球人都知道的ARM)
4、必須親自設計一款嵌入式產品
從方案的選擇到原理圖的繪制,從PCB的繪制到硬件的調試。
學習內容
1.主流嵌入式微處理器的結構與原理 如:ARM PowerPC MIPS Motorola68k 2.
必須掌握一個嵌入式操作系統
如:VxWork uc/os II
uLinux Linux WinCE XPE 3.
必須熟悉嵌入式軟件開發流程 4.
至少做過一個嵌入式軟件項目
如:數字圖象壓縮技術----MEPG編解碼算法和技術 通信協議及編程技術----TC
TCP/IP和無線通信協議、無線局域網通信協議802.11 移動通信CD 網
網絡信息安全技術
書目開列 基礎
〈〈LINUX命令行、編輯器與SHELL編程〉〉 《linux命令大全.pdf》
編程
《C語言》第二版 譚浩強
《GNU Make 使用手冊(中譯版).pdf》 〈〈精通UNIX SHELL 編程〉〉 《LINUX編程24學時教程》 〈〈LINUX應用程序開發〉〉 〈〈LINUX程序設計〉〉 〈〈LINUX C函數庫參考手冊〉〉 <
原理
《數據結構》 〈〈算法導論〉〉 〈〈計算機組成原理〉〉 〈〈操作系統原理〉〉 〈〈離散數學結構〉〉
系統
《嵌入式實時操作系統uC/OS-!》 《linux內核完全注釋》
《understanding the linux kernel 2》 <
<
《Linux設備驅動程序》 〈〈ARM嵌入式LINUX系統構建與驅動開發〉〉
硬件
微機原理、數字電路原理、模擬電路原理、單片微機原理、常見的硬件接口技術 PROTEL,KEIL,AUTOCAD ARM嵌入式系統系列教程—北航 《ARM嵌入式系統基礎教程》 《ARM嵌入式實驗教程
(一)》 《ARM嵌入式實驗教程
(二)》 《ARM嵌入式實驗教程
(三)》 《ARM嵌入式系統學習指導》
《ARM嵌入式系統軟件開發實例
(一)》 《ARM嵌入式系統軟件開發實例
(二)》
網絡
〈〈TCP/IP詳解〉〉 〈〈UNIX網絡編程(第一卷)套接口API〉〉 〈〈UNIX網絡編程(第二卷)進程間通信〉〉 ///////////////////////////////////////////////////// 學習階段
第一階段
1.精通單片機,包括A51匯編語言與C51語言,常用的外圍電路,硬件接口 2.
精通電路分析,模電,數電 3.
精通PROTEL的使用
4.掌握LINUX基礎,包括LINUX命令,SHELL編程,C編程,GNU MAKE的使用 5.
分析UC/OS II的源代碼
用書
《單片機原理與接口技術》 〈〈MCS-51系列單片機實用接口技術〉〉 〈〈電路分析〉〉 〈〈模電〉〉 〈〈數電〉〉 〈〈信號與系統〉〉 〈〈PROTEL〉〉 〈〈LINUX命令行、編輯器與SHELL編程〉〉 《linux命令大全.pdf》
《GNU Make 使用手冊(中譯版).pdf》 〈〈精通UNIX SHELL 編程〉〉 《LINUX編程24學時教程》 〈〈LINUX應用程序開發〉〉 〈〈LINUX程序設計〉〉 〈〈LINUX C函數庫參考手冊〉〉
《嵌入式實時操作系統uC/OS-!》
第二階段
1.精通原理,包括計算機組成原理,操作系統原理,數據結構與算法
2.精通LINUX編程,包括串口通信編程,多進程程序,多線程,任務管理,步,網絡編程,QT GUI編程字符和塊設備驅動程序 建立文件系統等等 3.
再次分析UC/OS II的源代碼
用書
《數據結構》 〈〈算法導論〉〉 〈〈計算機組成原理〉〉 〈〈操作系統原理〉〉 〈〈離散數學結構〉〉 <
第三階段
1.再次深入分析操作系統 2.
分析LINUX內核
用書
〈〈operating system concepts>> 《操作系統設計與實現》
<
通信同 《linux內核完全注釋》
<
1.熟悉網絡 2.
ARM學習
用書
〈〈TCP/IP詳解〉〉 〈〈UNIX網絡編程(第一卷)套接口API〉〉 〈〈UNIX網絡編程(第二卷)進程間通信〉〉 ARM嵌入式系統系列教程—北航
第五階段
1.驅動開發
《Linux設備驅動程序》〈〈ARM嵌入式LINUX系統構建與驅動開發〉〉
軟件
精通51匯編及C51編程,具有獨立大型工程項目硬件底層編程經驗
熟悉Linux操作系統,能進行相關操作熟練使用Linux下的開發環境(如:vi,emacs,gcc,cvs,gdb,kDevelop等)進行網絡,數據庫、多媒體等開發精通嵌入式Linux下的C/C++及匯編語言開發,會使用軟件版本控制軟件,如CVS、VSS等熟悉MicroWindows,QT,MiniGUI等一種Linux圖形界面程序編程機制與技巧有Linux設備驅動編程、嵌入式操作系統的移植、Linux應用程序編寫
系統
熟悉Linux,Vxworks,WinCE,uCOS等至少一種嵌入式操作系統 熟悉嵌入式開發的基本流程
處理器
熟悉ARM7/ARM9處理器,要求在該處理器上編寫過代碼 熟悉SAMSUNG、PHILIPS、ATMEL等主流ARM應用設計 精通ARM ADS調試開發環境等工具
網絡通信
熟悉紅外、無線、以太網、GPRS/CDMA及RS485等多種接口的通訊 了解計算機通訊協議,有TCP/IP等協議編程能力
硬件
熟悉微機原理、數字電路原理、模擬電路原理、單片微機原理 精通常見的硬件接口技術
熟悉Protel,AutoCad等設計工具的使用 補充
要想成為高手中的高手,最好從鉆研如下領域修煉: 1,分析一種RTOS的源代碼--UCOS最容易;2,分析一種通訊協議棧的實現方式--TCP/IP最實用;3,精通一種DSP的開發集成環境--TI CCS2.1最優秀,精華在其內帶的RTOS;4,精通一種單片機的開發集成環境--keil C最經典;5,精通一種MCU的開發集成環境--ADS 1.2最流行;要想成為大師級人物再從如下領域開始修煉: 1,精通一種系統建模語言和工具--Telelogic tau SDL/UML suit最經典;2,精通一種算法仿真工具--Matlab simulink 最便宜;要想檢驗一下自己是否到達了至尊級人物,可以做如下的事:
動手搭建一套紅外或者藍牙通訊原型系統,模擬前端可以用現成的,基帶用DSP,主控用個32BMCU,DSP和協議軟件自己寫。當然不可能做全,做個子集就可以了。如果能到這個地步,打住吧,該改行去做市場了。做個一、二年市場,你不自己去創個業就太浪費了
第二篇:嵌入式學習路線
語言基礎 1.C 與 C++ A.《c reference》 B.《c++ 編程思想》 C.《effective c++》 D.《more effective c++》 E.《effective c++ stl》 2.軟件設計 A.《UML 2.0 Reference》 B.《設計模式-可復用的面向對象軟件的基礎》 C.《重構》 D.《修改代碼的藝術》 E.《面向模式的軟件體系結構》卷 1,卷 2,卷 3,卷 4,卷 5 3.Linux 開發基礎 A.《鳥哥的 linux 私房菜》 B.《GNU make reference》 C.《Shell 編程》 D.《unix 高級環境編程》 E.《linux kernel development》 F.《深入理解 Linux 內核》 G.《Linux 驅動程序開發》 H.《Unix 網絡編程》 I.《Linux 進程間通信》 4.嵌入式開發基礎 A.《ARM 體系結構》 B.《ARM 程序分析與設計》 C.《ARM 嵌入式系統基礎教材》周立功 D.《嵌入式操作系統μC/OS》 E.《嵌入式 Linux 基礎教材》 F.《嵌入式系統設計》 G.《嵌入式硬件設計》 H.《Qt4 圖形設計與嵌入式系統開發》 I.《嵌入式系統中的實時概念》 J.《實時設計模式》 5.專業選看 A.FPGA 設計 B.《高性能嵌入式計算》 C.數字圖像處理,視頻編解碼基礎 MPEG4,H.264,AVS D.Android,iphone,symbian 開發。
第三篇:嵌入式學習總結
嵌入式學習總結
一.基本信息...................................................................................................................1 二.嵌入式系統的組成..................................................................................................1 三.嵌入式的操作系統特點..............................................................................................1 四.嵌入式系統的文件系統..........................................................................................2 五.嵌入式文件系統的特點...........................................................................................2
一.基本信息
嵌入式系統是一種專用的計算機系統,作為裝置或設備的一部分。通常,嵌入式系統是一個控制程序存儲在ROM中的嵌入式處理器控制板。事實上,所有帶有數字接口的設備,如手表、微波爐、錄像機、汽車等,都使用嵌入式系統,有些嵌入式系統還包含操作系統,但大多數嵌入式系統都是是由單個程序實現整個控制邏輯。
二.嵌入式系統的組成
一個嵌入式系統裝置一般都由嵌入式計算機系統和執行裝置組成,嵌入式計算機系統是整個嵌入式系統的核心,由硬件層、中間層、系統軟件層和應用軟件層組成。執行裝置也稱為被控對象,它可以接受嵌入式計算機系統發出的控制命令,執行所規定的操作或任務。執行裝置可以很簡單,如手機上的一個微小型的電機,當手機處于震動接收狀態時打開;也可以很復雜,如SONY 智能機器狗,上面集成了多個微小型控制電機和多種傳感器,從而可以執行各種復雜的動作和感受各種狀態信息。
三.嵌入式的操作系統特點
(1)可裁剪性。支持開放性和可伸縮性的體系結構。
(2)強實時性。EOS實時性一般較強,可用于各種設備控制中。(3)統一的接口。提供設備統一的驅動接口。
(4)操作方便、簡單、提供友好的圖形GUI和圖形界面,追求易學易用。
(5)強穩定性,弱交互性。嵌入式系統一旦開始運行就不需要用戶過多的干預、這就要負責系統管理的EOS具有較強的穩定性。嵌入式操作系統的用戶接口一般不提供操作命令,它通過系統的調用命令向用戶程序提供服務。
(6)固化代碼。在嵌入式系統中,嵌入式操作系統和應用軟件被固化在嵌入式系統計算機的ROM中。(7)更好的硬件適應性,也就是良好的移植性
四.嵌入式系統的文件系統
通用操作系統的文件系統通常具有以下功能:
提供用戶對文件操作的命令。
提供用戶共享文件的機制。
管理文件的存儲介質。
提供文件的存取控制機制,保障文件及文件系統的安全性。
提供文件及文件系統的備份和恢復功能。
提供對文件的加密和解密功能。
五.嵌入式文件系統的特點
1兼容性。嵌入式文件系統通常支持幾種標準的文件系統,如FAT32、○JFFS2、YAFFS等。
2實時文件系統。除支持標準的文件系統外,為提高實時性,有些嵌入 ○式文件系統還支持自定義的實時文件系統,這些文件系統一般采用連續的方式存儲文件。
3可裁剪、可配置。根據嵌入式系統的要求選擇所需的文件系統,選擇 ○所需的存儲介質,配置可同時打開的最大文件數等。
4支持多種存儲設備。嵌入式系統的外存形式多樣了,嵌入式文件系統 ○需方便的掛接不同存儲設備的驅動程序,具有靈活的設備管理能力。同時根據不同外部存儲器的特點,嵌入式文件系統還需要考慮其性能、壽命等因素,發揮不同外存的優勢,提高存儲設備的可靠性和使用壽命。
總結:嵌入式是一門以應用為中心,以計算機為基礎,軟件可裁剪,適應應用系統對功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統。
第四篇:學習嵌入式心得
嵌入式心得體會
本人大學學的是電子信息科學與技術專業,其實這個專業和嵌入式沒有多大的關系,要說有關系就是簡單的講了下C語言語法,學完之后還不知道什么是C語言,只記住了,char,int,string等占幾個字節,if, for, while循環什么的,感覺也就能算一些小學就會的題目,全國計算機等級二級也就糊涂的過了。我這個專業沒學過C++,一開始不知道什么是向對象,什么叫面向過程,這可能讓大家笑話了。不過這說的是實話,大學的時候比較喜歡動手,喜歡硬件方面的東西,也喜歡看書。在大一的時候就聽學長說,單片機很難學,在沒事的時候就從圖書管借了本關于51的書,一開始還真是不怎么懂,然后硬著頭皮去看,當我把51的結構看完了,就不像一開始那樣一頭霧水了,自己在紙上把51的結構圖默畫一遍,然后再把各個寄存器功能寫一下,各個功能口的結構也畫一遍,然后就不覺得51有什么難了。其實有些時候不是這個東西你不會,而是在不會的時候自己先告訴自己這個太難了,自己先放棄了。我們學習51芯片,是為了以后的打基礎,知道是怎么通過配置寄存器來實現功能。
大二下學期的時候,我們開了51的課,這個課幾乎就沒怎么去,因為我認為沒有必要去聽自己會的東西了。后來聽別人說avr的資源會比51的豐富的很多,所以就想試試,看看有什么難的,就從網上買了本馬潮老師《AVR單片機嵌入式系統原理與應用實踐》,一邊看書,一邊想自己畫一個板了,一開始想實現一個點陣屏,實現滾動效果,后來想想做個板也花不少錢呢,為什么不多加一些功能呢,還能多學到些知識,所以就加了溫感,紅外,鐵電存儲器等并把所有的擴展口都擴展了出來,備以后用,那時還挺自豪的呢,同學們都很羨慕,不過現在想想其實也沒什么了。
大學也聽說過嵌入式這個詞,不過不太明白是什么意思,09年的時候從網上找到中嵌視頻,有四張DVD(大約13G),下載下來后,從頭到尾的看了一遍,沒什么印象,只記得講一些不知所云的函數,然后莫名其妙的講怎么使用那個44b0的開發板,不過聽完了,還是有很大收獲的,就有一種想裝一個linux的沖動,我是大二下學期才有的自己電腦,不過電腦的配置比較低,1g內存,跑虛擬機就像個蝸牛,所以就想著怎么才能裝個linux,自己用XP習慣了,如果全換了又舍不得,那時從書上知道linux的文件系統和windows不一樣,只有一個根分區,所以也害怕一裝linux全盤就被格式化了,不過最后還是欲望戰勝了擔心,買了張redhat 9的光盤,小心的裝這個系統,里邊的英文也不是太難,還是知道大概意思的,所以一步步的裝,最后裝到我的硬盤的最后空間,重新啟動,竟可以選擇進入哪一個系統了,從這之后,自己就不害怕怎么裝系統了,應了那句言,紙上得來終覺淺,絕知此事要躬行。所以我認為,買一個開發板是完全有必要的,拿到實物操作一下就不會感覺太抽象了。
后來也想學學arm,但不知道arm是什么東西,所以就買了本《從51到arm》,講的是關于arm的大體結構,看完后感覺,原來arm就是一個速度更快,接口更豐富的單片機啊。如果想做linux設備驅動的同學應該對arm硬件有一些了解。如果對驅動不感興趣,完全沒有必要去看。交叉編譯器會幫我們做好這些事情,他比我們更了解arm結構。
大三下學期開始準備考研了,所以自己這些興趣就先放下了,報的北郵的信通學院通信專業,當時就是想一定要上個好學校好專業,也沒想太多,結果考了的成績差了點,沒有被錄取,也不想調劑一個二流的學校,然后就參加工作了,工作中每天都用的到開發板,當我看到一個小板上還可以跑系統的時候感覺很不可思議,以為要很大工程。后來邊工作邊學習,每天都要看電腦看到眼發疼,晚上也都差不多十二點時才睡覺。感覺到累,不過也感覺到自己在進步。
閑話有點多了,說了很多都是自己大學那點破事。
聽很多的初學者說不知道從哪里開始,學習嵌入都要學哪些東西,從網上搜了一下,一大堆的東西要學,一下就推薦十幾本書,說看完這本書怎么怎么樣,看完那本書怎么怎么樣,一下子就給初學者給嚇住了,其實完全沒必要把網上的那些東西全部看一遍,那樣又費時,又感覺工程太大,讓初學者沒有信心去把每一種都看完。網上說的些方面都要知道,不一定全部都掌握,我們可以退成求其次,每一個都知道一些,當然會的越多越好。今天學點這個明天學點那,換著樣來也不會覺得煩。而且還能感覺到每天都有收獲。
下面給嵌入式初學者一些自己的我個人建議。1嵌入式涉及到很多的基礎知識:
c語言,關于C語言要知道基本的語法,什么是結構體,什么是共用體,有什么區別,不用強記一些二級考的東西,因在實際中用的很少。
c++要知道什么是類,怎么定義,繼承,接口,要深刻理解,當然基本語法也是必不可少的。
操作系統原理也應該知道基本的原理的,我記得我大學沒這個課還是去電信學院蹭別的專業的課呢,后來學習發現很多的東西都是在這個課上學到的。什么時間片啊,任務調度啊,都是在那里知道的。
Linux基本命令的使用(vi編輯器必須會用,因為在終端改文件的時候只能用這個),我們現在很多的人都習慣用鼠標了,很少用到命令,我們學習嵌入linux可要改改這個習慣了,linux用命令操作一是效率高,二是功能非常強大,遠非圖形界面能比的了的,其實我們用圖形界面的操作都要轉化為命令傳給硬件的。
Linux文件系統的管理要清楚,哪個目錄存放是什么東西,有什么用,文件權限管理等 Shell編程也要了解一些,在這給大家推薦一個教程,周朝劍的 shell編程,也就七八講吧,講的很全面。初學者看前4講就可以了。
Linux設備驅動的架構要了解,初學者可以以飛凌的OK6410開發板上的led驅動分析一下,結合原理圖和linux設備驅動相關書籍把每一行代碼都分析明白。關于驅動給大家推薦一本書《LINUX社備驅動程序》中國電力出版社出版的,很經典的,初學者看可能看不太明白,不過要堅持看,最次也得把前6章看完了。看書不要希望一次就會,一次就明白是什么意思,也不要死記硬背,看不明白也沒關系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀linux內核源代碼,看一些自己把頭撞破也想不明白的事,會打擊初學者的積極性,要循序漸進,今天學個做個led,明天做個串口,后天說不定就做硬件編解碼了。
3、你可以不接受培訓,但是不能不買開發板。如果你想學習嵌入式一定要買塊學習板,現在的開發板很便宜了,給我們初學者減輕了很多經濟負擔。看再多的視頻,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學到東西,記得我第一次寫led的驅動,想自己試一下,網上也有人寫過相關的代碼,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。
還有關于培訓,現在的培訓機構很多,講的也不錯,老師也很好,但是有一個問題,太集中了,而且學生動手的機會也不太多,記得我們公司還招了一個在北京某個培訓機構培訓半年的員工呢,花了一萬多,來了之后也沒感覺有多高,問他都學了什么,也就是我前邊說的那些基礎知識,很多的東西還是不知道的,照著書弄個helloworld模塊驅動兩天沒搞定。不是培訓不好,但我個人見解效果并不是很好。記住:只有自己動手做過的東西才是自己的。
現在買一塊開發板很便宜,飛凌的OK6410的開發板就不錯,源碼完全開放,而且資料也很豐富,完全能滿足初學者學習用,有人說友善的板子也不錯,我個人覺得友善的板子不
錯,但是不適合初學者,因為他的很多的東西是不給代碼的,用過友善的板子的同學經常有這樣的痛苦,想學一個東西,去找他的代碼的時候,卻找不到,很多友善提供的代碼中很多的都是封裝好的,只提供給客戶一個庫,初學者想要找代碼的時候就不知道怎么辦了。不要好高騖遠,要腳踏實地
對于初學者,還有一點小建議,我們拿到一個開發板,很興奮也很激動,想法自然也很多,想用開發板實現自己的這個想法,實現那個想法,然后又不知道從何下手,然后就去論壇中發一個貼,“那個什么什么怎么實現啊,哪位大俠能詳細說一下啊,跪求!”然后等著別人去回復。見沒人回復就抱怨。有想法是好的,我們要實現自己的想法也是有前提的,首先,我們對這部分知識了解嗎?如果不了解就去google一下(最好別用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到問題,再去發貼問,這樣也顯得咱們有水平。比如自己連串口是什么都不太清楚呢,就問串口通信怎么做啊,就是人家把代碼給咱,咱也不明白是怎么回事啊。多看代碼,多寫代碼
見多識廣,熟能生巧。多看代碼,要從代碼中讀出代碼的意思來。自己平時也要多寫代碼,多練習(這一點我做的不好,寫的少)。
寫完已經晚上兩點了,思路有些亂,有些也是個人的見解,在有些人看來可能是錯誤的,每個人有每個人的學習方法,但是我們的目的只有一個——希望我們學到更多的知識。
第五篇:嵌入式學習心得體會(范文)
嵌入式學習心得體會
BAKYANNMYRADOV
20*** 這學期才接觸嵌入式系統感覺還稱不上入門,我通過學習知道了嵌入式的發展前景很大,各個領域都用到了嵌入式,學好嵌入式不愁沒飯吃。
廣義上講,凡是帶有微處理器的專用軟硬件系統都是嵌入式系統。如各類單片機和DSP系統。從狹義上講,那些使用嵌入式微處理器構成獨立系統,具有自己操作系統,具有特定功能,用于特定場合的專用軟硬件系統稱為嵌入式系統。嵌入式系統由嵌入式硬件與嵌入式軟件組成;嵌入式硬件以芯片、模板、組件、控制器形式埋藏于設備內部。理解“嵌入”的概念主要從三個方面上來理解。
1、從硬件上,將基于CPU的處圍器件,整合到CPU芯片內部,比如早期基于X86體系結構下的計算機,CPU只是有運算器和累加器的功能,一切芯片要造外部橋路來擴展實現,象串口之類的都是靠外部的16C550/2的串口控制器芯片實現,而目前的這種串口控制器芯片早已集成到CPU內部,還有PC機有顯卡,而多數嵌入式處理器都帶有LCD控制器,但其種意義上就相當于顯卡。比較高端的ARM類Intel Xscale架構下的IXP網絡處理器CPU內部集成PCI控制器(可配成支持4個PCI從設備或配成自身為CPI從設備);還集成3個NPE網絡處理器引擎,其中兩個對應于兩個MAC地址,可用于網關交換用,而另外一個NPE網絡處理器引擎支持DSL,只要外面再加個PHY芯片即可以實現DSL上網功能。IXP系列最高主頻可以達到1.8G,支持2G內存,1G×10或10G×1的以太網口或Febre channel的光通道。IXP系列應該是目標基于ARM體系統結構下由intel進行整合后成Xscale內核的最高的處理器了。
2、從軟件上前,就是在定制操作系統內核里將應用一并選入,編譯后將內核下載到ROM中。而在定制操作系統內核時所選擇的應用程序組件就是完成了軟件的“嵌入”,比如WinCE在內核定制時,會有相應選擇,其中就是wordpad,PDF,MediaPlay等等選擇,如果我們選擇了,在CE啟動后,就可以在界面中找到這些東西,如果是以前PC上將的windows操作系統,多半的東西都需要我們得新再裝。
3、把軟件內核或應用文件系統等東西燒到嵌入式系統硬件平臺中的ROM中就實現了一個真正的“嵌入”。
嵌入式系統分為4層,硬件層、驅動層、操作系統層和應用層:
1、硬件層,是整個嵌入式系統的根本,如果現在單片機及接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統的硬件層走起來相對容易,硬件層也是驅動層的基礎,一個優秀的驅動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設計的,同時還要對操作系統內核及其調度性相當的熟悉的。但硬件平臺是基礎,增值還要靠軟件。硬件層比較適合于,電子、通信、自動化、機電一體、信息工程類專業的人來搞,需要掌握的專業基礎知識有,單片機原理及接口技術、微機原理及接口技術、C語言。
2、驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統內核十分的精通,以便其所寫的驅動程序在系統調用時,不會獨占操作系統時間片,而導至其它任務不能動行,不懂操作系統內核架構和實時調度性,沒有良好的驅動編寫風格,按大多數書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到,這樣所寫的驅動在應用調用時就如同windows下我們打開一個程序運行后,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行后來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統內核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統四層中可是最高的。
驅動層比較適合于電子、通信、自動化、機電一體、信息工程類專業尤其是計算機偏體系結構類專業的人來搞,除硬件層所具備的基礎學科外,還要對數據結構與算法、操作系統原理、編譯原理都要十分精通了解。
作系統,或者寫出缺胳膊少腿的操作系統來,這部分工作大都由驅動工程師來完成。操作系統是負責系統任務的調試、磁盤和文件的管理,而嵌入式系統的實時性十分重要。據說,XP操作系統是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女媧Hopen操作系統估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。
3、操作系統層,對于操作系統層目前可能只能說是簡單的移植,而很少有人來自已寫操
作系統,或者寫出缺胳膊少腿的操作系統來,這部分工作大都由驅動工程師來完成。操作系統是負責系統任務的調試、磁盤和文件的管理,而嵌入式系統的實時性十分重要。據說,XP操作系統是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女媧Hopen操作系統估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。
4、應用層,相對來講較為容易的,如果會在windows下如何進行編程接口函數調用,到操作系統下只是編譯和開發環境有相應的變化而已。如果涉及Java方面的編程也是如此的。嵌入式系統中涉及算法的由專業算法的人來處理的,不必歸結到嵌入式系統范疇內。但如果涉及嵌入式系統下面嵌入式數據庫、基于嵌入式系統的網絡編程和基于某此應用層面的協議應用開發(比如基于SIP、H.323、Astrisk)方面又較為復雜,并且有難度了。通過網上查詢我發現目前國內外這方面的人都很稀缺。一方面,是因為這一領域入門門檻較高,不僅要懂較底層軟件(例如操作系統級、驅動程序級軟件),對軟件專業水平要求較高(嵌入式系統對軟件設計的時間和空間效率要求較高),而且必須懂得硬件的工作原理,所以非專業IT人員很難切入這一領域;另一方面,是因為這一領域較新,目前發展太快,很多軟硬件技術出現時間不長或正在出現(如ARM處理器、嵌入式操作系統等),掌握這些新技術的人當然很少。嵌入式人才稀缺,身價自然就高,越有經驗價格就越高。其實嵌入式人才稀少,根本原因可能是大多數人無條件接觸,這需要相應的嵌入式開發板和軟件,另外需要有經驗的人進行指導開發流程。我們軟件系的人學習嵌入式,顯然應偏重于嵌入式軟件,特別是嵌入式操作系統方面。對于搞嵌入式軟件的人,最重要的技術顯然是掌握主流嵌入式微處理器的結構與原理,必須掌握一個嵌入式操作系統,必須熟悉嵌入式軟件開發流程并至少做過一個嵌入式軟件項目。
然而我們都沒有做過一個嵌入式軟件項目,甚至連嵌入式的開發流程我也不清楚,我只了解了使用簡單工具做一個簡單的實驗。只有去專研才能在嵌入式的領域站住腳,只有知道的比別人多才會更有競爭力。通過網上了解,我查詢了嵌入式的入門和所需要的知識,其中C語言尤為重要,不管是做嵌入式軟件還是硬件開發的人員,對C語言的掌握這個是必需的,特別是對于以后致力于嵌入式軟件開發的人,現在絕大部分都是用C語言。其次,應該對操作系統有所了解,這對你對硬件和軟件的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬件的;知道了c語言和操作系統之后,再來看看嵌入式系統,我們主要學的是ARM,用的是ARM7,深入理解ARM不是件容易的事,只有在知道ARM相關知識之后才能稱得上嵌入式已經入門了。與嵌入式有關的知識我也學了不少就是不能夠綜合在一起運用,組成原理,數據結構,操作系統,C++,這3門與嵌入式密切相關的學科都系統的學了一遍,但由于長時間沒用到都有點忘記了,從網上得知嵌入式的學習與這些書有很大關系之后,我把嵌入式與以前學過的知識結合起來發現嵌入式的實驗中很多都是共通的,我對嵌入式有了初步的理解。
我以為學習嵌入式應該分為2個部分:軟件和硬件。關于硬件方面我接觸到了數字電路教材和模擬電路方面的知識,但由于沒有嵌入式CPU很難親自動手來實現嵌入式的相關理論;嵌入式入門則需要不斷地實驗與分析,我只在實驗課時做幾個與所給的程序相關的小程序來實現一下;而軟件方面則學過C語言,里面通常的語法曾今熟悉過;我通過下列方法來適應C語言在嵌入式中應用:首先重新翻看了下C的教材,看了些常見的語法,接著在編譯器的角度來看待C,編譯原理我剛學過,其中將高級語言與低級語言的翻譯感覺在嵌入式中用到了很多;最后沖硬件的角度來看待C。嵌入式的核心包括嵌入式操作系統,嵌入式軟件開發平臺及工具以及嵌入式應用軟件。這些決定怎樣才能開發一個好的嵌入式系統。下面談談我了解的嵌入式的相關知識與應用:
首先,嵌入式系統是以應用為中心,以計算機技術為基礎,且軟硬件可裁減,適應應用系統對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統。嵌入式有如下幾個突出的有點1.系統內核小,2專用性強,3系統精簡4高實時性OS5嵌入式系統的應用程序可以沒有操作系統直接在芯片上運行,6嵌入式系統需要開發工具和環境。
嵌入式系統是近幾年才風靡起來的,但是這個概念并非新近才出現。從20世紀七十年代單片機(最早的單片機是Intel公司的 8048,出現在1976年)的出現到今天各式各樣的嵌入式微處理器,微控制器的大規模應用,嵌入式系統已經有了近30年的發展歷史。經過30年的發展,嵌入式技術已經日趨成熟,在中國嵌入式機一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統以及用戶的應用程序等四個部分組成,用于實現對其他設備的控制、監視或管理等功能。其次,嵌入式系統無疑是當前最熱門最有發展前途的IT應用領域之一。嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。嵌入式系統是軟硬結合的學科,通常有兩類人會去專研嵌入式:一類是學電子工程、通信工程等偏硬件專業的,另一類是學軟件、計算機專業出身的人,主要從事嵌入式操作系統和應用軟件的開發。我是軟件專業的學習嵌入式,越是智能設備越是復雜系統,軟件越起關鍵作用,而且這是目前的趨勢。嵌入式應用在很多方面,具體的可以分為工業控制,交通管理,信息家電,家庭智能管理系統,POS網絡及電子商務,環境工程與自然,機器人,機電產品方面應用等方面。其中目前在服務領域,如遠程點菜器等已經體現了嵌入式系統的優勢。例外還有很多地方用到了嵌入式系統,最近飛利浦和ARM共同推出32位RISC嵌入式控制器,適用于工業控制,采用最先進的0.18微米CMOS嵌入式閃存處理技術,操作電壓可以低至1.2伏,它還能降低25%到30%的制造成本,在工業領域中對最終用戶而言是一套極具成本效益的解決方案。那么該如何學好嵌入式我覺得應該從以下幾點入手:
首先C語言,這個是毋庸置疑的,不管是做嵌入式軟件還是硬件開發的人員,對C語言的掌握這個是必需的,特別是對于以后致力于嵌入式軟件開發的人,現在絕大部分都是用C語言,你說不掌握它可以嗎?至于如何學習C語言,我想這些基礎的知識每個人都有自己的方法,關鍵要去學習,看書也好,網上找些視頻看也好。很多人會問,C語言要學到怎么樣,我覺得這沒有標準的答案。我想至少你在明白了一些基礎的概念后,就該寫代碼了,動手才是最重要的,當你動手了,遇到問題了,再反過來學習,反過來查查課本,那時的收獲就不是你死看書能得到的。
其次,應該對操作系統有所了解,這對你對硬件和軟件的理解,絕對有很大的幫助。應該把系統的管理理解一下,比如進程、線程,系統如何來分配資源的,系統如何來管理硬件的,當然,不是看書就能把這些理解透,如果不是一時能理解,沒關系,多看看,結合以后的項目經驗,會有更好的理解的。
還有應該學習下linux或者wince下的編程,這些對以后做應用的編程很有幫助,當然,如果做手機的話,那可以學習MTK、塞班、Android等操作系統,Android是以后發展的趨勢,現在很熱門,Android也是基于linux系統封裝的,所以建議先學習下linux。
還有,應該學習下單片機或者ARM或者MIPS,很多人說我沒有單片機的經驗,直接學ARM可以嗎?我覺得那完全沒有問題的,當然如果你學習過單片機,那最好不過了,以后學習ARM就更簡單了。
最后如果你把以上的知識都有所了解后,就該去閱讀閱讀一些優秀的代碼,比如結合arm芯片手冊學習去學習下UBOOT的源代碼,了解下最小的系統開發,那對你整個嵌入式開發的非常有幫助的,可以的話,還可以學習下linux的源代碼,當然如果你直接閱讀2.6的代碼,我想你會很痛苦的,可以先看看linux代碼早期的版本,比如0.12 的代碼等等,麻雀雖小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。以上就是我在本學期學習嵌入式后的心得及感想。