嵌入式系統由硬件和軟件組成.是能夠獨立進行運作的器件。其軟件內容只包括軟件運行環境及其操作系統。硬件內容包括信號處理器、存儲器、通信模塊等在內的多方面的內容。相比于一般的計算機處理系統而言,嵌入式系統存在較大的差異性, 它不能實現大容量的存儲功能,因為沒有與之相匹配的大容量介質,大部分采用的存儲介質有E-PROM、EEPROM DENG等, 軟件部分以API編程接口作為開發平臺的核心。
以應用為中心:強調嵌入式系統的目標是滿足用戶的特定需求。就絕大多數完整的嵌入式系統而言,用戶打開電源即可直接享用其功能,無需二次開發或僅需少量配置操作。
專用性:嵌入式系統的應用場合大多對可靠性、實時性有較高要求,這就決定了服務于特定應用的專用系統是嵌入式系統的主流模式,它并不強調系統的通用性和可擴展。這種專用性通常也導致嵌入式系統是一個軟硬件緊密集成的最終系統,因為這樣才能更有效地提高整個系統的可靠性并降低成本,并使之具有更好的用戶體驗。
以現代計算機技術為核心:嵌入式系統的最基本支撐技術,大致上包括集成電路設計技術、系統結構技術、傳感與檢測技術、嵌入式操作系統和實時操作系統技術、資源受限系統的高可靠軟件開發技術、系統形式化規范與驗證技術、通信技術、低功耗技術、特定應用領域的數據分析、信號處理和控制優化技術等,它們圍繞計算機基本原理,集成進特定的專用設備就形成了一個嵌入式系統。
軟硬件可裁剪:嵌入式系統針對的應用場景如此之多,并帶來差異性極大的設計指標要求(功能性能、可靠性、成本、功耗),以至于現實上很難有一套方案滿足所有的系統要求,因此根據需求的不同,靈活裁剪軟硬件、組建符合要求的最終系統是嵌入式技術發展的必然技術路線。
嵌入式計算機的真正發展是在微處理器問世之后。1971年11月,算術運算器和控制器電路成功的被集成在一起,推出了第一款微處理器,其后各廠家陸續推出了8位、16位微處理器。以這些微處理器為核心所構成的系統廣泛地應用于儀器儀表、醫療設備、機器人、家用電器等領域。微處理器的廣泛應用形成了一個廣闊的嵌入式應用市場,計算機廠家開始大量地以插件方式向用戶提供OEM產品,再由用戶根據自己的需要選擇一套適合的CPU板、存儲器板及各式I/O插件板,從而構成專用的嵌入式計算機系統,并將其嵌入自己的系統設備中。
20世紀80年代,隨著微電子工藝水平的提高,集成電路制造商開始把嵌入式計算機應用中所需要的微處理器、I/O接口、A/D轉換器、D/A轉換器、串行接口,以及RAM、ROM等部件全部集成到一個VLSI中,從而制造出面向I/O設計的微控制器,即俗稱的單片機。單片機成為嵌入式計算機中異軍突起的一支新秀。20世紀90年代,在分布控制、柔性制造、數字化通信和信息家電等巨大需求的牽引下,嵌入式系統進一步快速發展。面向實時信號處理算法的DSP產品向著高速、高精度、低功耗的方向發展。21世紀是一個網絡盛行的時代,將嵌入式系統應用到各類網絡中是其發展的重要方向。
嵌入式系統的發展大致經歷了以下三個階段:
第一階段:嵌入技術的早期階段。嵌入式系統以功能簡單的專用計算機或單片機為核心的可編程控制器形式存在,具有監測、伺服、設備指示等功能。這種系統大部分應用于各類工業控制和飛機、導彈等武器裝備中。
第二階段:以高端嵌入式CPU和嵌入式操作系統為標志。這--階段系統的主要特點是計算機硬件出現了高可靠、低功耗的嵌入式CPU,如ARM、PowerPC等,且支持操作系統,支持復雜應用程序的開發和運行。
第三階段:以芯片技術和Internet技術為標志。微電子技術發展迅速,SOC(片上系統)使嵌入式系統越來越小,功能卻越來越強。目前大多數嵌入式系統還孤立于Internet之外,但隨著Internet的發展及Internet技術與信息家電、工業控制技術等結合日益密切,嵌入式技術正在進入快速發展和廣泛應用的時期。
嵌入式開發如何入門呢?
1、C語言的學習
C語言是嵌入式軟件開發人員必須熟練掌握的編程語言。作為C語言的初學者重點掌握基本數據類型、復合數據類型、流程控制、數組、指針、函數這幾方面的基本知識。本人建議通過觀看視頻教學的方式進行學習,這樣既快速又通俗易懂,當然前提是必須找到優質的教學視頻資源。此外,可以配合入門書籍譚浩強的《C語言程序設計》進行學習。如果想深入的學習可以參考美國人寫的人民郵電出版社出版的《C Primer Plus》。
2、C語言的磨煉
掌握了基本的C語言語法以后并不代表我們就學會了C語言,關鍵是如何靈活的去運用。我們可以練習編寫C語言學習書籍的課后習題或者在網站上搜索C語言筆試題庫進行練習。也可以百度尋找經典的C語言編程案例進行學習。總之,就是將C語言運用的越熟練越好。至于開發環境可以選擇VC++ 6.0 或者linux。
3、硬件電路基礎
嵌入式軟件工程師還必須懂一些硬件電路的基本知識。當然,對于剛入門的軟件開發人員沒必要非常精通電路技術,熟悉基本的電子元器件的功能即可。例如,電阻、電容、電感的作用以及符號,三極管、MOS管導通截止的條件,微處理器、晶振的基本概念等。至于,以上這些基本知識我們可以通過童詩白的第四版《模擬電子技術基礎》和網上查閱的資料進行學習。
4、看懂原理圖
作為嵌入式軟件開發人員我們經常會和硬件打交道,我們的程序最終會被燒錄到微處理器內部運行。所以,我們必須要會看硬件原理圖,看懂之后才知道如何寫程序。首先,我們要知道嵌入式硬件最小系統的組成部分,包括電源電路、晶振、微處理器、復位電路。然后以微處理器為中心向四周查看,主要看我們可以操縱的外設資源。以上知識的學習我們不妨經常瀏覽一下某些知名IT網站其他人上傳的經典原理圖。
5、基本外設知識
嵌入式程序很大一部分工作都是在控制外部設備或者與外部設備進行通信。例如,LED燈、數碼管、RS232、AD/DA、I2C總線、SPI總線等。以上基本外設的知識完全可以通過百度百科或者網站大牛們寫的博客進行學習。這樣比查閱相關書籍學習的要快而且深入。此時,基本了解各個外設的概念、原理即可。至于深入的掌握還需進行實戰開發。
6、開發板實戰
以上基本都是理論知識的學習,要想真正的理解并且深刻的掌握。必須通過實戰開發來更加深入的學習。我們可以買一個51系列的開發板或者高級一點的STM32開發板進行實戰演練。根據開發板提供的教學視頻或者自己摸索實踐將開發板自帶的常用外設全部調試一遍。至于,針對51開發板、STM32開發板的嵌入式開發環境我們可以采用KEIL4_MDK進行開發。
7、項目整合
有了以上的基礎理論知識和簡單的實戰經驗,我們還需要通過完整的項目來整合自己的技能和熟悉項目的開發過程。我們可以利用開發板自帶的資源來開發萬年歷、遙控開關、計算器等小項目。或者采購一些比較有意思的項目套件進行開發,例如智能小車、遙控飛機等。通過以上步驟的練習,如果你能順利的堅持下來,我想你已經進入嵌入式軟件開發的大門了。