- 相關推薦
嵌入式系統學習心得(精選6篇)
當我們對人生或者事物有了新的思考時,不如來好好地做個總結,寫一篇心得體會,這樣可以記錄我們的思想活動。那么心得體會怎么寫才恰當呢?下面是小編整理的嵌入式系統學習心得,僅供參考,希望能夠幫助到大家。
嵌入式系統學習心得 篇1
一、嵌入式系統的概念
著重理解“嵌入”的概念
主要從三個方面上來理解。
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中就實現了一個真正的“嵌入”。
以上的定義是我在6、7年前給嵌入式系統下自話側重于理解型的定義,書上的定義也有很多,但在這個領域范圍內,誰都不敢說自己的定義是十分確切的,包括那些專家學者們,歷為畢竟嵌入式系統是計算機范疇下的一門綜合性學科
二、嵌入式系統的分層與專業的分類。
嵌入式系統分為4層,硬件層、驅動層、操作系統層和應用層。
1、硬件層,是整個嵌入式系統的根本,如果現在單片機及接口這塊很熟悉,并且能用C和匯編語言來編程的話,從嵌入式系統的硬件層走起來相對容易,硬件層也是驅動層的基礎,一個優秀的驅動工程師是要能夠看懂硬件的電路圖和自行完成CPLD的邏輯設計的,同時還要對操作系統內核及其調度性相當的熟悉的。但硬件平臺是基礎,增值還要靠軟件。
硬件層比較適合于,電子、通信、自動化、機電一體、信息工程類專業的人來搞,需要掌握的專業基礎知識有,單片機原理及接口技術、微機原理及接口技術、C語言。
2、驅動層,這部分比較難,驅動工程師不僅要能看懂電路圖還要能對操作系統內核十分的精通,以便其所寫的驅動程序在系統調用時,不會獨占操作系統時間片,而導至其它任務不能動行,不懂操作系統內核架構和實時調度性,沒有良好的驅動編寫風格,按大多數書上所說添加的驅動的方式,很多人都能做到,但可能連個初級的驅動工程師的水平都達不到,這樣所寫的驅動在應用調用時就如同windows下我們打開一個程序運行后,再打開一個程序時,要不就是中斷以前的程序,要不就是等上一會才能運行后來打開的程序。想做個好的驅動人員沒有三、四年功底,操作系統內核不研究上幾編,不是太容易成功的,但其工資在嵌入式系統四層中可是最高的。
驅動層比較適合于電子、通信、自動化、機電一體、信息工程類專業尤其是計算機偏體系結構類專業的人來搞,除硬件層所具備的基礎學科外,還要對數據結構與算法、操作系統原理、編譯原理都要十分精通了解。
3、操作系統層,對于操作系統層目前可能只能說是簡單的移植,而很少有人來自已寫操作系統,或者寫出缺胳膊少腿的操作系統來,這部分工作大都由驅動工程師來完成。操作系統是負責系統任務的調試、磁盤和文件的管理,而嵌入式系統的實時性十分重要。據說,XP操作系統是微軟投入300人用兩年時間才搞定的,總時工時是600人年,中科院軟件所自己的女媧Hopen操作系統估計也得花遇幾百人年才能搞定。因此這部分工作相對來講沒有太大意義。
4、應用層,相對來講較為容易的,如果會在windows下如何進行編程接口函數調用,到操作系統下只是編譯和開發環境有相應的變化而已。如果涉及Java方面的編程也是如此的。嵌入式系統中涉及算法的由專業算法的人來處理的,不必歸結到嵌入式系統范疇內。但如果涉及嵌入式系統下面嵌入式數據庫、基于嵌入式系統的網絡編程和基于某此應用層面的協議應用開發(比如基于SIP、H.323、Astrisk)方面又較為復雜,并且有難度了。
三、目標與定位。
先有目標,再去定位。
學ARM,從硬件上講,一方面就是學習接口電路設計,另一方面就是學習匯編和C語言的板級編程。如果從軟件上講,就是要學習基于ARM處理器的操作系統層面的驅動、移植了。這些對于初學都來說必須明確,要么從硬件著手開始學,要么從操作系統的.熟悉到應用開始學,但不管學什么,只要不是純的操作系統級以上基于API的應用層的編程,硬件的寄存器類的東西還是要能看懂的,基于板級的匯編和C編程還是要會的。因此針對于嵌入式系統的硬件層和驅動程的人,ARM的接口電路設計、ARM的C語言和匯編語言編程及調試開發環境還是需要掌握的。
因此對于初學者必然要把握住方向,自己的目標是什么,自己要在那一層面上走。然后再著手學習較好,與ARM相關的嵌入式系統的較為實際的兩個層面硬件層和驅動層,不管學好了那一層都會很有前途的。
如果想從嵌入式系統的應用層面的走的話,可能與ARM及其它體系相去較遠,要著重研究基嵌入式操作系統的環境應用與相應開發工具鏈,比如WinCe操作系統下的EVC應用開發(與windows下的VC相類似),如果想再有突破就往某些音視頻類的協議上靠,比如VOIP領域的基于SIP或H。323協議的應用層開發,或是基于嵌入式網絡數據庫的開發等等。
對于初學者來講,要量力而行,不要認為驅動層工資高就把它當成方向了,要結合自身特點,嵌入式系統四個層面上那個層面上來講都是有高人存在,當然高人也對應的高工資,我是做硬件層的,以前每月工資中個人所得稅要被扣上近3千大元,當然我一方面充當工程師的角色,一方面充當主管及人物的角色,兩個職位我一個人干,但上班時間就那些。硬件這方面上可能與我PK的人很少了,才讓我拿到那么多的工資。
四、開發系統選擇。
很多ARM初學者都希望有一套自己能用的系統,但他們住住會產生一種錯誤認識就是認為處理器版本越高、性能越高越好,就象很多人認為ARM9與ARM7好,我想對于初學者在此方面以此入門還應該理智,開發系統的選擇最終要看自己往嵌入式系統的那個方向上走,是做驅動開發還是應用,還是做嵌入式系統硬件層設計與板級測試。如果想從操作系統層面或應用層面上走,不管是驅動還是應用,那當然處理器性能越高越好了,但這個東西自學,有十分大的困難,不是幾個月或半年或是一年二年能搞定的事。
在某種意義上請,ARM7與9的差別就是在某些功能指令集上豐富了些,主頻提高一些而已,就比如286和386。對于用戶來講可能覺查不到什么,只能是感覺速度有些快而已。
ARM7比較適合于那些想從硬件層面上走的人,因為ARM7系列處理器內部帶MMU的很少,而且比較好控制,就比如S3C44B0來講,可以很容易將Cache關了,而且內部接口寄存器很容易看明白,各種接口對于用硬件程序控制或AXD單步命令行指令都可以控制起來,基于51單片機的思想很容易能把他搞懂,就當成個32位的單片機,從而消除很多51工程師想轉為嵌入式系統硬件ARM開發工程師的困惑,從而不會被業界某此不是真正懂嵌入式爛公司帶到操作系統層面上去,讓他們望而失畏,讓業界更加缺少這方面的人才。
而嵌入式系統不管硬件設計還是軟件驅動方面都是十分注重接口這部分的,選擇平臺還要考察一個處理器的外部資源,你接觸外部資源越多,越熟悉他們那你以后就業成功的機率就越高,這就是招聘時所說的有無“相關技能”,因為一個人不可能在短短幾年內把所有的處理器都接觸一遍,而招聘單位所用的處理器就可能是我們完全沒有見過的,就拿臺灣數十家小公司(市價幾千萬)的公司生產的ARM類處理器,也很好用,但這些東西通用性太差,用這些處理器的公司就只能招有相關工作經驗的人了,那什么是相關工作經驗,在硬件上講的是外圍接口設計,在軟件上講是操作系統方面相關接口驅動及應用開發經驗。我從業近十年,20xx年ARM出現,我一天始做ARM7,然后直接跑到了Xscale(這個板本在ARM10—11之間),一做就是五年,招人面試都不下數百人,在這些方面還是深有體會的。
我個人認為三星的S3C44b0對初學者來說比較合適,為什么這么說哪?因為接口資源比較豐富,技術成熟,資料較多,應該十分適合于初學者,有問題可能很容易找人幫且解決,因為大多數人都很熟悉,就如同51類的單片機,有N多位專家級的人物可以給你幫忙,相關問題得以很快解答,所然業界認為這款ARM都做用得爛了,但對于初學者來,就卻是件好事。
因此開發系統的選擇,要看自己的未來從來目標方向、要看開發板接口資源、還要看業界的通用性。
五、如何看待培訓。
首先說說我自己,我目前從業近十年,與國內嵌入式系統行業共同起步,一直站在嵌入式系統行業前沿,設計過多款高端嵌入式系統平臺產品并為眾多公司提供過解決方案,離職前為從事VOIP的美資公司設計IP—PBX,歷任項目經理、項目主管、技術總監、部門經理,積累眾多人脈,并集多年經驗所得,考慮到學生就業與公司招人的不相匹配,公司想招人招不到,而學生和剛畢業的工程師想找份工作也不太容易,于此力創知天行科技有限公司,開展嵌入式系統教育培訓。
因一線的科研人員和一線的教師不相接觸,導至國內嵌入式人才缺乏,國外高校的技術超前于業界公司,而國內情況是業界公司方面的嵌入式系統技術要遠遠領先于高校。為架構業界與高校溝通的橋梁,把先進技能帶給高校學子,為學生在就業競爭中打造一張王牌,并為業界工程師快速提升實現自我創造機遇,我就這樣辭去了外企年薪20多萬的職位,做嵌入式系統方面的培訓了。
對于培訓來講,是花錢來買時間,很多工程師都喜歡自己學,認為培訓不值,這也是有可能的,純為賺錢的培訓當然不會太有價值,但對于實力型的培訓他們可能就虧大了,有這樣一筆帳不知他們算過沒有,如果一個一周的培訓,能帶給他們自學兩年后才能掌握的知識,在培訓完后他們用三個月到半年時間消化培訓內容,這樣他會省約至少一年半的時間來學其它的或重新站在另一個高度上工作,那么他將最遲一年后會拿到他兩年后水平所對應的工資,就是在工資與水平對應的關系上比同批人縮短一年,每月按最少1千計,再減去培訓費用至少多1.0萬,同時也省了一年時間,不管是休閑也好,再繼續提高也好,總之是跑到了隊伍的前面了。
另一層面上講,對于新人的培訓相當于他們為自己提前買了份失業保險,有師傅會帶領他們入道,我今年暑假時班里最年輕的一個學生是大二的,今年才上大三,這學期才剛學單片機,但現在ARM方面的編程工作已經搞得有聲有色了,再過一年多畢業,他還會失業嗎?再者通過培訓,你可以知道很多業界不為常人所知的事,同時也為自己找了個師傅,就比如說,兩個工程師分別用S3C2410和PXA255來做手持設備,同樣兩人都工作四年,再出去找工作,兩人工資可能最多可相差一倍,為什么?這就是業界不為常人所知的規則,2410屬于民品,被業界用爛了,做產品時成本特敏感,當然也對人才成本敏感了,PXA255是intel的東西,一個255 CPU能買三個2410,一直被業界定義為貴族產品,用的公司都是大公司或為軍方服務的公司,不會在乎成本,只要把東西做好,一切都好說,但這方面做的人也少啊,因為開發系統貴啊。
對于說為自已找了個好師傅,我想是這樣的,因為同級工程師間存在著某此潛在的競爭關系,有很多人不愿意把自己知道的東西教給別人,這意味著他將要失業,就是所說的教會徒弟,餓死師傅,但對于我們這些人就不存在這樣的關系了,我是在嵌入式系統平臺設計上走到了一定程序,目前在國內這塊的技術上已經是自己很難再突破自己,因此很多東西我對大家都是OPEN的,就比如說下面那部分關于接口設計中所提到的時序接口東西,我要是不講,卻使是高級硬件工程師我想也幾乎只有10%的人能知道吧。
六、成為高級嵌入式系統硬件工程師要具備的技能。
首先我聲明,我是基于嵌入式系統平臺級設計的,硬件這個方向我相對來講比較有發言權,如果是其它方面所要具備的基本技能還要和我們培訓中心其它專業級講師溝通。他們的方面上我只能說是知道些,但不是太多,初級的問題也可以問我。
對于硬件來講有幾個方向,就單純信號來分為數字和模擬,模擬比較難搞,一般需要很長的經驗積累,單單一個阻值或容值的精度不夠就可能使信號偏差很大。因此年輕人搞的較少,隨著技術的發展,出現了模擬電路數字化,比如手機的Modem射頻模塊,都采用成熟的套片,而當年國際上只有兩家公司有此技術,自我感覺模擬功能不太強的人,不太適合搞這個,如果真能搞定到手機的射頻模塊,只要達到一般程度可能月薪都在15K以上。
另一類就是數字部分了,在大方向上又可分為51/ARM的單片機類,DSP類,FPGA類,國內FPGA的工程師大多是在IC設計公司從事IP核的前端驗證,這部分不搞到門級,前途不太明朗,即使做個IC前端驗證工程師,也要搞上幾年才能勝任。DSP硬件接口比較定型,如果不向驅動或是算法上靠攏,前途也不會太大。而ARM單片機類的內容就較多,業界產品占用量大,應用人群廣,因此就業空間極大,而硬件設計最體現水平和水準的就是接口設計這塊,這是各個高級硬件工程師相互PK,判定水平高低的依據。而接口設計這塊最關鍵的是看時序,而不是簡單的連接,比如PXA255處理器I2C要求速度在100Kbps,如果把一個I2C外圍器件,最高還達不到100kbps的與它相接,必然要導致設計的失敗。這樣的情況有很多,比如51單片機可以在總線接LCD,但為什么這種LCD就不能掛在ARM的總線上,還有ARM7總線上可以外接個Winband的SD卡控制器,但為什么這種控制器接不到ARM9或是Xscale處理器上,這些都是問題。因此接口并不是一種簡單的連接,要看時序,要看參數。一個優秀的硬件工程師應該能夠在沒有參考方案的前提下設計出一個在成本和性能上更加優秀的產品,靠現有的方案,也要進行適當的可行性裁剪,但不是胡亂的來,我遇到一個工程師把方案中的5V變1。8V的DC芯片,直接更換成LDO,有時就會把CPU燒上幾個。前幾天還有人希望我幫忙把他們以前基于PXA255平臺的手持GPS設備做下程序優化,我問了一下情況,地圖是存在SD卡中的,而SD卡與PXA255的MMC控制器間采用的SPI接口,因此導致地圖讀取速度十分的慢,這種情況是設計中嚴重的缺陷,而不是程序的問題,因此我提了幾條建議,讓他們更新試下再說。因此想成為一個優秀的工程師,需要對系統整體性的把握和對已有電路的理解,換句話說,給你一套電路圖你終究能看明白多少,看不明白80%以上的話,說明你離優秀的工程師還差得遠哪。其次是電路的調試能力和審圖能力,但最最基本的能力還是原理圖設計PCB繪制,邏輯設計這塊。這是指的硬件設計工程師,從上面的硬件設計工程師中還可以分出ECAD工程師,就是專業的畫PCB板的工程師,和EMC設計工程師,幫人家解決EMC的問題。硬件工程師再往上就是板級測試工程師,就是C語功底很好的硬件工程師,在電路板調試過程中能通過自已編寫的測試程序對硬件功能進行驗證。然后再交給基于操作系統級的驅動開發人員。
總之,硬件的內容很多很雜,硬件那方面練成了都會成為一個高手,我時常會給人家做下方案評估,很多高級硬件工程師設計的東西,經常被我一句話否定,因此工程師做到我這種地步,也會得罪些人,但硬件的確會有很多不為人知的東西,讓很多高級硬件工程師也摸不到頭腦。
那么高級硬件件工程師技術技能都要具備那些東西哪,首先要掌握EDA設計的輔助工具類如ProtelORCADPowperPCBMaplux2ISE、VDHL語言,要能用到這些工具畫圖畫板做邏輯設計,再有就是接口設計審圖能力,再者就是調試能力,如果能走到總體方案設計這塊,那就基本上快成為資深工程師了。
嵌入式系統學習心得 篇2
嵌入式系統用在一些特定專用設備上,通常這些設備的硬件資源(如處理器、存儲器等)非常有限,并且對成本很敏感,有時對實時響應要求很高等。特別是隨著消費家電的智能化,嵌入式更顯重要。像我們平常常見到的手機、PDA、電子字典、可視電話、VCD/DVD/MP3 Player、數字相機(DC)、數字攝像機(DV)、U-Disk、機頂盒(Set Top Box)、高清電視(HDTV)、游戲機、智能玩具、交換機、路由器、數控設備或儀表、汽車電子、家電控制系統、醫療儀器、航天航空設備等等都是典型的嵌入式系統。
看到了嵌入式系統的范圍,你也應該知道嵌入式系統工程師是做什么的,就是開發上面的那些電子產品的工程師。
關于如何學習嵌入式?
學習嵌入式,該學習什么基本的知識呢?
首先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 的代碼等等,麻雀雖小,五臟俱全,如果你全看完了,那我想你就是一名很成功的嵌入式工程師。
至于上面說的知識如何學習呢?每個人都應該去找自己最好的方法,所謂的最好的方法就是最適合自己的方法。很多人看不進書,那就去看看視頻吧。視頻也應該要選擇,不是隨便看看,應該要有所選擇,有所挑選。我也是這樣一路走過來的,不過我這人比較懶,我看不進書,一看書我就想睡覺,所以這幾年我都是看視頻過來的,現在也算學有所成,但也不敢說是高手吧。
我在網上看到,有人把自己學習嵌入式的視頻總結出來,嵌入式系列實踐和視頻教程,大家可以看看網址我仔細看了覺得很不錯,我本來也想整理下,可是奈何我自己的電腦硬盤空間才40G,沒有辦法,時間也是不夠,心有余而力不足,我不是在幫他做廣告,雖然要花錢,我覺得算不錯,至少自己不用去整理和花大量的時間去找資源,當然如果網上有的下,你網速和硬盤都夠的話,我建議大家自己網上下也好。想想我自己該開始學的時候,那時視頻資源少之又少,我買書和買視頻至少花了幾千塊,但是我覺得那很值,至少我現在賺回來了很多知識。
最后,希望這篇文章對熱愛嵌入式,想致力于嵌入式開發的朋友有所幫助。送給大家一句簡單而又樸素的話,堅持就是勝利,貴在堅持,也可以看看如何堅持嵌入式學習!
嵌入式系統學習心得 篇3
一、嵌入式系統及其應用概述
嵌入式系統是以應用為中心,以計算機技術為基礎,軟件可編程,硬件可剪裁、重構的專用計算機系統。該系統通常嵌入在對象環境中,并通過其在對象環境下運行的特定程序,完成對外界物理參數地采集、處理,達到對控制對象地響應或人機交互的功能。
目前,嵌入式系統的發展方向主要是解決接口多樣性、適應性、靈活性和集成開發環境等的特定應用問題。嵌入式系統應用的底層性與對象系統的緊耦合性是其顯著的基本特征。所以,最大限度的滿足對象數據采集、控制、開發環境、功耗,以及適應能力、可靠性等品質因數是選擇嵌入式系統的標準。
為適應技術發展需求,嵌入系統在不斷追求結構緊湊、堅固可靠、技術密集、高度分散的同時,尤以不斷創新為嵌入式系統的發展核心。使嵌入系統凸現了高技術門檻,主要表現在軟硬件設計的緊密相關性上,特別是構建RTOS系統需透徹了解RTOS的工作機制和系統資源配制,掌握底層軟件、系統軟件和應用軟件的設計、調試方法。
隨著對嵌入式系統的智能化愈加關注,現場可編程、調試、引腳配置變得非常重要和必不可少。所以,用戶可配置的SCO(在片系統)已成為現階段嵌入式系統的核心發展技術。通過現場可編程陣列把接口應用設計和系統開發留給系統設計者,提供靈活、多樣的片上電路設計平臺,使電路板設計變成在片的芯片配置,將嵌入系統地設計帶入了軟硬件的雙編程時期,進一步縮短了產品開發周期。而下一代的在片系統還將發展成一個MUC數量可縮放的集合體。
在嵌入式應用系統中,雖然高端產品不斷涌現,但由于應用對象、環境的不同特點,嵌入系統的8位機產品仍因應用對象的有限響應時間、完備的集成開發環境、良好的性價比等優勢仍然占據著低端應用系統的主流地位。Cygnel公司的C8051F系列產品就充分印證了這點。
回顧嵌入式系統的發展歷程,已經歷了由模擬向數字的演進過程,現又逐步演變為數模并存情形。由最初軟件編程主宰的微處理器(嵌入式微處理器、數字信號處理器、單片機),到硬編程主宰的專用集成電路時代,再到今天的現場可編配置時代。嵌入式系統的核心技術正沿著“許氏循環”的浪潮不斷前行。而配套的軟件設計平臺也隨著科技進步在不斷得到完善。可以預期,軟硬雙可編程的嵌入式系統時代必會帶來更加便捷的開發環境和技術支持。
二、嵌入系統的設計原則
嵌入系統設計具有很強的針對性,軟硬件協同設計是系統設計的關鍵。需解決好軟硬件的同步與集成設計問題,要結合具體應用進行綜合考慮,保證設計工作的一致性與正確性。在針對具體應用系統的功能目標分析基礎上,分解整個系統的各項功能指標和技術要求,結合系統的實時響應要求、接口功能定義與標準、嵌入芯片的.處理能力、編程語言、開發環境、產品的升級與維護問題、開發投入能力、產品綜合成本等多方面因素進行權衡考慮。
(一)在明確系統性能需求的基礎上,細化以下考慮因素
1、系統功能實現手段的軟硬件分配。
2、器(部)件選擇和系統構建。包括微處理器芯片、外圍接口電路、各種驅動電路形式、器部件類型、前后向通道處理方式、人機界面和手段等。
3、控制算法設計以及軟件系統的架構形式。
4、語言選擇。依據設計者熟練程度和習慣、開發環境和控制功能要求選取。
5、抗干擾問題的解決與設計。包括軟件的和硬件的、常規的和特定的。
6、實現工藝和方式。包括印制板設計、走線安裝、裝配工藝、新材料或新技術的應用等。
在各實施階段,對項目進度、關鍵技術的風險因素必須進行審查評估,評價軟一硬件的功能設計與分配,以及實現的技術性能、工作量和時間進度。明確電路之間的接口參數、軟一硬件功能銜接,以及項目中存在的問題和缺陷,及時發現關鍵部位或矛盾突出點的瓶頸問題,將隱患排除在早期設計階段。
(二)嵌入系統中微處理器選擇應考慮
1、MCU的算術、邏輯處理能力;運算速度和時鐘頻率;總線控制功能、中斷方式和仲裁機制;RAM和FLASHROM容量;軟件加密保護。
2、外圍接口功能的可重構配置能力;數據通訊模式;前后向通道類型;端口電壓的適應能力等;
3、開發工具的在線調試或仿真能力;FLASH代碼讀寫環境;編程語言的支持程度;代碼的可移植性等。
4、電源電壓;功耗等。
三、嵌入系統的軟件特點
嵌入式系統是可利用資源有限、專用性很強、實時性要求也很高的應用控制系統。故在軟件設計方法和實現手段上,嵌入系統軟件同PC機軟件存在很大差異,主要表現在:
(一)實時性的控制方法
PC軟件提升速率方法,極大依賴處理器性能提升,還體現在緩存方案、動態分配等技術手段上。但在嵌入式系統中應用這些技術就存在硬件資源不足、工作頻率低的現實問題,會降低系統的可靠性。
(二)特定的異構特征
嵌入式控制軟件設計既要考慮特定的硬件固有部分,也要考慮來自系統之外的各種通訊、傳感器的專用信號處理接口,以及不同控制目標的實時期望和執行機構的異步并發事件處理能力。因此不同的硬件系統或控制目標,將會產生不同的系統構建方案。
(三)系統的性能目標
編寫嵌入式軟件必須著重考慮與硬件系統相匹配的功耗、不間斷運行、故障恢復、高可靠性等方面的約束條件,實現特定應用環境下的控制功能、實時性響應的目標要求。因此,嵌入系統要在借鑒通用軟件技術,遵循軟件工程理論,規范軟件開發過程的同時。還應根據嵌入式系統特點研究開發技術和算法結構,提高開發效率,確保系統軟件的質量和可靠性,以及軟件的復用性、可移植性和易維護性。縱觀嵌入式軟件設計方法的發展歷程,走過了從結構化設計、面向對象設計、基于構件的設計階段,經歷了單任務到多任務的系統轉變。
嵌入式系統學習心得 篇4
研究嵌入式系統已經有快兩年的時間了。很慶幸自己當初選擇了嵌入式系統作為自己的研究和職業方向,可以說它是一種催化劑,讓我自身的修養和研究能力都有了很大的提高。
在嵌入式系統的大門前,我只能算是剛剛看到這個大門的臺階,但這段小小的距離讓我受益頗多,現將其中心得奉獻出來,歡迎高手前輩們指正,以供剛接觸的新人參考。
在寫之前,想先寫一句話,千萬不要以為你是天才,所謂天才即勝別人N倍的人,如果你真認為你是天才,請以天才的標準來要求自己,將自己付出和別人的比例以N:1來進行。
(1)學習與生活心態
很多朋友都是在剛步入大學校門開始接觸計算機或者其他。大學是一個很讓人迷茫頹廢的地方,可能你在高中躊躇滿志,但在大學的管理機制下卻心態漸糜。能夠在大學(大一)里找到自己人生之志的同學有多少?目標要明確,不要得過且過,不要追逐熱門的東西。
不管在什么時候,心里都要有自己的信念和理想,不要被其他東西左右了自己。要從興趣和競爭出發,因為這才是你產生動力源的地方。學東西時,要讓自己先喜歡上它,要學會享受學習它的時間,喜歡喬XXX的都知道,喬老爺子最常說的一句就是要享受比賽的時間。
因為只有你喜歡上了它,享受了它,才不會被它所產生的壓力壓倒自己,不要產生一種厭惡的'心理。而且心態要調整,不要一味的蠻學,死學,在沒有什么興趣學的時候可以先玩幾天,在回過頭來,或者用其他的方式來轉換。要抱著一種十年方能磨一劍的心理,扎扎實實從基礎開始,不要為高速開發的一些現象所迷惑,那些都只是軟件的功勞。
我個人認為搞編程,英語和數學很重要,大家一定要時時的抓,至于怎么抓那就是另外一回事了,當然其他的知識也要汲取,可以多接觸點天文,地理,人文方面的東西來補充自己。轉換的生活方式。要學會生活,在人的一生中,都會遇到一些很不開心的事,或者大大小小的意外,孫子兵法里面一句大意就是說,戰場上要會將劣勢轉成優勢,即最大的劣勢很可能就是你的優勢所在。
一個打擊你可以把他變為前進的動力,不必為了一點挫折和捶胸頓足,不必為了一點小事爭吵不休。空閑的時候可以躺下來看看天,你就會明白自強不息,厚德載物之理。(看到一些為了失戀或者其他而墮落的人真的很難受和可惜)。
要給人以幫助。別人有困難時或者一些舉手之勞在自己解決范圍內的盡力幫之,這對自己不會損失什么,相反在對方心里能夠樹立你的形象和增加好感。記住,給人之恩時也是給你自己鋪路,這個世界不是靠你一個人可改變的。
(2)編程語言的選擇語言的爭論。
很多初學擇,老是在學習何種語言上舉棋不定,試問,中國牌子有幾個不被罵的,試問,世界上哪部影片沒人說他壞話的?術業有專攻,各司其職,每個語言的出現肯定都有自己價值和領域的范圍,不同的只是價值和領域的高級和大小。
就像高,矮,胖,瘦組成一個“型”。但是技術是進步的,這個進步也是在舊的基礎上。放心,技術再飛躍也不會今天奔I,明天扣肉的迅速,在學習的同時也要時時關注整個語言界的走勢(貌似哪個偉人說的與時俱進),保持一種同步曲線的前進。語言能干什么?能問這句話,很欣慰。
表明你是從基礎學起才會問出這樣的話來。但換而言之你一開始對這門語言調查的信息不足。廟算者勝,對自己身邊的事物了解是非常重要的,這也能說明說你的教材或者教導你的人不夠充分。如果是我對新手交流,我會花足時間讓他明白這門語言是什么,能干什么,整個體系等等。
這樣在學的時候,對同一條語句上的理解你可能跟別人就不一樣了,因為你知道這門語言的體系架構,你可以從更多的特性角度去挖掘使用它。提高自己對語言閱讀能力。如何快速的進步?可以告訴你沒有一步登天的辦法,但是也可以告訴你如何讓你快速掌握你所學的技術。多讀他人代碼,多領悟他人思維,多給自己出難題,多幾種方法來解問題,多將語言的思想和身邊的事物聯系起來。想想你是怎么掌握普通話的,方法就不具體說了。
編程的思維。計算機是充滿誘惑的東西,很多人都說熱愛計算機,那只是它的表面,你熱愛的只是他的一種擴展性的東西。能學計算機我很高興,因為計算機從某種意義上來說將空間的距離給消除掉了。這里沒有流血,沒有犧牲。你可以以一種藝術家的思維來塑造它,可以以偵探的邏輯思維來解決它,可以以一種戰爭狂人的思維來摧毀它。
你可以將你的這種思維體現在代碼和整個布局里,不要驚異別人代碼思維的異風,你也有自己的思維風格,你也可以,你也可以用自己代碼讓別人驚異。記住你學東西時更多的要體會他的思維,比如數學,微積分,離散,無數的定理,你學完以后可能永遠都用不到,但是你可能有這種感覺,在你碰到某一問題時,這一問題的性質和你學到的東西很類似,但是中間就是差了一點東西,對了,這就是它思維上的一種運用,一種抽象,一種轉換。
嵌入式系統學習心得 篇5
就我個人而言,從最開始對嵌入式一竅不通到現在越學越感興趣,當然相應在嵌入式方面的提高也是很明顯的。學習嵌入式越來越成為我學習中的一部分,現在把我的學習過程的心得體會與大家一起分享,希望那些和我一樣對嵌入式想學而又迷茫,不知從哪入手的同學朋友有所幫助。
1 .基礎知識
嵌入式開發很大一部分靠C語言,尤其在底層驅動等用的很多,當然在應用開發還用到諸如C++等其他語言,但我想對于一個初學者有C基礎就足夠了,等到學到一定程度再去擴展。所以C基礎是學嵌入式的前提。
關于C語言需要知道基本的語法,什么是結構體,什么是共用體,有什么區別,不用強記一些實際中用的很少的東西。C++要知道什么是類,怎么定義,繼承,接口,要深刻理解,當然基本語法也是必不可少的。
操作系統原理也需要基本理解和掌握的,我記得我上課的時候不以為然沒有認真學習,后來發現很多的東西都是在這個課上講到的。什么時間片啊,任務調度啊,都是在那里知道的。
Linux基本命令的使用(vi編輯器必須會用,因為在終端修改文件的時候只能用這個),我們現在很多的人都習慣用鼠標了,很少用到命令,我學習嵌入Linux就強迫自己去改掉這個習慣了,Linux用命令操作一是效率高,二是功能非常強大,遠非圖形界面能比的了的,其實我們用圖形界面的操作都要轉化為命令傳給硬件的。Linux文件系統的管理要清楚,哪個目錄存放是什么東西,有什么用,文件權限管理等。
2.單片機知識的學習
我覺得單片機、嵌入式等這一類都有很大的相似性,知識功能不一樣,但工作的原理、控制原理都和大的相似。就我個人而言,能比較快的`進入嵌入式的學習與提高,很大一部分依賴于對單片機的原理有較深入的學習和理解,單片機比較簡單,學習起來相對比較容易,所以我建議想學嵌入式的同學,可以和我一樣從單片機入手,那樣不僅可以理解這些微處理器、微控制器的操作與控制原理,當然還可以順便學學匯編語言,這對后面的嵌入式學習都有很大的幫助。
看書不要希望一次就會,一次就明白是什么意思,也不要死記硬背,看不明白也沒關系,以后遇到了知道去哪里去找就可以了,以后遇到的多了,也就記住了,遇到的少的,忘記也就忘記了。還有,不要直接閱讀Linux內核源代碼,看一些自己把頭撞破也想不明白的事,一開始很打擊我的積極性,要循序漸進,剛開始我就從學習做led開始的,接著學習做個串口,慢慢的就開始學著做硬件編解碼了。
3.學習開發板
我在剛開始學習嵌入式時就買了一塊學習板,現在的開發板不是很貴,給很我們初學者減輕了經濟負擔。看再多的視頻,看再多的書,也不如自己動手試一下,看著很簡單的東西,做起來就可能遇到很多的問題,遇到問題找到原因,解決問題,只有這樣才能學到東西,記得我第一次寫led的驅動,想自己試一下,網上也有人寫過相關的代碼,可是自己一試,就出了好多的問題,那個led弄了我一天才把led燈點亮。所以不要眼高手低。
4.不要好高騖遠,要腳踏實地
我拿到開發板時,很興奮也很激動,想法自然也很多,想用開發板實現自己的這個想法,實現那個想法,然后又不知道從何下手,然后就去論壇中發一個貼,“那個什么什么怎么實現啊,哪位大俠能詳細說一下啊,跪求!!”,然后等著別人去回復。我覺得有想法是好的,我們要實現自己的想法也是有前提的,首先,我們對這部分知識了解嗎?如果不了解就去Google一下(最好別用百度,不太好用),了解了一些,也就大概知道要怎么做了。如果再遇到問題,再去發貼問,這樣也顯得我們有一點點水平啦。比如自己連串口是什么都不太清楚呢,就問串口通信怎么做啊,就是人家把代碼給我們,我們也不明白是怎么回事啊。
5多看代碼,多寫代碼
見多識廣,熟能生巧。多看代碼,要從代碼中讀出代碼的意思來。自己平時也要多寫代碼,多練習(這一點我做的不好,寫的少)。
個人覺得這是最重要的一種做法。這東西沒自己親手做,程序沒親手寫,沒有進行調試等,都是很難學到東西,因為很多東西感覺看的都懂,其實真正做起來就什么都不會了。因此買塊板來自己做,這樣才能真正將所學的應用到實際中去。而且這樣做印象才能深刻,死記硬背原理及規則不但不可行還會拖垮你的學習興趣,自然學不下。
總之,我覺得,基礎知識很重要,但是動手做更重要!
嵌入式系統學習心得 篇6
首先,我們學習的課本是嵌入式系統應用教程。我學習的體會是這樣的:開始時,由于是剛剛入門,對老師書的好多東西是好奇的,好多名詞也是新鮮的,不過不太懂什么意思。但是慢慢的,了解的深入讓我有了更深的感觸和體會。
在嵌入式的學習過程中,讓我了解了什么是嵌入式系統。它就是以應用為中心,以計算機技術為基礎,軟硬件可定制,適用于不同應用場合,對功能、可靠性、成本、體積、功耗有嚴格要求的計算機系統。他一般由嵌入式微處理器、外圍硬件設備、嵌入式操作系統、用戶應用程序四個部分組成,用于實現對其他設備的控制、監視或管理功能。嵌入式系統已經應用于科學研究、工業控制、軍事技術、交通通信、醫療衛生、消費娛樂等領域,人們日常使用的手機、PDA、汽車、智能家電、GPS等均是嵌入式系統的典型代表。
一開始我們就學習嵌入式的系統的基礎部分,那很簡單,就是一些定義或是介紹之類的。在進入第二章時,就開始學習了嵌入式開發過程中的主要操作系統——linux,在接下來的課程中,我發現嵌入式的學習過程還是蠻有趣的。在對linux的學習中,我們對它有了一點點的了解,接著就是學習一虛擬機的方式安裝linux。對我來說有趣的就是安裝的過程了,首先我們跟著老師的腳步走,學會了怎么安裝,在自己動手進行對它的安裝,這個過程是簡單而有趣的。這樣的開始讓我對它充滿了興趣,也對以后的學習充滿了信心。
其次就是安裝好了之后,老師就更深一步的教我們應用了。在這是老師首先交給我們的是一些簡單的命令應用,Linux具有很豐富的命令,絕大多數命令具有大量的參數。
在學習命令的過程中,只要你認真的看著老師操作還有認真聽著他講,你就會發現有些命令的操作還是很簡單的,不過在操作的.過程中,我也有遇到有些困難,會出現你按照書上學習的例子,將命令輸入終端時會出現你不想要的結果,也就是錯誤的結果。這是問問旁邊的同學或是懂的同學就可以解決了。
在對于這部分的學習中,讓我知道了命令對于嵌入式的重要性。它是linux的重要內容,linux中所有的功能都是通過命令執行。在實際應用中,為了減少系統開銷,經常不使用圖形界面,此時,對系統的所有操作都需要以命令方式來執行。在嵌入式系統開發過程中,由于目標機的性能和配置比較低,因此,一般情況下目標機僅具有命令窗口而沒有圖形界面,對目標機的所有操作都通過命令來實現。
還有的那就是進一步學習與嵌入式系統開發相關的linux的服務,他們的啟動、設置等的操作和應用。而在學習之中,我們主要介紹的是嵌入式系統中開發工程使用的TFTP、Telent和NFS服務。第一個實現的事上機位與下機位之間文件的傳輸、無磁盤網絡的設備的啟動等功能;第二個實現的事遠程登錄功能;第三個實現的是網絡文件系統功能。
從以上的內容之中,并不難感受到我們的學習過程是由淺入深的,這對于我們的學習也有了較好的幫助。
當然,我們學習的不僅僅是這么幾個內容,其中還有相關的實驗內容。在我們基礎的學習的過程之中,我有了這么一點的感受,總的來說就是概念加專業名詞還有介紹加實驗。不過你絕對不能小看那些概念和介紹,它對我們有著很重要的指導作用哦!實驗那就更不用說了,它提高我們的動手能力,在實驗的過程中還能讓你更加理解書中的理念,這就是我學習嵌入式的感受。
【嵌入式系統學習心得】相關文章:
嵌入式系統設計10-07
簡析嵌入式系統09-30
嵌入式系統實習報告03-22
嵌入式學習心得10-01
嵌入式網絡數控技術與系統10-07
arm嵌入式學習心得11-15
機械電子工程專業嵌入式系統教學10-05
嵌入式系統應用個人簡歷范文10-02
嵌入式實時操作系統研究與分析10-06
淺析嵌入式系統支柱學科的交叉與融合10-08