嵌入式系統(tǒng)的硬件基本結(jié)構(gòu)和軟件層次結(jié)構(gòu)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
嵌入式系統(tǒng)是專(zhuān)用計(jì)算機(jī)應(yīng)用系統(tǒng),它具有一般計(jì)算機(jī)組成的共性,也是由硬件和軟件組成。本文完整地描述了嵌入式系統(tǒng)的軟硬件各部分的組成結(jié)構(gòu)。
嵌入式系統(tǒng)的硬件基本結(jié)構(gòu)
嵌入式系統(tǒng)的硬件架構(gòu),是以嵌入式處理器為中心,由存儲(chǔ)器、I/O設(shè)備、通信模塊以及電源等必要的輔助接口組成。嵌入式系統(tǒng)是量身定做的專(zhuān)用計(jì)算機(jī)應(yīng)用系統(tǒng),又不同于普通計(jì)算機(jī)組成,在實(shí)際應(yīng)用中的嵌入式系統(tǒng)硬件配置非常精簡(jiǎn),除了微處理器和基本的外圍電路以外,其余的電路都可根據(jù)需要和成本進(jìn)行裁剪、定制,非常經(jīng)濟(jì)、可靠。
嵌入式系統(tǒng)的硬件核心是嵌入式微處理器,有時(shí)為了提高系統(tǒng)的信息處理能力,常外接DSP和DSP協(xié)處理器(也可內(nèi)部集成),以完成高性能信號(hào)處理。
隨著計(jì)算機(jī)技術(shù)、微電子技術(shù)、應(yīng)用技術(shù)的不斷發(fā)展及納米芯片加工工藝技術(shù)的發(fā)展,以微處理器為核心的集成多種功能的SoC系統(tǒng)芯片已成為嵌入式系統(tǒng)的核心。在嵌入式系統(tǒng)設(shè)計(jì)中,要盡可能地滿(mǎn)足系統(tǒng)功能接口的SoC芯片。這些SoC集成了大量的外圍USB、、以太網(wǎng)、AD/DA、IIS等功能模塊。
可編程片上系統(tǒng)SOPC( On Programmable )結(jié)合了SoC和PLD、各自的技術(shù)優(yōu)點(diǎn),使得系統(tǒng)具有可編程的功能,是可編程邏輯器件在嵌入式應(yīng)用中的完美體現(xiàn),極大地提高了系統(tǒng)的在線升級(jí)、換代能力。
以SoC/SOPC為核心,用最少的外圍部件和連接部件構(gòu)成一個(gè)應(yīng)用系統(tǒng),滿(mǎn)足系統(tǒng)的功能需求,這也是嵌入式系統(tǒng)發(fā)展的一個(gè)方向。
因此,嵌入式設(shè)計(jì)是以處理器/SoC/SOPC為核心來(lái)完成系統(tǒng)設(shè)計(jì)的,其外圍接口包括存儲(chǔ)設(shè)備、通信擴(kuò)展設(shè)備、擴(kuò)展設(shè)備接口和輔助的機(jī)電設(shè)備(電源、、等),構(gòu)成硬件系統(tǒng)。
嵌入式系統(tǒng)軟件的層次結(jié)構(gòu)
在設(shè)計(jì)一個(gè)簡(jiǎn)單的應(yīng)用程序時(shí),可以不使用操作系統(tǒng),但在設(shè)計(jì)較復(fù)雜的程序時(shí),可能就需要一個(gè)操作系統(tǒng)(OS)來(lái)管理和控制內(nèi)存、多任務(wù)、周邊資源等。依據(jù)系統(tǒng)所提供的程序界面來(lái)編寫(xiě)應(yīng)用程序,可大大減少應(yīng)用程序員的負(fù)擔(dān)。
對(duì)于使用操作系統(tǒng)的嵌入式系統(tǒng)來(lái)說(shuō),嵌入式系統(tǒng)軟件結(jié)構(gòu)一般包含4個(gè)層面:設(shè)備驅(qū)動(dòng)層、實(shí)時(shí)操作系統(tǒng)、應(yīng)用程序接口API層、實(shí)際應(yīng)用程序?qū)?。有些?shū)籍將應(yīng)用程序接口API歸屬于OS層,嵌入式系統(tǒng)的軟件結(jié)構(gòu),是按3層劃分的。由于硬件電路的可裁剪性和嵌入式系統(tǒng)本身的特點(diǎn),其軟件部分也是可裁剪的。
對(duì)于功能簡(jiǎn)單,僅包括應(yīng)用程序的嵌入式系統(tǒng),一般不使用操作系統(tǒng),僅有應(yīng)用程序和設(shè)備驅(qū)動(dòng)程序。高性能嵌入式系統(tǒng)的應(yīng)用越來(lái)越廣泛,操作系統(tǒng)的使用成為必然發(fā)展趨勢(shì)。本小節(jié)主要講述的是具有操作系統(tǒng)的嵌入式軟件層次。
1.驅(qū)動(dòng)層程序
驅(qū)動(dòng)層程序是嵌入式系統(tǒng)中不可缺少的重要部分,使用任何的外部設(shè)備都需要有相應(yīng)的驅(qū)動(dòng)層程序的支持,它為上層軟件提供了設(shè)備的操作接口。上層軟件不會(huì)理會(huì)設(shè)備的具體內(nèi)部操作,只需調(diào)用驅(qū)動(dòng)層程序提供的接口即可。驅(qū)動(dòng)層程序一般包含硬件抽象層HAL、板級(jí)支持包BSP和設(shè)備驅(qū)動(dòng)程序。
板級(jí)支持包實(shí)現(xiàn)的功能大體有以下兩個(gè)方面:
系統(tǒng)啟動(dòng)時(shí),完成對(duì)硬件的初始化。例如,對(duì)系統(tǒng)內(nèi)存、寄存器以及設(shè)備的中斷進(jìn)行設(shè)置。這是比較系統(tǒng)化的工作,它要根據(jù)嵌入式開(kāi)發(fā)所選的CPU類(lèi)型、硬件以及嵌入式操作系統(tǒng)的初始化等多方面決定BSP應(yīng)實(shí)現(xiàn)什么功能。
為驅(qū)動(dòng)程序提供訪問(wèn)硬件的手段。驅(qū)動(dòng)程序經(jīng)常要訪問(wèn)設(shè)備的寄存器,對(duì)設(shè)備的寄存器進(jìn)行操作。如果整個(gè)系統(tǒng)為統(tǒng)一編址,則開(kāi)發(fā)人員可直接在驅(qū)動(dòng)程序中用C語(yǔ)言的函數(shù)訪問(wèn)設(shè)備寄存器。但是,如果系統(tǒng)為單獨(dú)編址,則C語(yǔ)言就不能直接訪問(wèn)設(shè)備中的寄存器,只有匯編語(yǔ)言編寫(xiě)的函數(shù)才能進(jìn)行對(duì)外圍設(shè)備寄存器的訪問(wèn)。BSP就是為上層的驅(qū)動(dòng)程序提供訪問(wèn)硬件設(shè)備寄存器的函數(shù)包。