|
單片機和嵌入式,其實沒有什么標準的定義來區(qū)分他們,對于進行過單片機和嵌入式開發(fā)的開發(fā)者來說,都有他們自己的定義,接下來,就談談這兩個概念的理解。
什么是單片機
什么是嵌入式
那么什么是嵌入式呢,一般說嵌入式都是指嵌入式系統(tǒng),IEEE(InsTItuteof Electrical and ElectronicsEngineers,美國電氣和電子工程師協(xié)會)對嵌入式系統(tǒng)的定義:“用于控制、監(jiān)視或者輔助操作機器和設(shè)備的裝置”。
嵌入式系統(tǒng)是一種專用的計算機系統(tǒng),作為裝置或設(shè)備的一部分。通常,嵌入式系統(tǒng)是一個控制程序存儲在ROM中的嵌入式處理器控制板。
嵌入式系統(tǒng)是將應用程序、操作系統(tǒng)、和計算機硬件連接在一起的系統(tǒng),是指以應用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,其針對的用戶應用對功能、可靠性、成本、體積、功耗和使用環(huán)境有特殊要求的專用計算機系統(tǒng)。
嵌入式的硬件層
硬件層中包含嵌入式微處理器、存儲器(SDRAM、ROM、Flash等)、通用設(shè)備接口和I/O接口(A/D、D/A、I/O等)。在一片嵌入式處理器基礎(chǔ)上添加電源電路、時鐘電路和存儲器電路,就構(gòu)成了一個嵌入式核心控制模塊。其中操作系統(tǒng)和應用程序都可以固化在ROM中。
其中核心就是微處理器,嵌入式處理器和一般的電腦CPU還有區(qū)別,嵌入式微處理器大多工作在特定設(shè)計的系統(tǒng)中,比如TI或者Atmel公司都有很多定位不同的處理器,atmel的SAM系列是專門為物聯(lián)網(wǎng)設(shè)計的,AVR則由于性能突出,廣泛應用于工業(yè)領(lǐng)域。
嵌入式微處理器有各種不同的體系,即使在同一體系中也可能具有不同的時鐘頻率和數(shù)據(jù)總線寬度,或集成了不同的外設(shè)和接口。據(jù)不完全統(tǒng)計,全世界嵌入式微處理器已經(jīng)超過1000多種,體系結(jié)構(gòu)有30多個系列,其中主流的體系有ARM、MIPS、PowerPC、X86和SH等。
但與全球PC市場不同的是,沒有一種嵌入式微處理器可以主導市場,僅以32位的產(chǎn)品而言,就有100種以上的嵌入式微處理器。嵌入式微處理器的選擇是根據(jù)具體的應用而決定的。
在嵌入式領(lǐng)域,可以說ARM架構(gòu)的處理器占據(jù)了半壁江山,而ARM公司也成為著名的科技公司,而它卻沒有生產(chǎn)任何處理器,而只是提供了IP,可以看出一流公司做標準。而其他用的比較多的架構(gòu)就是MIPS,sparc、powerpc等。
比如ARM公司有各種各樣的處理器架構(gòu),最經(jīng)典的cortex系列,它屬于ARMv7架構(gòu),這是到2010年為止ARM公司最新的指令集架構(gòu)。ARMv7架構(gòu)定義了三大分工明確的系列:“A”系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應用;“R”系列針對實時系統(tǒng);“M”系列對微控制器。
嵌入式系統(tǒng)和外界交互需要一定形式的通用設(shè)備接口,如A/D、D/A、I/O等,外設(shè)通過和片外其他設(shè)備的或傳感器的連接來實現(xiàn)微處理器的輸入/輸出功能。每個外設(shè)通常都只有單一的功能,它可以在芯片外也可以內(nèi)置芯片中。外設(shè)的種類很多,可從一個簡單的串行通信設(shè)備到非常復雜的802.11無線設(shè)備。
嵌入式系統(tǒng)中常用的通用設(shè)備接口有A/D(模/數(shù)轉(zhuǎn)換接口)、D/A(數(shù)/模轉(zhuǎn)換接口),I/O接口有RS-232接口(串行通信接口)、Ethernet(以太網(wǎng)接口)、USB(通用串行總線接口)、音頻接口、VGA視頻輸出接口、I2C(現(xiàn)場總線)、SPI(串行外圍設(shè)備接口)和IrDA(紅外線接口)等。這一點其實和單片機類似。
嵌入式的軟件層
也就是操作系統(tǒng)了,包括內(nèi)核和文件系統(tǒng),還有就是更為頂層的應用程序,嵌入式操作系統(tǒng)一般都是Linux或者其他類Unix,還有一些實時操作系統(tǒng)(RTOS)比如VxWorks、RTEMS、ucOS等。
其中Linux還包括不同的distribuTIon,比如Ubuntu、Redhat、Debian、centos等,他們都是采用Linux的內(nèi)核,不同的是上面的software和tools,當然不用太過于擔心標準問題,這些Linux發(fā)行版選擇的軟件幾乎都是比較通用的,比如網(wǎng)頁服務器的Apache、電子郵件服務器的postfix、sendmail、文件服務器的Samba等。此外還有Linuxstandard base等標準來規(guī)范開發(fā)者。類Unix主要是FreeBSD以及Solaris等。
嵌入式領(lǐng)域最常用的之一是實時操作系統(tǒng),實時操作系統(tǒng)的核心就是實時性,本質(zhì)就是任務處理所花費的時間的可預測性,即任務需要在規(guī)定時限內(nèi)完成。IEEE對實時系統(tǒng)的定義是“那些正確性不僅取決于計算的邏輯結(jié)果也取決于產(chǎn)生結(jié)果所花費時間的系統(tǒng)”。
實時操作系統(tǒng)有硬實時和軟實時之分,硬實時要求在規(guī)定的時間內(nèi)必須完成操作,這是在操作系統(tǒng)設(shè)計時保證的; 軟實時則只要按照任務的優(yōu)先級,盡可能快地完成操作即可。我們通常使用的操作系統(tǒng)在經(jīng)過一定改變之后就可以變成實時操作系統(tǒng)。
實時操作系統(tǒng)和Linux這種分時操作系統(tǒng)的區(qū)別列舉如下:
(1)多路性。實時信息處理系統(tǒng)與分時系統(tǒng)一樣具有多路性。系統(tǒng)按分時原則為多個終端用戶服務; 而對實時控制系統(tǒng),其多路性則主要表現(xiàn)在經(jīng)常對多路的現(xiàn)場信息進行采集以及對多個對象或多個執(zhí)行機構(gòu)進行控制。
(2)獨立性。實時信息處理系統(tǒng)與分時系統(tǒng)一樣具有獨立性。每個終端用戶在向分時系統(tǒng)提出服務請求時,是彼此獨立的操作,互不干擾;而在實時控制系統(tǒng)中信息的采集和對對象的控制,也彼此互不干擾。
(3)及時性。實時信息系統(tǒng)對實時性的要求與分時系統(tǒng)類似,都是以人所能接受的等待時間來確定;而實時控制系統(tǒng)的及時性,則是以控制對象所要求的開始截止時間或完成截止時間來確定的,一般為秒級、百毫秒級直至毫秒級,甚至有的要低于100微秒。
(4)交互性。實時信息處理系統(tǒng)具有交互性,但這里人與系統(tǒng)的交互,僅限于訪問系統(tǒng)中某些特定的專用服務程序。它不像分時系統(tǒng)那樣能向終端用戶提供數(shù)據(jù)處理服務、資源共享等服務。
(5)可靠性。分時系統(tǒng)要求系統(tǒng)可靠,相比之下,實時系統(tǒng)則要求系統(tǒng)高度可靠。因為任何差錯都可能帶來巨大的經(jīng)濟損失甚至無法預料的災難性后果。因此,在實時系統(tǒng)中,采取了多級容錯措施來保證系統(tǒng)的安全及數(shù)據(jù)的安全。
由于更加可靠和及時。嵌入式實時操作系統(tǒng)更加廣泛應用于工業(yè)控制、航空航天、軍工等領(lǐng)域,比如美國航天局NASA近幾年發(fā)射的火星探測器等都是采用的RTEMS實時操作系統(tǒng)。
嵌入式的中間層
所謂的中間層就是軟件層和硬件層之間的接口層,其實嚴格而言也屬于軟件層。一般開發(fā)者稱之為BSP,這一層主要負責的是向下提供硬件的驅(qū)動,硬件的配置等操作,向上則向軟件開發(fā)者提供標準API,進行中間層開發(fā)的開發(fā)者通常稱為嵌入式驅(qū)動工程師。
從這里也可以看出來,嵌入式設(shè)計和軟硬都分不開,既要掌握底層硬件的特性以及如何驅(qū)動其工作,也要了解操作系統(tǒng)的相關(guān)知識,才可以編寫相應功能的應用。
因此看一個操作系統(tǒng)是否支持某個芯片或者某個開發(fā)板,只要看其源碼中是否包含相應芯片或開發(fā)板的板級支持包。
嵌入式系統(tǒng)應該跑在什么樣的硬件上
談起嵌入式硬件或者開發(fā)板,我想很多人第一印象就是RaspberryPi,是一塊只有信用卡大小的微型電腦,別看其外表“嬌小”,內(nèi)“芯”卻很強大,視頻、音頻等功能通通皆有,可謂是“麻雀雖小,五臟俱全”。樹莓派推出后,很多廠商爭相推出類似產(chǎn)品,比如香蕉派之類的。
還有TI的Beagleboneblack板子,體積大小和樹莓派類似,外設(shè)包括有USB host和USB mini以及網(wǎng)卡接口,背面還有一個sd卡槽和HDMI接口。BBB的處理器采用的是當前嵌入式系統(tǒng)中最流行的ARMv7指令集。采用當今廣泛使用的指令集的處理器可以被更多的軟件支持。例如,一些操作系統(tǒng)已經(jīng)不支持在ARMv6指令集上運行,例如,Ubuntu在2012年4月放棄了對ARMv6指令集的支持。
ARMv7相對與ARMv6指令集的另一個優(yōu)勢在于,使用ARMv7的處理器的實際性能更加強勁。ARMv7相對與ARMv6的優(yōu)勢還有很多,比如一些顯著的改進:實現(xiàn)了超標量架構(gòu)、包含了SIMD操作指令、改進了分支預測算法從而極大的提高了某些性能。
總結(jié)
以上就是一塊基本的嵌入式核心板所具有的性能參數(shù),和上面說到的單片機的性能參數(shù)相比較,單片機的處理能力較低,主頻大多在幾十M上下,和嵌入式動輒上百上千M的處理速度還是相差較多,此外單片機并不具有圖形界面的處理能力,也就是GPU的缺乏導致單片機幾乎不可能帶動圖形界面。
單片機的存儲空間和嵌入式處理器也不是一個等級的,單片機通常片內(nèi)存儲只有幾k大小,而由于外設(shè)的限制也不太可能大范圍增加外設(shè)emmc,而嵌入式處理器通常有幾百兆的RAM,如此巨大的差別導致單片機幾乎不可能像嵌入式處理器那樣運行操作系統(tǒng),甚至連TCP/IP協(xié)議棧和USB協(xié)議棧都跑不起來,一些高端的單片機比如ST公司的STM32系列,可能可以跑一些輕量級的系統(tǒng)os和嵌入式網(wǎng)絡(luò)協(xié)議棧,比如IwIP協(xié)議棧。
嵌入式處理器豐富強大的性能決定它能完成更多單片機不能完成的應用,比如網(wǎng)絡(luò)通信功能,視頻傳輸處理功能等,而當外設(shè)存儲增加后,嵌入式處理器能夠輕松運行各種Linux系統(tǒng),以及圖形GUI界面。 |
|