隨着IT產業的發展和人們生活水平的提升,「家庭自動化」、「智能家居」、 「網絡家電」、「家庭網絡」等技術的發展正受到人們的密切關注,相關產品也在逐漸成熟。進一步完善「智能家居」(SmartHome),更好地實現上面描述的情景,給人們的生活帶來本質的變化,就是研究家庭自動化技術的意義所在。linux
下面敘述在智能家居中嵌入式操做系統的開發背景:
傳統的嵌入式應用程序通常是基於單任務機制的1151。在這種機制下,系統程序由基於主循環的按固定順序的功能模塊加上一些中斷模塊構成。這種機制具備程序流程簡潔明瞭,易於編寫、控制和修改等特色,在相對簡單的應用場合獲得普遍應用。現有的智能家居設備軟件不少都採用了這種方法來編寫,如咱們改造設計的伊萊克斯(Electrolux) EW2208F型網絡洗衣機、伯樂DCB-198網絡冰箱、格蘭仕(GaLanz) WD90ODSL23-2網絡微波爐、日本松下電工的WT5572WK調速調光器等。c++
在實際應用中,多數嵌入式系統的功能複雜而且時間要求嚴格並且準確,在這種狀況下,單任務機制每每難以勝任。這時,嵌入式系統每每能夠分解爲多個相對獨立的模塊,將這些模塊理解爲任務,從而引入多任務機制進行管理。引入多任務機制後,能夠簡化系統程序設計,知足各個任務不一樣的實時性要求。git
展望:隨着計算機技術、嵌入式系統和通訊技術的不斷進步,家庭樓宇自動化科技的快速發展,展望嵌入式系統在家庭樓宇自動化的進一步應用,提出瞭如下計劃:
.把16位/32位嵌入式微處理器進一步應用到家庭智能控制系統中。
.在家庭智能控制系統中,進一步集成安防、照明、門禁、監控、遠程設
置等子系統,實現系統的高度集成化、智能化。
.運用電話、互聯網、短消息、GPRS等通信方式,實現系統的遠程控制
.實現語音識別控制家用設備
.在深刻理解現有家庭樓宇自動化協議的基礎上,爭取完成具備自主知識產權,能被市場普遍接納的家庭樓宇自動化協議的制定。
.在紮實的理論實踐基礎上,爭取在嵌入式操做系統的核心技術上取得突破,完成自主知識產權的嵌入式操做系統的開發。
上述計劃仍依照按部就班的原則,最終實現家庭樓宇自動化在國內應用的推廣,以及嵌入式核心技術及自主知識產權的得到。程序員
隨着經濟的發展,人們物質文化需求的日益增加,家庭樓宇自動化系統能大大提升人們的生活品質,爲人們帶來高度智能化的生活,其市場前景是至關廣闊的。在深刻研究嵌入式系統以及家庭樓宇自動化協議,吸取國外先進技術的同時,也要放寬眼界,立足於自主研發和自主知識產權。近年來我國家電業遭遇的一系列技術壁壘已經爲咱們敲響了瞥鍾,國內廠商也加緊了自主協議標準的研發步伐。做爲科研技術人員,應充分發揮創造性,以提升我國科學技術水平爲根本,在家庭樓宇自動化這一領域方興未艾之時,抓住機遇,佔據一席之地算法
*家庭自動化系統的出現是以計算機、嵌入式系統和通信技術的快速發展爲前提的,其中嵌入式系統扮演了很是重要的角色。shell
【嵌入式系統定義】
嵌入式系統一般被定義爲:以應用爲中心,軟硬件可裁減,適應應用系統對功能、可靠性、成本、體積、功耗等綜合性嚴格要求的專用計算機系統[131,它主要包括四個部分:嵌入式微處理器、外圍硬件設備、嵌入式操做系統、應用軟件系統等]數據庫
目前在商業應用領域中主要有VxWork, uC/OS, uCLinux, RTX51等嵌入式操做系統。編程
【就業前景】
我國嵌入式就業前景很是好,由於嵌入式系統和軟件是當前最熱門而且最有發展前途的IT應用領域之一,下面就給你們分析一下嵌入式就業前景。ubuntu
要說嵌入式行業,就要先從嵌入式系統和軟件提及。嵌入式系統和軟件是指嵌入在硬件中的非PC操做系統和開發工具軟件,分爲嵌入式操做系統、嵌入式支撐軟件、嵌入式應用軟件,被稱爲「驅動系統的靈魂。」從昔日的時尚電子產品-MP三、手機、PDA,到現在的新寵家電-智能電視、智能冰箱、機頂盒,再到工業生產及機器人尖端技術,進入21世紀後,IT產業的技術含量可謂愈來愈高,而做爲驅動硬件系統的靈魂-嵌入式操做系統也隨着IT技術的日趨成熟獲得了更爲普遍的應用。今天,嵌入式系統產品的研製和應用已經成爲我國信息化帶動工業化、工業化促進信息化發展的典型例子,也是倍受關注的新的國民經濟增加點。據預測,隨着Internet的迅速發展和廉價微處理器的出現,嵌入式系統將在平常生活裏發揮更大的做用,嵌入式就業前景更加美好。安全
而CCID最近的一次調查顯示,中國嵌入式軟件行業存在每一年至少50萬人才的巨大缺口,而且,這個數字還在以每一年20%的速度遞增。與此相比,國內嵌入式軟件人才供應量正可謂是「杯水車薪」,遠遠不能知足行業的須要。一方面是需求的增加,一方面則是掌握嵌入式軟件開發技能的人才供應缺口巨大。嵌入式就業前景之因此這麼好,是由於嵌入式技術人才稀缺,身價天然就高。從收入上來講,嵌入式人才是當之無愧的白領。
相關數據代表:早在2004年,全球嵌入式系統產品的產值已經達2000億美圓。2006年與嵌入式軟件對應的設備全球時常出貨量達到14億臺,2009年將達到22億臺。與之對應的是,2006年中國嵌入式軟件的市場價值是220億元,2010年將達到550億元。移動嵌入式產品則將是將來銷量增加最快的消費電子類產品之一。嵌入式系統的普遍應用帶來的必然是對相關技術人才的極大需求,然而與這組逐年攀升的數字呈現對比的是國內嵌入式軟件領域技術人員的極度匱乏。在中國的各大跨國公司及國內家電巨頭如INTEL、TI、SONY、三星、TCL、聯想和康佳等企業,都面臨着嵌入式人才嚴重短缺的問題。據悉,目前國內3G核心嵌入式人才不足10000人,以區區10000人的陣容去爭奪價值數百億元的市場,其尷尬局面可想而知。
據瞭解,初入門的嵌入式開發人員月薪通常都能達到3000-5000元,中高級開發人員年薪都在萬元以上,有10年工做經驗的高級嵌入式工程師年薪在30萬元左右。此外,嵌入式人才的工做環境與發展前景也有優點:一是工做強度相對較低。搞嵌入式系統的公司,都有本身的產品計劃,按本身的節奏行事,所開發的產品一般是通用的,不會因客戶的不一樣而修改,一個產品型號開發完了,每每還有較長一段空閒時間進行充電和休整。二是職業發展相對順利。從事企業應用軟件的人,工做範圍廣,項目變化大,平常的積累很難產生質變,容易遭遇職業瓶頸;而從事嵌入式軟件的人,所涉及的專業技術範圍就是比較固定的一個領域,時間長了會愈來愈有經驗。
從上面的文章中咱們都應該對嵌入式就業前景有了很深的認識,既然如今嵌入式就業前景這麼好,對嵌入式有興趣的朋友可要把握住機會了,不管是自學仍是參加培訓都要抓緊,畢竟趁如今嵌入式就業前景這麼好的時候找一份不錯的工做仍是不難的。
【優劣分析】
從事嵌入式軟件開發的好處是:
(1)目前國內外這方面的人都很稀缺。這一領域入門門檻較高,因此非專業IT人員很難切入這一領域;另外一方面,是由於這一領域較新,目前發展太快,大多數人無條件接觸。
(2)與企業計算等應用軟件不一樣,嵌入式領域人才的工做強度一般低一些(但收入不低)。
(3)哪天若想創業,搞自已的產品,嵌入式不像應用軟件那樣容易被盜版。硬件設計通常都是請其它公司給訂作(這叫「貼牌」:OEM),都是通用的硬件,咱們只管設計軟件就變成本身的產品了。
(4)興趣所在,這是最主要的。
從事嵌入式軟件開發的缺點是:
(1) 入門起點較高,所用到的技術每每都有必定難度,若軟硬件基礎很差,特別是操做系統級軟件功底不深,則可能不適於此行。
(2)這方面的企業數量要遠少於企業計算類企業。
(3)有少數公司常常要碩士以上的人搞嵌入式,主要是基於嵌入式的難度。但大多數公司也並沒有此要求,只要有經驗便可。
(4)平臺依託強,換平臺比較辛苦。
【整體規劃】
一、基礎知識:
目的:能看懂硬件工做原理,但重點在嵌入式軟件,特別是操做系統級軟件,那將是個人優點。
科目:數字電路、計算機組成原理、嵌入式微處理器結構。
彙編語言、C/C++、編譯原理、離散數學。
數據結構和算法、操做系統、軟件工程、網絡、數據庫。
方法:雖科目衆多,但都是較簡單的基礎,且大部分已掌握。不必定全學,可根據須要選修。
主攻書籍:the c++ programming language(一直沒時間讀)、數據結構-C2。
二、學習linux:
目的:深刻掌握linux系統。
方法:使用linux—〉linxu系統編程開發—〉驅動開發和分析linux內核。先看深,那主講原理。看幾遍後,看情景分析,對照深看,兩本交叉,深是綱,情是目。剖析則是0.11版,適合學習。最後深刻代碼。
主攻書籍:linux內核徹底剖析、unix環境高級編程、深刻理解linux內核、情景分析和源代。
三、學習嵌入式linux:
目的:掌握嵌入式處理器其及系統。
方法:(1)嵌入式微處理器結構與應用:直接arm原理及彙編便可,不要重複x86。
(2)嵌入式操做系統類:ucOS/II簡單,開源,可供入門。然後深刻研究uClinux。
(3)必須有塊開發板(arm9以上),有條件可參加培訓(進步快,能認識些朋友)。
主攻書籍:毛德操的《嵌入式系統》及其餘arm9手冊與arm彙編指令等。
四、深刻學習:
A、數字圖像壓縮技術:主要是應掌握MPEG、mp3等編解碼算法和技術。
B、通訊協議及編程技術:TCP/IP協議、802.11,Bluetooth,GPRS、GSM、CDMA等。
C、網絡與信息安全技術:如加密技術,數字證書CA等。
D、DSP技術:Digital Signal Process,DSP處理器經過硬件實現數字信號處理算法。
說明:太多細節未說明,可根據實際狀況調整。重點在於一、3,沒必要徹底按照順序做。對於學習c++,理由是c++不僅是一種語言,一種工具,她仍是一種藝術,一種文化,一種哲學理念、但不是拿來炫耀得東西。對於linux內核,學習編程,讀一些優秀代碼也是有必要的。
注意:要學會舉一反多,有強大的基礎,不少東西簡單看看就能會。想成爲合格的程序員,前提是必須熟練至少一種編程語言,並具備良好的邏輯思惟。必定要理論結合實踐。
不要一味鑽研技術,雖然擠出時間是很難作到的,但仍是要留點餘地去完善其餘的愛好,好比宇宙,素描、機械、管理,心理學、遊戲、科幻電影。還有一些不肯意作但必需要作的!
技術是經過編程編程再編程編出來的。永遠不要夢想一步登天,不要作浮躁的人,不要以爲路途漫長。而是要編程編程再編程,完了再編程,再編程!等機會來了在創業(不要相信有奇蹟發生,盲目創業很難成功,即使成功了發展空間也不必定很大)。
【詳細規劃】
這個是購買的視頻目錄,其實已經把嵌入式學習的步驟總結出來了:
**第一階段--環境及基礎篇**
05 軟件視頻包-嵌入式Linux軟件開發入門培訓視頻
共有46個視頻,介紹嵌入式linux 入門須要掌握的基礎知識,包括linux 的基礎知識,shell基礎,vi編輯器,包括嵌入式linux 的C語言編程 學習完本視頻能夠掌握C語言和linux,對linux下的C編程有必定的瞭解。
若是尚未基礎,建議從最基本的C語言和linux開始學。若是你以爲你的基礎還不錯,也能夠跳過這部分,可是建議仍是複習一遍,畢竟基礎紮實一點更好。
06_1 軟件視頻包-Linux強化視頻
強化下Linux方面的知識,這個文件夾下有個《01 Linux學習視頻》,固然,若是你以爲你的Linux還能夠的話,這部分的內容是能夠跳過的,這樣的速度更快
06_2 軟件視頻包-Linux強化視頻
其中02 Linux 深刻網絡視頻是接上06_01上的,這部分的內容是講Linux網絡工程師的,這部分的內容咱們能夠先不學
03 Linux shell強化視頻這部分的視頻咱們須要學習下,畢竟shell在嵌入式行業中仍是須要使用的,學習這部分的內容最重要的是也要動手去操做,老師寫了什麼腳本,咱們也應該去跟着寫下,運行下
04 Linux shell深刻視頻也能夠學習,這樣對於shell 咱們就有了完整的瞭解。
07 軟件視頻包-Linux下的C編程上
這個主要介紹Linux下的C編程和調試環境,這部分的教程很不錯,由於這部分的教程老師也講了不少的例子,這部分的內容也有對應課本,建議也能夠購買下,《新手學Linux C編程》
08 軟件視頻包-中嵌第一階段(Linux系統基礎)
其實本部分的內容和前面的內容有點重複,仍是那句老話,以爲簡單的跳過,否則就當複習,由於不少知識就是要靠重複記憶的。 還有一點就是老師講課都有帶一些實驗,記得你也要動手操做,反正環境都有了,操做了纔不容易忘記。
在這裏,也告訴你們一個很好用的查詢Linux函數如何使用的方法,通常咱們能夠是用man進行查詢,好比咱們要查詢memcpy這個函數是怎麼使用的,有什麼樣的參數,須要引入什麼的頭文件,咱們只須要在終端中輸入man memcpy就能夠查詢到手冊,也能夠查詢到這個函數的使用方法。
**第二階段--Linux應用編程強化階段**
09 軟件視頻包-Linux下的C編程下
這部分的內容必定要認真看,這是您打好基礎的時候,還有一點,再次強調下,就是老師上課上說的程序您必定要去實驗,能夠先在虛擬機上寫程序,不要以爲我聽懂了,那爲了進度,就一直看下去,記住,動手纔是最重要!動手絕對能夠加深您的理解!
10 軟件視頻包-中嵌第二階段(Linux編程)
這部分的內容很重的,但願大家在學習的過程當中多動手,也記下筆記,方便之後的複習。
**第三階段--嵌入式學習階段**
11_1 硬件視頻包-可選-單品機經典培訓教程
這個簡單建議你學習下單片機,畢竟單片機仍是比較簡單,可是若是你想直接進入下一步第三階段(ARM程序設計)也何嘗不可。
11_2 硬件視頻包-可選-單品機經典培訓教程
本階段是可選階段
12_1 硬件視頻包-可選-數字電子技術基礎
本階段是可選階段,能夠說這部分的內容幾乎覆蓋了整個嵌入式硬件的基礎
硬件方向,無基礎的同窗可先別學,這個階段適合之後想學習硬件的同窗,可是我不建議沒有基礎的同窗去搞硬件,相對入門比較難,若是之後想作嵌入式的軟件的同窗也能夠不急着看硬件的內容。固然瞭解下更好
13 硬件視頻包-可選-電路分析培訓教程
本階段是可選階段
14 軟件視頻包-中嵌視頻第三階段(ARM)
這部分仍是很不錯的,惟一有點遺憾是視頻27 28 29因爲老師錄製的時候忘記錄制聲音了,致使沒有聲音,不過這影響不大,咱們能夠看關於國嵌的相應的內容不至於斷節。
相關的知識其實還好咱們有其餘的視頻能夠代替了,能夠參考 光盤 (07)\16 軟件視頻包-ARM初學者視頻\第一講 ARM體系結構和軟件(2) 這部分的內容也是講ARM處理器以及指令的。
15 軟件視頻包-ARM初學者工具使用方法
這部分咱們主要講解一些ARM開發使用的工具,老師在講解的此課
程的時候,咱們須要瞭解他的原理,以及怎麼樣把這些知識應用到不一樣的
開發板
16 軟件視頻包-ARM初學者視頻
不過不必定要去買他們的開發板的,關鍵你要把這些外設的原理和
ARM的相關知識掌握
17_1 軟件視頻包-ARM開發板視頻教程
若是學習本教程的時候,您須要安裝ubuntu,能夠直接從光盤 (17)\32
開發工具包-安裝好的ubuntu拷貝
這些內容都是相對比較抽象,若是有什麼不懂的,不明白的,必定要先記住概念,等你之後接觸多了,遇到相關的知識時,你會豁然開朗的
17_2 軟件視頻包-ARM開發板視頻教程
PS:學習至此,咱們對於linux 編程,ARM的體系結構都有了必定的瞭解,以及對於嵌入式常見的各類外設熟悉了。其實如今對於嵌入式系統的知識仍是比較欠缺的,而這些實際上是很是重要的,雖然不能說能夠決定你的高度,可是瞭解嵌入式系統,能夠它卻能夠決定你的寬度,瞭解了嵌入式系統,對於你之後程序優化,程序分析都有很是大的幫助
18 軟件視頻包-嵌入式系統30學時
19 軟件視頻包-嵌入式系統設計培訓教程
20 軟件視頻包-ARM S3C44B0 嵌入式微處理器原理及應用
21_1 軟件視頻包-嵌入式系統及應用開發培訓視頻
21_2 軟件視頻包-嵌入式系統及應用開發培訓視頻
接下來的關於嵌入式系統的課程知識點很寬,比培訓機構的視頻沒有深度,可是更有廣度,培訓機構的內容太功利化,只教要用的知識,其實這是不夠的,若是真的要學好,你仍是須要懂得方方面面後才能再精通某一方面。
**第四階段--嵌入式高級階段 **
25_1 軟件視頻包-底層內核和驅動培訓視頻
25_2 軟件視頻包-底層內核和驅動培訓視頻
26_1 軟件視頻包-驅動內核學習階段
這部分主要講關於u-boot分析之編譯,u-boot分析之Makefile結構分析以及u-boot分析之源代碼分析等等
26_2 軟件視頻包-驅動內核學習階段
這部分主要講u-boot分析之u-boot命令實現,u-boot分析_uboot啓動內核,內核啓動流程分析之編譯體驗,內核啓動流程分析之配臵,內核啓動流程分析之Makefile,內核啓動流程分析以內核啓動,構建根文件系統之init 進程分析,.構建根文件系統之構建根文件系統。
26_3 軟件視頻包-驅動內核學習階段
這部分主要講構建根文件系統之啓動第1個程序、構建根文件系統之busybox、字符設備驅動程序之概念介紹、字符設備驅動程序之LED驅動程序、字符設備驅動程序之查詢方式的按鍵驅動程序、字符設備驅動程序之中斷方式的按鍵驅動、字符設備驅動程序之poll機制、字符設備驅動程序之異步通知、字符設備驅動程序之同步互斥阻塞。
27軟件視頻包-中嵌第四階段(驅動內核)
講述內核,驅動,UBOOT, makefile 等等。 還有嵌入式圖形用戶界面的編程-Qtopia(Embedded) 嵌入式Boa視頻服務器項目指導 經過Make與Makefile對Linux進行移植與裁剪 Uboot介紹以及用Uboot下載Linux內核到三星S3C2410開發板上(基於ARM9內核).
**第五階段--嵌入式實踐階段 **
28 實踐開發包
29 行業視頻包
**第六階段--嵌入式深化階段**
31 軟件視頻包-linux 內核編程初級班培訓教程
軟件視頻包-linux內核編程初級班培訓教程.rar共有30個視頻,都是基於代碼分析的,講述linux內核的基礎知識,彙編及保護模式,linux內核體系結構,linux引導程序分析,linux內核代碼分析,linux塊設備驅動程序分析
32 開發工具包-安裝好的ubuntu
這個是安裝好的ubuntu,能夠用於以前的一些課程的學習
33 開發工具包-RedHat企業版安裝光盤
34 軟件視頻包-linux 內核編程高級班培訓教程
若是想學習內核,值得推薦。包括AT&T彙編語法格式 、通用鏈表、系統寄存器 、尋址方式 、頁式內存管理機制、異常與中斷處理 、啓動步驟、start_kernel簡介 內存管理數據結構、用戶堆棧空間的擴展、交換頁面的分配與釋放、分配物理頁面、slab機制、外設存儲空間的映射、brk、mmap、進程結構要素、建立進程、進程調度與切換、強制調度、中斷初始化與響應服務過程、tasklet機制、系統調用、文件系統概述、文件名到i節點的解析過程、文件系統的安裝與卸載、可執行文件格式、執行目標程序、無名管道、命名管道、信號、1pci總線、2掃描pci設備、3pci總線中斷初始化、4爲pci設備分配總線地址。
嵌入式書籍推薦:
Linux基礎
一、《Linux與Unix Shell 編程指南》 *
C語言基礎
一、《C Primer Plus,5th Edition》【美】Stephen Prata着
二、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
三、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
四、《嵌入式Linux應用程序開發詳解》 *
Linux內核 一、《深刻理解Linux內核》(第三版)
二、《Linux內核源代碼情景分析》毛德操 胡希明着
研發方向
一、《UNIX Network Programming》(UNP)
二、《TCP/IP詳解》
三、《Linux內核編程》
四、《Linux設備驅動開發》(LDD)*
硬件基礎
一、《ARM體系結構與編程》杜春雷着
二、S3C2410 Datasheet
英語基礎
一、《計算機與通訊專業英語》
系統教程
一、《嵌入式系統――體系結構、編程與設計》
二、《嵌入式系統――採用公開源代碼和StrongARM/Xscale處理器》毛德操 胡希明着 *
三、《Building Embedded Linux Systems》
理論基礎
一、《算法導論》
二、《數據結構(C語言版)》
三、《計算機組織與體系結構?性能分析》
四、《深刻理解計算機系統》【美】Randal E. Bryant David O''Hallaron着
五、《操做系統:精髓與設計原理》
六、《編譯原理》
七、《數據通訊與計算機網絡》
八、《數據壓縮原理與應用》
C語言書籍推薦
1. The C programming language 《C程序設計語言》
2. Pointers on C 《C和指針》
3. C traps and pitfalls 《C陷阱與缺陷》
4. Expert C Lanuage 《專家C編程》
5. Writing Clean Code
-----Microsoft Techiniques for Developing Bug-free C Programs
《編程精粹--Microsoft 編寫優質無錯C程序祕訣》*
6. Programming Embedded Systems in C and C++
《嵌入式系統編程》 *
7.《C語言嵌入式系統編程修煉》 *
8.《高質量C++/C編程指南》林銳
儘量多的編碼,要學好C,不能只注重C自己。算法,架構方式等都很重要。