嵌入式學習心得_第1頁
嵌入式學習心得_第2頁
嵌入式學習心得_第3頁
嵌入式學習心得_第4頁
嵌入式學習心得_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

嵌入式學習心得如何學習嵌入式系統(tǒng)(基于ARM平臺)1/―1—

刖百網(wǎng)上看到眾多網(wǎng)友都問了關于嵌入式系統(tǒng)方面的很多問題,很多都可在這里找到答案,盼望我的這篇文章能給他們以啟發(fā)。也請大家不要輕易轉載。一、嵌入式系統(tǒng)的概念著重理解"嵌入"的概念主要從三個方面上來理解。1、從硬件上,將基于CPU的處圍器件,整合到CPU芯片內(nèi)部,比如早期基于X86體系結構下的計算機,CPU只是有運算器和累加器的功能,一切芯片要造外部橋路來擴展實現(xiàn),象串口之類的都是靠外部的16C550/2的串口掌握器芯片實現(xiàn),而目前的這種串口掌握器芯片早已集成到CPU內(nèi)部,還有PC機有顯卡,而多數(shù)嵌入式處理器都帶有LCD掌握器,但其種意義上就相當于顯卡。比較高端的ARM類IntelXscale架構下的IXP網(wǎng)絡處理器CPU內(nèi)部集成PCI掌握器(可配成支持4個PCI從設施或配成自身為CPI從設施);還集成3個NPE網(wǎng)絡處理器引擎,其中兩個對應于兩個MAC地址,可用于網(wǎng)關交換用,而此外一個NPE網(wǎng)絡處理器引擎支持DSL,只要外面再加個PHY芯片即可以實現(xiàn)DSL上網(wǎng)功能。IXP系列最高主頻可以達到1.8G,支持2G內(nèi)存,lGxlO或10Gxl的以太網(wǎng)口或Febrechannel的光通道。IXP系列應當是目標基于ARM體系統(tǒng)結構下由intel進行整合后成Xscale內(nèi)核的最高的處理器了。2、從軟件上前,就是在定制操作系統(tǒng)內(nèi)核里將應用一并選入,編譯后將內(nèi)核下載到ROM中。二、Linux命令是必需學習的:雖然Linux桌面應用進展很快,但是命令在Linux中依舊有很強的生命力。Linux是一個命令行組成的操作系統(tǒng),精髓在命令行,無論圖形界面進展到什么水平這個原理是不會變的,Linux命令有很多強大的功能:從簡潔的磁盤操作、文件存取、到進行簡單的多媒體圖象和流媒體文件的制作。舉一個例子:Linux的常用命令find,察看man文檔,初學者肯定會覺得太簡單而不原意用,但是你一旦學會就爰不釋手.它的功能實在太強了,在協(xié)作exec參數(shù)或者通過管道重定向到xargs命令和grep命令,可以完成特別簡單的操作,假猶如樣的操作用圖形界面的工具來完成,唯恐要多花十幾陪的時間.不同版本的Linux命令數(shù)量不一樣,這里筆者把它們中比較重要的和使用頻率最多的命令,依據(jù)它們在系統(tǒng)中的作用分成幾個部分介紹給大家,通過這些基礎命令的學習我們可以進一步理解Linux系統(tǒng):安裝和登錄命令:login、shutdown,halt、rebootsmount、amount、chsh文件處理命令:file、mkdir、grep、dd、find、mv、Is、diff、cat、In系統(tǒng)管理相關命令:df、top、free、quota、at、Ip、adduser,groupaddkillscrontab、tar、unzip、gunzipslast網(wǎng)絡操作命令:ifconfig、ip、ping、netstat、telnetftp、route,rloginrepxfingerxmailsnslookup系統(tǒng)平安相關命令:passwd、su、umask、chgrp、chmod、chownschattr.sudo,pswho三、選擇一本好的工具書:工具書對于學習者而言是相當重要的。一本錯誤觀念的工具書卻會讓新手整個誤入歧途。目前國內(nèi)關于Linux的書籍有很多不過精品的不多,筆者劇烈建議閱讀影印本的"O'Reilly原版Linux圖書",而且出版社還供應了一個特別好的路線圖:四、選擇一個適合你的Linux發(fā)行版本:目前全球有超過1百多個Linux發(fā)行版本,在國內(nèi)也能找到十幾個常見版本。如何選擇請依據(jù)你的需求和力量,RedhatLinux和DebianLinux是網(wǎng)絡管理員的抱負選擇。對于英語不是很好的讀者紅旗Linux、中標Linux這些中文版本比較適合?,F(xiàn)在一些Linux網(wǎng)站有一些Linux版本的免費下載,這里要說的是并不適合Linux初學者。五、養(yǎng)成在命令行下工作:肯定要養(yǎng)成在命令行下工作的習慣,要知道X-window只是運行在命令行模式下的一個應用程序。在命令行下學習雖然一開頭進度較慢,但是熟識后,您將來的學習之路將是以指數(shù)增加的方式增長的。從網(wǎng)管員來說,命令行實際上就是規(guī)章,它總是有效的,同時也是敏捷的。即使是通過一條緩慢的調制解調器線路,它也能操縱幾千公里以外地遠程系統(tǒng)。六、選擇一個適合你的Linux社區(qū):隨著Linux應用的擴展,消失了不少Linux社區(qū)。其中有一些特別優(yōu)秀的社區(qū):(國內(nèi)最高水平GNU站點\(中國最大的Unix技術社區(qū)),但是這幾個論壇往往是Linux高手的舞臺,假如在研討高級技巧的論壇張貼特別初級的問題常常會沒有結果。七、勤于實踐:要增加自己Linux的技能,只有通過實踐來實現(xiàn)了。所以,趕快找一部計算機,趕快安裝一個Linux發(fā)行版本,然后進入精彩的Linux世界。信任對于你自己的Linux力量必定大有斬獲。此外,人腦不像計算機的硬盤一樣,除非硬盤壞掉了或者是資料被你抹掉了,否則儲存的資料將永久而且立即的記憶在硬盤中。在人類記憶的曲線中,你必需要不斷的重復練習才會將一件事情記得比較熟。同樣的,學習Linux也一樣,假如你無法常常學習的話,學了后面的,前面的忘了。你對Linux命令熟識后你可以開頭搭建一個小的Linux網(wǎng)絡,這是最好的實踐方法。Linux是網(wǎng)絡的代名詞,Linux網(wǎng)絡服務功能特別強大,不論是郵件服務器、Web服務器、DNS服務器等都特別完善。當然你不需搭建全部服務,可以漸漸來。需要說明的是這個Linux網(wǎng)絡對于初學者有兩三臺計算機即可,其中一臺計算機最好安裝Windows系統(tǒng)。自己多動手,不要非要等著別人幫你解決問題。八、如何得到聯(lián)機關心:和私有操作系統(tǒng)不同,各個Linux的發(fā)行版本的技術支持時間都較短,這對于Linux初學者是往往不夠的。其實當你安裝了一個完整的Linux系統(tǒng)后其中已經(jīng)包含了一個強大的關心,只是可能你還沒有發(fā)覺和使用它們的技巧。.主流Linux發(fā)行版都自帶特別具體的文檔(包括手冊頁和FAQ),從系統(tǒng)安裝到系統(tǒng)平安,針對不同層次的人的詳盡文檔,認真閱讀文檔后40%問題都可在此解決。.查閱經(jīng)典工具書和Howto,特殊是Howt。是全球數(shù)以萬計的Linux、Unix的閱歷總結特別有參考價值通常40%的問題同樣可以解決。九、在Linux論壇獵取關心:假如上面的措施沒有解決問題,此時你就需要Linux社區(qū)的關心了。Linux的使用者一般都是專業(yè)人士,他們有著很好的電腦背景且情愿幫助他人,Linux高手更具有鼓舞新手的文化精神。如何在Linux社區(qū)獲得關心,需要說明的是你要有周全的思索,預備好你的問題,不要草率的發(fā)問,否則只會得到到草率的回答或者根本得不到任何答案。越表現(xiàn)出在尋求關心前為解決問題付出的努力,你越能得到實質性的關心。最好先搜尋一下論壇是否有您需要的文章。這樣可以獲得事半功倍的效果。下面筆者在論壇看到的一個好問題:"安裝紅旗4.0后,系統(tǒng)紫光輸入法自帶的雙拼方案和我的習慣不一樣,如何自定義雙拼方案解決?感謝?”這個問題很簡練,筆者五分鐘后就給出了解決方法:"首先備份原文件到其他名目,然后刪掉/usr/local/unispim/unispimsp.ksc編輯/usr/local/unispim/unispimsp.ini,最終重啟動計算機,生成新的unispimsp.ksc"此外得到回復后假如問題解決,向關心過你的人發(fā)個說明,讓他們知道問題是怎樣解決的,這種補充有助于他人在郵件列表/新聞組/論壇中搜尋對你有過關心的完整解決方案,這可能對他們也很有用。下面看看一個讓人無法回答的問題:"救命各位高手,向你們請教一些問題:如何在Linux下配制HTTP、FTP、Samba.DNS、DHCP、Sendmail服務器,感謝"這樣的問題我想即使Linux高手也很難快速精確 精練的回答你。你需要供應精確有效的信息。這并不是要求你簡潔的把成噸的出錯代碼或者數(shù)據(jù)完全轉儲摘錄到你的提問中。假如你有浩大而簡單的測試條件,盡量把它剪裁得越小越好??赡苣銜龅竭@種狀況,對于一個問題會消失不同內(nèi)容回答,這時你需要通過實踐來驗證。此外把這個問題放在其他Linux社區(qū)懇求關心也是一種選擇。假如得不到答案,請不要以為我們覺得無法關心你。有時只是看到你問題的人不知道答案罷了。這時換一個社區(qū)是不錯的選擇。此外發(fā)問的時候肯定要留意到某些禮節(jié)。由于Linux社區(qū)是一個松散的組織、也不擔當回復每個帖子的義務。它不是技術支持。十、用Unix思維學習Linux:Linux是參照Unix思想設計的,理解把握Linux必需依據(jù)Unix思維來進行。思想性的轉變比臨時性的技術提高更有用,由于他能關心你加快學習速度。十一、學習專業(yè)英文:假如你想深化學習Linux,看不懂由于文檔實在是太難了。寫的最好的,最全面的文檔都是英語寫的,最先發(fā)布的技術信息也都是用英語寫的。即便是非英語我國的人發(fā)布技術文檔,也都首先翻譯成英語在國際學術雜志和網(wǎng)絡上發(fā)表。安裝一個新的軟件時先看README,再看INSTALL然后看FAQ最終才動手安裝,這樣遇到問題就知道為什么。假如說明文檔不看,結果出了問題再去論壇來找答案反而鋪張時間。十二、最終是Linux學習的路線圖:.把握至少50個以上的常用命令。.熟識Gnome/KDE等X-windows桌面環(huán)境操作。.把握.tgz、.rpm等軟件包的常用安裝方法.學習添加外設,安裝設施驅動程序(比如網(wǎng)卡).熟識Grub/Lil。引導器及簡潔的修復操作。.熟識Linux文件系統(tǒng)和名目結構。.把握vi,gcc,gdb等常用編輯器,編譯器,調試器。Linux下編程,主要是選用一個文本編輯工具(如vieclipsenanogedit等)編寫,再用GCC編譯鏈接,最終用gdb調試。.理解shell別名、管道、I/O重定向、輸入和輸出以及shell腳本編程。.學習Linux環(huán)境下的組網(wǎng)。十三、深化學習linux的大致方向.文件系統(tǒng):linux的相關的系統(tǒng)設定,各種linux環(huán)境下的軟件的使用與調試。這類學問是基礎,但并不簡潔,學好了,肯定可以當講師的。.網(wǎng)絡服務:linux這種類UNIX的操作系統(tǒng)其另一個作用域是網(wǎng)絡服務器。linux本身自帶幾乎全部網(wǎng)絡上的用得到的服務,可以充當任何網(wǎng)絡服務器,比如DNS、DHCP、ftp、NFS、Proxy等等。而且其特點是,全部這些服務的配置與設定都可以通過文本形式的配置文件進行配置。所以學好linux下網(wǎng)絡服務的配置與使用,完全可以當CIO(首席信息官)了,由于已經(jīng)具備linux網(wǎng)絡工程師的力量了。3.軟件設計:linux是開源的大環(huán)境,也是較原始的編成環(huán)境,其下的C/C++、PHP等都是比windows下更純語言。但linux下高級的開發(fā)環(huán)境較少,不像VC等工具好使,所以linux下的軟件工程師要具備的學問更多。要是學好了linux下的軟件設計,也算編成是高手了。linux這三大塊學問的學習不相互影響,但也有相互依靠和促進的作用,想深化某一個領域,不見得要其它領域都把握,但建議也對其它領域也有所涉及,會有事半功倍的效果。十四、學習嵌入式linux的三個方向1、嵌入式linux應用軟件開發(fā)2、linux內(nèi)核的剪裁和移植3、嵌入式linux底層驅動的開發(fā)無論選擇哪一方向,基本的linux的學問是需要具備的,其他還需要把握的學問有ARM(最常用的一款嵌入式處理器)和C語言編程,每一方面學問的把握嫻熟程度都最終打算了個人進行嵌入式linux開發(fā)的綜合力量。嵌入式Linux學前建議(初學者必讀)目前,Linux作為嵌入式系統(tǒng)的主力軍,廣泛應用于消費類電子、工業(yè)掌握、軍工電子、電信/網(wǎng)絡/通訊、航空航天、汽車電子、醫(yī)療設施、儀器儀表等相關行業(yè)。隨著嵌入式行業(yè)的迅猛進展,嵌入式Linux憑借其系統(tǒng)進展的成熟度、市場應用的高份額也受到更多工程師伴侶的青睞,越來越多的企業(yè)和研發(fā)機構都轉向嵌入式Linux的開發(fā)和討論,這使得嵌入式Linux在新興的嵌入式操作系統(tǒng)領域內(nèi)也獲得了飛速進展和廣泛應用。而對于那些盼望盡快進入嵌入式行業(yè)從事產(chǎn)品研發(fā)的伴侶們,選擇嵌入式Linux方向作為切入點無疑是最好的途徑之一。近期,有很多面臨畢業(yè)、找工作的高校生來到華清遠見嵌入式培訓I中心詢問了解有關嵌入式Linux方向的學習支配。在與他們溝通溝通的過程中,被問到最多的幾個問題就是"如何做好嵌入式Linux學習前的預備?","學習嵌入式Linux需要補習哪些基礎課程?","嵌入式Linux開發(fā)跟一般軟件開發(fā)在學習方法上有什么不同?","項目實戰(zhàn)環(huán)節(jié)多嗎?","有專業(yè)人員帶領嗎?",信任這些也是很多預備入行的初學者都會關懷的問題,為了關心大家做好嵌入式Linux的學前預備,我們對這些常見的問題逐一進行解答,供應應大家參考,盼望能夠有所關心。1、如何做好嵌入式Linux學習前的預備?要成為一名合格的嵌入式Linux工程師,就需要系統(tǒng)的學習軟、硬件相關領域內(nèi)的學問,需要在最開頭就把握開發(fā)的法律規(guī)范和原則,養(yǎng)成良好的工作習慣。為了確保學習的效果,華清遠見支配的整個課程體系是特別集中、高效的,這就要求預備參與嵌入式Linux就業(yè)課程學習的同學要調整好自己的時間,務必要確保在4個多月的學習時間內(nèi)能夠高度集中精力。在整個集中學習過程中,既要保證課上認真聽講、實戰(zhàn)演練的時間,也要保證課下連續(xù)實戰(zhàn)演練、查閱資料的時間。只有經(jīng)過這種高強度的、實戰(zhàn)為主的訓練,才能夠在比較短的時間內(nèi)把握法律規(guī)范的嵌入式開發(fā)工作流程,讓自己符合嵌入式企業(yè)對應崗位的需求。除了在學習時間上要做好充分的預備之外,在學習的心態(tài)和方法的調整上也要做好預備。很多伴侶只了解嵌入式Linux方向美妙的進展前景,只關注高收入、就業(yè)機會多等熱點,卻忽視了學習過程本身。為了能夠讓集中培訓的效果發(fā)揮到最佳,建議大家在學習開頭前更多地去了解嵌入式產(chǎn)品研發(fā)的特點、所需要把握的技術法律規(guī)范和工作要點,關注需具備基礎的補充和學習,從而為后續(xù)的強化學習過程做好心態(tài)上的預備,究竟態(tài)度往往打算了最終做事的結果。2、學習嵌入式Linux需要補習哪些基礎課程?嵌入式Linux工程師的學習需要具備肯定的C語言基礎,因此面對很多伴侶只是在大一或者大二學習過C(還不肯定認真學了,呵呵!),之后基本就不再用過的狀況,建議大家在來華清遠見學習之前先復習一下C語言基礎這塊。要提示大家的是,復習時不能只關注基本語法,對于常用的數(shù)據(jù)存儲及處理方式,例如:數(shù)組、結構體等也要關注,有條件的話肯定在機器上親自敲敲代碼、分析理解一下具體案例代碼編寫的思路,讓自己漸漸進入一名嵌入式開發(fā)人員的狀態(tài)。此外,在時間允許的狀況下,建議大家看一下有關計算機操作系統(tǒng)工作原理以及計算機組成原理等方面的專業(yè)書籍。對于進程、線程、任務調度、總線、I/O等基本概念及工作原理有一個初步的了解和把握,這部分學問的預備對于后續(xù)更好地學習嵌入式Linux系統(tǒng)開發(fā)將會起到很好的關心作用。3、嵌入式Linux開發(fā)跟一般軟件開發(fā)在學習方法上有什么不同?要成為一名勝利的嵌入式軟件開發(fā)人員,程序的設計力量是首要技能,這一點與一般的軟件開發(fā)人員的要求是一樣的。但是作為“軟硬兼施”的嵌入式開發(fā),則要求大家不僅要了解較底層軟件的工作過程和工作原理(例如操作系統(tǒng)級、驅動程序級軟件),在軟件開發(fā)的專業(yè)水平上也需要充分考慮軟件設計的時間和空間效率,這樣才能設計出高性能嵌入式程序。因此面對相對簡單的嵌入式系統(tǒng)的研發(fā)過程,在學習的過程中需要更多關注完整的學問體系結

構的建立。特殊是對于原理性學問的把握程度則相對一般的軟件開發(fā)人員提出了更高的要求。因此在學習的過程中,"要知其然,更要知其所以然"。同時由于始終以來嵌入式行業(yè)中專業(yè)人才的緊缺,很多閱歷性的東西都有待溝通和共享,因此充分關注與每一位講師的實際閱歷溝通就顯得至關重要。華清遠見的每一位專業(yè)講師都擁有多年的嵌入式Linux開發(fā)閱歷,他們在各自擅長的領域內(nèi)都有很多值得共享和溝通的體會,因此通過他們課堂的講解、示范,通過充分的溝通溝通,無疑可以大大縮短在行業(yè)中摸索的時間,記住不要以為原理性的東西通過看書就能解決,借助這些行業(yè)高手的透徹分析,才能讓你的學習過程更有價值、更加有用。4、華清遠見的課程體系中項4、華清遠見的課程體系中項實戰(zhàn)環(huán)節(jié)多嗎?有專業(yè)人員帶領嗎?由于大多數(shù)人對嵌入式開發(fā)過程的生疏,因此實戰(zhàn)環(huán)節(jié)的訓練就顯得特別重要。在嵌入式Linux課程學習的每個階段,都需要在專業(yè)人員的引導下,通過全真的案例設計與實現(xiàn)來鞏固所學的學問點。同時我們要求大家盡可能在課堂上多出問題、多暴露問題,只有這樣,才能通過專業(yè)人員的準時關心和指導,最高效地把握解決實際問題的方式和方法,積累足夠的技術閱歷和項目閱歷。同時也只有通過最終綜合項目實戰(zhàn)環(huán)節(jié)的密集訓練,才能夠逐步建立起嵌入式產(chǎn)品開發(fā)的工程化概念。在這個過程中,除了可以達到所學學問綜合、實際應用的目的,還可以讓大家更真實地體驗到如何編寫工程化程序?如何在設計中與團隊協(xié)作開發(fā)?如何為后續(xù)有效地升級與維護做好預備?如何編寫法律規(guī)范的文檔等?而這些體驗都將為后續(xù)真正從事企業(yè)內(nèi)工程化的軟件設計做好充分的預備。記住貫穿始終的是:要知道為什么學?要知道學的是什么?要知道怎么學?要知道學了如何用?最終還要知道用的時候出了問題該如何解決?信任以這些問題為線索的學習過程肯定可以關心大家快速成為一名優(yōu)秀的嵌入式開發(fā)工程師。而在定制操作系統(tǒng)內(nèi)核時所選擇的應用程序組件就是完成了軟件的“嵌入",比如WinCE在內(nèi)核定制時,會有相應選擇,其中就是wordpad,PDF,MediaPlay等等選擇,假如我們選擇了,在CE啟動后,就可以在界面中找到這些東西,假如是以前PC上將的windows操作系統(tǒng),多半的東西都需要我們得新再裝。3、把軟件內(nèi)核或應用文件系統(tǒng)等東西燒到嵌入式系統(tǒng)硬件平臺中的ROM中就實現(xiàn)了一個真正的"嵌入"。以上的定義是我在6、7年前給嵌入式系統(tǒng)下自話側重于理解型的定義,書上的定義也有很多,但在這個領域范圍內(nèi),誰都不敢說自己的定義是特別準確的,包括那些專家學者們,歷為究竟嵌入式系統(tǒng)是計算機范疇下的一門綜合性學科二、嵌入式系統(tǒng)的分層與專業(yè)的分類。嵌入式系統(tǒng)分為4層,硬件層、驅動層、操作系統(tǒng)層和應用層。L硬件層,是整個嵌入式系統(tǒng)的根本,假如現(xiàn)在單片機及接口這塊很熟識,并且能用C和匯編語言來編程的話,從嵌入式系統(tǒng)的硬件層走起來相對簡潔,硬件層也是驅動層的基礎,一個優(yōu)秀的驅動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的規(guī)律設計的,同時還要對操作系統(tǒng)內(nèi)核及其調度性相當?shù)氖熳R的。但硬件平臺是基礎,增值還要靠軟件。硬件層比較適合于,電子、通信、自動化、機電一體、信息工程類專業(yè)的人來搞,需要把握的專業(yè)基礎學問有,單片機原理及接口技術、微機原理及接口技術、C語言。2、驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統(tǒng)內(nèi)核特別的精通,以便其所寫的驅動程序在系統(tǒng)調用時,不會獨占操作系統(tǒng)時間片,而導至其它任務不能動行,不懂操作系統(tǒng)內(nèi)核架構和實時調度性,沒有良好的驅動編寫風格,按大多數(shù)書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到,這樣所寫的驅動在應用調用時就猶如windows下我們打開一個程序運行后,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行后來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統(tǒng)內(nèi)核不討論上幾編,不是太簡潔勝利的,但其工資在嵌入式系統(tǒng)四層中可是最高的。驅動層比較適合于電子、通信、自動化、機電一體、信息工程類專業(yè)尤其是計算機偏體系結構類專業(yè)的人來搞,除硬件層所具備的基礎學科外,還要對數(shù)據(jù)結構與算法、操作系統(tǒng)原理、編譯原理都要特別精通了解。3、操作系統(tǒng)層,對于操作系統(tǒng)層目前可能只能說是簡潔的移植,而很少有人來自已寫操作系統(tǒng),或者寫出缺胳膊少腿的操作系統(tǒng)來,這部分工作大都由驅動工程師來完成。操作系統(tǒng)是負責系統(tǒng)任務的調試、磁盤和文件的管理,而嵌入式系統(tǒng)的實時性特別重要。據(jù)說,XP操作系統(tǒng)是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女蝸Hopen操作系統(tǒng)估量也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。4、應用層,相對來講較為簡潔的,假如會在windows下如何進行編程接口函數(shù)調用,至I」操作系統(tǒng)下只是編譯和開發(fā)環(huán)境有相應的變化而已。假如涉及Java方面的編程也是如此的。嵌入式系統(tǒng)中涉及算法的由專業(yè)算法的人來處理的,不必歸結到嵌入式系統(tǒng)范疇內(nèi)。但假如涉及嵌入式系統(tǒng)下面嵌入式數(shù)據(jù)庫、基于嵌入式系統(tǒng)的網(wǎng)絡編程和基于某此應用層面的合同應用開發(fā)(比如基于SIP、H.323、Astrisk)方面又較為簡單,并且有難度了。三、目標與定位。先有目標,再去定位。學ARM,從硬件上講,一方面就是學習接口電路設計,另一方面就是學習匯編和C語言的板級編程。假如從軟件上講,就是要學習基于ARM處理器的操作系統(tǒng)層面的驅動、移植了。這些對于初學都來說必需明確,要么從硬件著手開頭學,要么從操作系統(tǒng)的熟識到應用開頭學,但不管學什么,只要不是純的操作系統(tǒng)級以上基于API的應用層的編程,硬件的寄存器類的東西還是要能看懂的,基于板級的匯編和C編程還是要會的。因此針對于嵌入式系統(tǒng)的硬件層和驅動程的人,ARM的接口電路設計、ARM的C語言和匯編語言編程及調試開發(fā)環(huán)境還是需要把握的。因此對于初學者必定要把握住方向,自己的目標是什么,自己要在那一層面上走。然后再著手學習較好,與ARM相關的嵌入式系統(tǒng)的較為實際的兩個層面硬件層和驅動層,不管學好了那一層都會很有前途的。假如想從嵌入式系統(tǒng)的應用層面的走的話,可能與ARM及其它體系相去較遠,要著重討論基嵌入式操作系統(tǒng)的環(huán)境應用與相應開發(fā)工具鏈,比如WinCe操作系統(tǒng)下的EVC應用開發(fā)(與windows下的VC相類似),假如想再有突破就往某些音視頻類的合同上靠,比如VOIP領域的基于SIP或H.323合同的應用層開發(fā),或是基于嵌入式網(wǎng)絡數(shù)據(jù)庫的開發(fā)等等。對于初學者來講,要量力而行,不要認為驅動層工資高就把它當成方向了,要結合自身特點,嵌入式系統(tǒng)四個層面上那個層面上來講都是有高人存在,當然高人也對應的高工資,我是做硬件層的,以前每月工資中個人所得稅要被扣上近3千大元,當然我一方面充當工程師的角色,一方面充當主管及人物的角色,兩個職位我一個人干,但上班時間就那些。硬件這方面上可能與我PK的人很少了,才讓我拿到那么多的工資。四、開發(fā)系統(tǒng)選擇。很多ARM初學者都盼望有一套自己能用的系統(tǒng),但他們住住會產(chǎn)生一種錯誤熟識就是認為處理器版本越高、性能越高越好,就象很多人認為ARM9與ARM7好,我想對于初學者在此方面以此入門還應當理智,開發(fā)系統(tǒng)的選擇最終要看自己往嵌入式系統(tǒng)的那個方向上走,是做驅動開發(fā)還是應用,還是做嵌入式系統(tǒng)硬件層設計與板級測試。假如想從操作系統(tǒng)層面或應用層面上走,不管是驅動還是應用,那當然處理器性能越高越好了,但這個東西自學,有特別大的困難,不是幾個月或半年或是一年二年能搞定的事。在某種意義上請,ARM7與9的差別就是在某些功能指令集上豐富了些,主頻提高一些而已,就比如286和386O對于用戶來講可能覺查不到什么,只能是感覺速度有些快而已。ARM7比較適合于那些想從硬件層面上走的人,由于ARM7系列處理器內(nèi)部帶MMU的很少,而且比較好掌握,就比如S3C44B0來講,可以很簡潔將Cache關了,而且內(nèi)部接口寄存器很簡潔看明白,各種接口對于用硬件程序掌握或AXD單步命令行指令都可以掌握起來,基于51單片機的思想很簡潔能把他搞懂,就當成個32位的單片機,從而消退很多51工程師想轉為嵌入式系統(tǒng)硬件ARM開發(fā)工程師的困惑,從而不會被業(yè)界某此不是真正懂嵌入式爛公司帶到操作系統(tǒng)層面上去,讓他們望而失畏,讓業(yè)界更加缺少這方面的人才。而嵌入式系統(tǒng)不管硬件設計還是軟件驅動方面都是特別留意接□這部分的,選擇平臺還要考察一個處理器的外部資源,你接觸外部資源越多,越熟識他們那你以后就業(yè)勝利的機率就越高,這就是聘請時所說的有無"相關技能",由于一個人不行能在短短幾年內(nèi)把全部的處理器都接觸一遍,而聘請單位所用的處理器就可能是我們完全沒有見過的,就拿臺灣數(shù)十家小公司(市價幾千萬)的公司生產(chǎn)的ARM類處理器,也很好用,但這些東西通用性太差,用這些處理器的公司就只能招有相關工作閱歷的人了,那什么是相關工作閱歷,在硬件上講的是外圍接口設計,在軟件上講是操作系統(tǒng)方面相關接口驅動及應用開發(fā)閱歷。我從業(yè)近十年,2000年ARM消失,我一天始做ARM7,然后直接跑到了Xscale(這個板本在ARM10-11之間),一做就是五年,招人面試都不下數(shù)百人,在這些方面還是深有體會的。我個人認為三星的S3c44bo對初學者來說比較合適,為什么這么說哪?由于接口資源比較豐富,技術成熟,資料較多,應當特別適合于初學者,有問題可能很簡潔找人幫且解決,由于大多數(shù)人都很熟識,就猶如51類的單片機,有N多位專家級的人物可以給你幫忙,相關問題得以很快解答,所然業(yè)界認為這款ARM都做用得爛了,但對于初學者來,就卻是件好事。因此開發(fā)系統(tǒng)的選擇,要看自己的將來從來目標方向、要看開發(fā)板接口資源、還要看業(yè)界的通用性。五、如何看待培訓。首先說說我自己,我目前從業(yè)近十年,與國內(nèi)嵌入式系統(tǒng)行業(yè)共同起步,始終站在嵌入式系統(tǒng)行業(yè)前沿,設計過多款高端嵌入式系統(tǒng)平臺產(chǎn)品并為眾多公司供應過解決方案,離職前為從事VOIP的美資公司設計IP-PBX,歷任項目經(jīng)理、項目主管、技術總監(jiān)、部門經(jīng)理,積累眾多人脈,并集多年閱歷所得,考慮到同學就業(yè)與公司招人的不相匹配,公司想招人招不到,而同學和剛畢業(yè)的工程師想找份工作也不太簡潔,于此力創(chuàng)知天行科技有限公司,開展嵌入式系統(tǒng)教育培訓。因一線的科研人員和一線的老師不相接觸,導至國內(nèi)嵌入式人才缺乏,國外高校的技術超前于業(yè)界公司,而國內(nèi)狀況是業(yè)界公司方面的嵌入式系統(tǒng)技術要遠遠領先于高校。為架構業(yè)界與高校溝通的橋梁,把先進技能帶給高校學子,為同學在就業(yè)競爭中打造一張王牌,并為業(yè)界工程師快速提升實現(xiàn)自我制造機遇,我就這樣辭去了外企年薪20多萬的職位,做嵌入式系統(tǒng)方面的培訓I了。對于培訓來講,是花錢來買時間,很多工程師都寵爰自己學,認為培訓不值,這也是有可能的,純?yōu)橘嶅X的培訓當然不會太有價值,但對于實力型的培訓他們可能就虧大了,有這樣一筆帳不知他們算過沒有,假如一個一周的培訓,能帶給他們自學兩年后才能把握的學問,在培訓完后他們用三個月到半年時間消化培訓I內(nèi)容,這樣他會省約至少一年半的時間來學其它的或重新站在另一個高度上工作,那么他將最遲一年后會拿到他兩年后水平所對應的工資,就是在工資與水平對應的關系上比同批人縮短一年,每月按最少1千計,再減去培訓費用至少多L0萬,同時也省了一年時間,不管是休閑也好,再連續(xù)提高也好,總之是跑到了隊伍的前面了。另一層面上講,對于新人的培訓相當于他們?yōu)樽约禾崆百I了份失業(yè)保險,有師傅會帶領他們?nèi)氲?,我今年暑假時班里最年輕的一個同學是大二的,今年才上大三,這學期才剛學單片機,但現(xiàn)在ARM方面的編程工作已經(jīng)搞得有聲有色了,再過一年多畢業(yè),他還會失業(yè)嗎?再者通過培訓I,你可以知道很多業(yè)界不為常人所知的事,同時也為自己找了個師傅,就比如說,兩個工程師分別用S3c2410和PXA255來做手持設施,同樣兩人都工作四年,再出去找工作,兩人工資可能最多可相差一倍,為什么?這就是業(yè)界不為常人所知的規(guī)章,2410屬于民品,被業(yè)界用爛了,做產(chǎn)品時成本特敏感,當然也對人才成本敏感了,PXA255是intel的東西,一個255CPU能買三個2410,始終被業(yè)界定義為貴族產(chǎn)品,用的公司都是大公司或為軍方服務的公司,不會在乎成本,只要把東西做好,一切都好說,但這方面做的人也少啊,由于開發(fā)系統(tǒng)貴啊。對于說為自已找了個好師傅,我想是這樣的,由于同級工程師間存在著某此潛在的競爭關系,有很多人不情愿把自己知道的東西教給別人,這意味著他將要失業(yè),就是所說的教會徒弟,餓死師傅,但對于我們這些人就不存在這樣的關系了,我是在嵌入式系統(tǒng)平臺設計上走到了肯定程序,目前在國內(nèi)這塊的技術上已經(jīng)是自己很難再突破自己,因此很多東西我對大家都是OPEN的,就比如說下面那部分關于接口設計中所提到的時序接口東西,我要是不講,卻使是高級硬件工程師我想也幾乎只有10%的人能知道吧。六、成為高級嵌入式系統(tǒng)硬件工程師要具備的技能。首先我聲明,我是基于嵌入式系統(tǒng)平臺級設計的,硬件這個方向我相對來講比較有發(fā)言權,假如是其它方面所要具備的基本技能還要和我們培訓中心其它專業(yè)級講師溝通,或去網(wǎng)站看看。他們的方面上我只能說是知道些,但不是太多,初級的問題也可以問我。對于硬件來講有幾個方向,就單純信號來分為數(shù)字和模擬,模擬比較難搞,一般需要很長的閱歷積累,單單一個阻值或容值的精度不夠就可能使信號偏差很大。因此年輕人搞的較少,隨著技術的進展,消失了模擬電路數(shù)字化,比如手機的Modem射頻模塊,都采納成熟的套片,而當年國際上只有兩家公司有此技術,自我感覺模擬功能不太強的人,不太適合搞這個,假如真能搞定到手機的射頻模塊,只要達到一般程度可能月薪都在15K以上。另一類就是數(shù)字部分了,在大方向上又可分為51/ARM的單片機類,DSP類,F(xiàn)PGA類,國內(nèi)FPGA的工程師大多是在IC設計公司從事IP核的前端驗證,這部分不搞到門級,前途不太明朗,即使做個IC前端驗證工程師,也要搞上幾年才能勝任。DSP硬件接口比較定型,假如不向驅動或是算法上靠攏,前途也不會太大。而ARM單片機類的內(nèi)容就較多,業(yè)界產(chǎn)品占用量大,應用人群廣,因此就業(yè)空間極大,而硬件設計最體現(xiàn)水平和水準的就是接口設計這塊,這是各個高級硬件工程師相互PK判定水平凹凸的依據(jù)。而接口設計這塊最關鍵的是看時序而不是簡潔的連接比如PXA255處理器I2C要求速度在100Kbps,假如把一個I2C外圍器件,最高還達不到100kbps的與它相接,必定要導致設計的失敗。這樣的狀況有很多,比如51單片機可以在總線接LCD,但為什么這種LCD就不能掛在ARM的總線上,還有ARM7總線上可以外接個Winband的SD卡掌握器,但為什么這種掌握器接不到ARM9或是Xscale處理器上,這些都是問題。因此接口并不是一種簡潔的連接,要看時序,要看參數(shù)。一個優(yōu)秀的硬件工程師應當能夠在沒有參考方案的前提下設計出一個在成本和性能上更加優(yōu)秀的產(chǎn)品,靠

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論