電腦、PDA、電子詞典、可視電話、VCD/DVD/MP3播放器、數碼相機(DC)、數碼攝像機(DV)、u盤、機頂盒、高清電視(HDTV)、遊戲機、智能玩具、交換機、路由器、數控設備或儀器、汽車電子、家電控制系統、醫療儀器、航空航天。
嵌入式系統是軟件和硬件的結合,從事嵌入式開發的有兩種人。
壹類是硬件專業的,比如電子工程,通信工程。他們主要從事硬件設計,有時還要開發壹些與硬件關系最密切的底層軟件,比如BootLoader、板卡支持等。
包(就像PC的BIOS,它驅動硬件向下,支持操作系統向上),最基本的硬件驅動程序等。他們的優點是對硬件原理非常清楚,缺點是更擅長定義各種硬件接口,但往往無法應對復雜的軟件系統(如嵌入式操作系統原理和復雜的應用軟件)。
另壹類是軟件和計算機專業的人,主要從事嵌入式操作系統和應用軟件的開發。如果我們這些軟件學習者很好的掌握了硬件原理和接口,也可以寫BSP和硬件驅動。嵌入式硬件設計出來之後,各種功能都是通過軟件來實現的,嵌入式設備的增值很大程度上依賴於嵌入式軟件。
這就占了嵌入式系統最重要的工作(目前很多公司把硬件設計包給專門的硬件公司,稍微復雜壹點的硬件都是臺灣省或者國外公司設計的。國內的硬件設計實力很弱,很多嵌入式公司只負責自己開發軟件,因為公司都知道嵌入式產品的區別很大程度上在軟件上,軟件是最“花裏胡哨”的)。
所以,我們軟件開發者根本不用擔心自己在嵌入式市場的地位。智能設備和復雜系統越多,關鍵軟件就越重要,這是當前的趨勢。
從事嵌入式軟件開發的優勢在於:
(1)目前這方面的人國內外都比較稀缺。壹方面,由於這壹領域的進入門檻較高,非專業IT人員很難切入這壹領域的另壹面,不僅因為他們需要了解更低層的軟件(如操作系統層和驅動程序層的軟件),還因為嵌入式系統在軟件設計上要求更高的時空效率。
面,由於目前這個領域比較新,發展太快,很多軟硬件技術出現時間不長或者正在興起(如ARM處理器、嵌入式操作系統、MPEG技術、無線通信協議等。),而掌握這些新技術的人當然不好找。嵌入式人才稀缺,價值自然高。他們越有經驗,他們的價格就越高。其實嵌入式人才稀缺的根本原因可能是大部分人都沒有組織能力。
這就需要相應的嵌入式開發板和軟件,也需要有經驗的人來指導開發過程。
(2)與企業計算等應用軟件不同,嵌入式領域人才的工作強度通常較低(但收入不低)。對於搞企業應用軟件的IT企業來說,這個用戶的系統做好了,又要搞下壹個用戶的,每個用戶的需求和完成時間都要根據客戶的要求來改變,往往是疲憊和重復的。相比之下,從事嵌入式系統的公司都有自己的。
產品規劃,按您自己的步調。開發出來的產品壹般都是通用的,不會被不同的客戶修改。壹個產品型號開發出來後,往往會有很長壹段空閑時間(或者只是對軟件做壹些小修),有時間充電休息。另外,大家從事嵌入式軟件的工作範圍都比較窄,涉及的專業技術範圍都是那些(ARM,
RTOS、MPEG、802.11等。),時間久了,這些東西會越來越有經驗,賣舊書就夠新手琢磨半年了。如果妳是搞應用軟件的,也許下壹個客戶會換壹個完全不同的軟件開發平臺,那就苦了。
(3)如果有壹天妳想創業,想做自己的產品,那麽嵌入是個不錯的主意,不像應用軟件那麽容易被盜版。土木工程學院壹家叫啟星的公司開發了壹款叫“Project E”的手持PDA(南校區門口有廣告)。施工技術人員可以用這款PDA現場進行土建預算估算等土建計算,據說賣得很好。我知道的某所大學。
老師,他為餐廳開發的點餐PDA(WinCE平臺,可以無線上網)賣的不錯,餐廳讓顧客用小PDA點餐,比較時尚。記得00級22班的壹群同學在學習Windows編程課程的時候,用VC設計了壹個功能強大的點餐系統作為課程項目。當時我很想建議他們把這個軟件做成PDA,估計是可以的。
有壹些市場(上海火車站南廣場的麥當勞用漂亮的PDA為用戶點餐,看起來很體面)。這些PDA的硬件設計通常由其他公司定制(這稱為“OEM”),它們都是常見的硬件。我們只是設計軟件,成為自己的產品。
從事嵌入式軟件開發的劣勢有:
(1)起點高,使用的技術往往難度較大。如果軟硬件基礎不好,尤其是操作系統級軟件基礎不深,可能不適合此行。
(2)該領域的企業數量遠遠少於企業計算企業。特別是嵌入式小企業多(小企業要自己做產品),知名大公司少(嵌入式大公司主要有Intel、摩托羅拉、TI、Philip、三星、索尼、Futjtum、貝爾-阿爾卡特、意法半導體、中晶、研華、華為、中興、SVA)。
如制造企業)。這些企業習慣性的思維方式是找電子、通信等硬專業的人。因為以前正規大學的軟件學院畢業生主要是做企業計算,所以正規大學的軟件學院和這些企業的接觸相對較少。正規院校軟件學院正在努力,目前已經和其中心分部建立了聯系,為的是以後有正規院校軟件學院的學生來這裏。
在壹些企業實習或就業。
(3)少數公司往往要求碩士以上學歷的人從事嵌入式技術,主要是基於嵌入式技術的難度。但是大部分公司沒有這個要求,只要有經驗就行。
如果正規大學軟件學院的學生學習嵌入式軟件,顯然應該以嵌入式軟件為主,尤其是嵌入式操作系統,應該是我們的強項。對於從事嵌入式軟件的人來說,最重要的技術顯然是(其實很多公司的招聘廣告裏都有寫):
(1)掌握主流嵌入式微處理器的結構和原理。
(2)必須掌握嵌入式操作系統。
(3)必須熟悉嵌入式軟件的開發流程,做過至少壹個嵌入式軟件項目。
普通高校軟件學院最重要的嵌入式軟件課程有:
(1)嵌入式微處理器的結構與應用:這是壹門嵌入式硬件的基礎課程,傳統課程“微機原理與接口”在正規大學的軟件學院已經被這門課程取代(目前國內高校的it專業已經有少數在做,因為講x86微機原理與接口很難找到實際用途,只是為了教學)。我們說過,嵌入式技術是軟硬件結合,嵌入式軟件是搞的。
人們應該充分了解ARM處理器的工作原理和接口技術,包括ARM匯編指令系統。如果不了解處理器的原理,怎麽控制硬件工作,怎麽寫出最節省內存高速運行的代碼(嵌入式軟件設計特別註重時空效率),怎麽寫驅動程序(驅動程序都是和硬件打交道的)?很多公司招聘嵌入式軟件人員。
您需要熟悉ARM處理器。以後如果學生來公司開發嵌入式軟件,公司會給妳壹份設備的硬件說明書(xxx
規格),妳必須能理解內存分配、端口使用等最基本的指令(就像x86匯編壹樣),否則如何設計軟件。有些同學認為嵌入式處理器課程很枯燥,這主要是因為硬件課程比較抽象。我們的嵌入式實驗室在5438年6月+10月建好之後,妳做壹些實驗就會覺得摸得著。也有對a感興趣的同學。
RM匯編不感興趣,以為嵌入式開發用C語言就夠了。其實不應該只是把匯編語言當成編程語言,學習匯編主要是為了掌握處理器的工作原理。壹個不熟悉匯編語言的人如何在這個處理器上寫出最好的C語言代碼?在嵌入式開發的壹些關鍵部分,有時需要編寫匯編,比如Bootloader等。
也可以包括BSP)。尤其是在速度要求極高的情況下(比如DSP處理器的高速圖像采集和圖像解壓縮),目前程序主要是由sinks編寫的(我看到很多公司都是這麽做的)。當妳在嵌入式公司工作的時候,妳看描述原理的手冊,可能很多都是用匯編來描述的(我也遇到過),因為很多硬件設計師。
只能寫或者喜歡用匯編描述。這個時候妳壹定要懂匯編程序,否則軟硬件人員可能無法溝通。很多嵌入式崗位在招聘時都要求熟悉組裝。