




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第1章嵌入式系統(tǒng)概述1.1嵌入式系統(tǒng)簡介1.2嵌入式處理器1.3嵌入式操作系統(tǒng)
1.1.1嵌入式系統(tǒng)的定義
經(jīng)過30多年的發(fā)展,嵌入式系統(tǒng)已經(jīng)廣泛應用于科學研究、工程設計、軍事技術、各類產(chǎn)業(yè)、商業(yè)文化藝術、娛樂業(yè)及人們的日常生活等方面,從廚房中的電飯煲、微波爐、電冰箱到客廳里的家庭媒體中心,各種智能化設備已經(jīng)遍布在我們的周圍。1.1嵌入式系統(tǒng)簡介隨著數(shù)字信息技術和網(wǎng)絡技術的飛速發(fā)展,計算機、通信、消費電子的一體化趨勢日益明顯,這必將培養(yǎng)出一個龐大的嵌入式應用市場?,F(xiàn)在,嵌入式系統(tǒng)帶來的工業(yè)年產(chǎn)值已超過了1萬億美元,它已經(jīng)成為信息技術(IT)產(chǎn)業(yè)爭奪的重點。嵌入式系統(tǒng)技術也成為當前被關注、學習和研究的熱點。
所謂嵌入式系統(tǒng)(EmbeddedSystem),實際上是“嵌入式計算機系統(tǒng)”的簡稱,它是相對于通用計算機而言的。有些系統(tǒng)中也有計算機,但它是作為某個專用系統(tǒng)中的一個部件而存在的。像這樣嵌入到更大、更專用的系統(tǒng)中的計算機系統(tǒng),就稱為嵌入式計算機、嵌入式計算機系統(tǒng)或嵌入式系統(tǒng)。日常生活中早已存在許多嵌入式系統(tǒng)的應用,如人們使用的移動電話、烹調(diào)用的微波爐、戴在手腕上的電子表、家用的洗衣機、辦公室里的打印機,以及數(shù)碼相機、MP3、平板電腦等手持式設備,都可以認為是嵌入式系統(tǒng)。
按照美國電氣和電子工程師協(xié)會(IEEE)的定義,嵌入式系統(tǒng)是“用于監(jiān)視、控制或者輔助操作機器和設備的裝置”。這個定義是從應用上考慮的,可以看出,嵌入式系統(tǒng)是軟件和硬件的綜合體,還可以涵蓋機電等附屬裝置。目前我們最常見、最通用的一個定義是:嵌入式系統(tǒng)是以應用為中心,以計算機技術為基礎,其軟、硬件可配置,對功能、可靠性、成本、體積、功耗有嚴格約束的一種專用計算機系統(tǒng)。這個定義是從技術角度來進行的。它不僅指明了嵌入式系統(tǒng)是一種專用的計算機系統(tǒng)(非PC的智能電子設備),而且說明了嵌入式系統(tǒng)的幾個基本要素,即面向應用,以計算機技術為基礎,軟、硬件可剪裁以及在功能、可靠性、成本、體積和功耗上有嚴格約束。而“嵌入式系統(tǒng)”中“嵌入”一詞,即指其軟、硬件可剪裁的特性,它表示該系統(tǒng)通常是更大系統(tǒng)中的一個完整的部分。嵌入的系統(tǒng)中可以共存多個嵌入式系統(tǒng)。嵌入式系統(tǒng)幾乎應用于所有電器設備中,如手機、機頂盒、個人數(shù)字助理(PDA)、汽車控制系統(tǒng)、微波爐控制器、電梯控制器、安全系統(tǒng)、醫(yī)療儀器、立體音響、自動售貨機控制器、自動取款機等。即使是一臺通用的PC,也包括嵌入式系統(tǒng),其外部設備都包含了嵌入式微處理器的成分,如硬盤、軟驅、顯示器、鍵盤、鼠標、聲卡、網(wǎng)卡、Modem和打印機、掃描儀等都是由嵌入式處理器控制的。嵌入式系統(tǒng)是面向用戶、產(chǎn)品和應用的,如果獨立于應用而自行發(fā)展,則會失去市場。因此,大多數(shù)嵌入式系統(tǒng)的開發(fā)者并不是計算機專業(yè)的人員,而是各個行業(yè)的技術人員,例如數(shù)字醫(yī)療設備的開發(fā),往往是由生物醫(yī)學工程技術人員和計算機專業(yè)的技術人員一起參與完成的。
嵌入式系統(tǒng)是一種專用的計算機系統(tǒng),它和通用計算機系統(tǒng)使用的技術是一樣的,都包含了硬件部分和軟件部分,但對二者的性能評價指標是不同的。嵌入式系統(tǒng)往往只是一個大系統(tǒng)中的組成部分,控制大系統(tǒng)的工作,它的價值在于其所控制的大系統(tǒng)。例如,智能洗衣機的評價指標往往是洗凈度、耗水量、耗電量、洗衣速度等,而不是控制它的處理器的速度、存儲容量等。而通用計算機不同,其更關注計算能力、處理速度及存儲數(shù)據(jù)的能力等指標。1.1.2嵌入式系統(tǒng)的組成
嵌入式系統(tǒng)基于計算機技術,其組成也跟計算機組成類似,主要包括兩個部分:嵌入式硬件系統(tǒng)和嵌入式軟件系統(tǒng)。
(1)嵌入式硬件系統(tǒng)主要包括嵌入式處理器、存儲器、模擬電路、電源、接口控制器及接插件等幾部分。
嵌入式處理器是嵌入式系統(tǒng)的核心部件。嵌入式處理器與通用處理器的最大區(qū)別在于嵌入式CPU大多工作在為特定用戶群設計的系統(tǒng)中。它通常把通用CPU中許多由板卡完成的任務集成在芯片內(nèi)部,從而有利于嵌入式系統(tǒng)設計趨于小型化。嵌入式處理器具有高效率、高可靠性等特征。嵌入式系統(tǒng)中常用的存儲器有靜態(tài)易失型存儲器(RAM、SRAM)、動態(tài)存儲器(DRAM、SDRAM)、非易失型存儲器(ROM、EPROM、EEPROM、Flash)。其中,F(xiàn)lash(閃存)具有可擦寫次數(shù)多、存儲速度快、容量大以及價格低等優(yōu)點,在嵌入式領域得到了廣泛的應用。
目前針對嵌入式系統(tǒng)的外圍硬件設備擴展很多,常用的有串口、以太網(wǎng)接口(網(wǎng)絡設備)、USB接口(USB設備,如優(yōu)盤、數(shù)碼相機、移動硬盤等外部存儲設備)、音頻接口(如MP3)、液晶顯示屏(如數(shù)碼相機、數(shù)碼攝像機、MP4播放器、PDA等)、攝像頭(拍照手機)等。可以看到,不同的嵌入式系統(tǒng)的設計可能會用到不同的外圍硬件設備。以數(shù)碼相機為例,它需要使用到攝像頭、液晶顯示屏、USB接口、SD或MS卡,如果該數(shù)碼相機有MP3功能,就還需要加上音頻解碼設備。沒有外圍設備的支持,嵌入式系統(tǒng)是不完整的。
(2)嵌入式軟件系統(tǒng)主要包括低層驅動、操作系統(tǒng)軟件(嵌入式操作系統(tǒng))和應用程序(應用軟件)三個部分。低層驅動實現(xiàn)嵌入式系統(tǒng)硬件和軟件之間的接口;操作系統(tǒng)實現(xiàn)系統(tǒng)的進程調(diào)度、任務處理;應用程序實現(xiàn)系統(tǒng)功能的應用。由于嵌入式系統(tǒng)的應用領域十分廣泛,應用程序(應用軟件)的表現(xiàn)形式也千差萬別。有時設計人員會把操作系統(tǒng)和應用軟件兩部分組合在一起,應用軟件控制系統(tǒng)的運作和行為,操作系統(tǒng)控制應用程序編程與硬件的交互。
在嵌入式系統(tǒng)的組成中,嵌入式系統(tǒng)的核心是嵌入式處理器。因此嵌入式處理器的技術指標如功耗、體積、成本、可靠性、速度、處理能力、電磁兼容性等均受到應用要求的制約,這些也是半導體廠商之間競爭的熱點。嵌入式處理器的應用軟件是實現(xiàn)嵌入式系統(tǒng)功能的關鍵。一般來說,軟件需要固化存儲,有時稱為固件(Firmware)。1.1.3嵌入式系統(tǒng)的特點
與常見的通用計算機系統(tǒng)相比,嵌入式系統(tǒng)一般具有以下特點:
(1)面向特定的應用。與通用CPU相比,嵌入式CPU是為特定用戶群設計的。如ARM系列多用于手機中,Motorola公司的PowerPC系統(tǒng)多用于網(wǎng)絡服務器、工作站中。應用需求決定了嵌入式系統(tǒng)的設計。決定嵌入式CPU應用環(huán)境的主要因素在于其提供的接口功能和處理速度。
(2)專用性強,可根據(jù)需要靈活定制。嵌入式系統(tǒng)的個性化很強,其中軟件系統(tǒng)和硬件的結合非常緊密,一般要針對硬件進行系統(tǒng)的移植。
(3)系統(tǒng)內(nèi)核小。嵌入式系統(tǒng)一般應用于小型電子裝置中,系統(tǒng)資源相對有限,所以內(nèi)核較傳統(tǒng)的操作系統(tǒng)要小得多。例如,
C/OS系統(tǒng)的內(nèi)核只有5KB,而Windows的內(nèi)核則要大得多。
(4)體積小、功耗低、成本低、效率高。由于嵌入式系統(tǒng)集成度高、體積小,所以對其系統(tǒng)軟件和應用軟件一般有一些特殊要求,如軟件固化在ROM中,要求具有高質(zhì)量高可靠性的軟件代碼,并具有實時處理能力等。同時,由于嵌入式系統(tǒng)往往沒有充足的電能(如電池供電),所以多為低功耗系統(tǒng)。系統(tǒng)功耗越低,溫度越低,其可靠性和穩(wěn)定性也就越高。
(5)具有較長的生命周期。嵌入式系統(tǒng)與具體應用有機結合在一起,其升級和具體產(chǎn)品同步進行。
(6)通常有實時性要求,因此一般都要求有高實時性操作系統(tǒng)(Real-TimeOperatingSystem,RTOS)。這是嵌入式軟件的基本要求,用以實現(xiàn)任務調(diào)度、資源分配等功能。按照實時性的不同,嵌入式系統(tǒng)可以分為軟實時系統(tǒng)和硬實時系統(tǒng)。軟實時系統(tǒng)對實時要求不高,通常用于人機交互較多的領域,而硬實時系統(tǒng)主要應用于工控、航天、軍事等領域。
(7)需要專門的軟、硬件開發(fā)工具和環(huán)境。由于嵌入式系統(tǒng)的運行平臺與開發(fā)平臺是不同的,嵌入式系統(tǒng)本身不具備自主開發(fā)能力,需要專門的軟、硬件開發(fā)工具和環(huán)境,因此開發(fā)較為困難。通常嵌入式系統(tǒng)的開發(fā)采用交叉開發(fā)環(huán)境:開發(fā)平臺稱為宿主機,有豐富的軟、硬件資源;運行嵌入式軟件的平臺稱為目標機,資源相對有限。用戶在宿主機上進行軟件的編輯、編譯,然后下載到目標機上調(diào)試、運行。
嵌入式系統(tǒng)的核心部件是嵌入式處理器,據(jù)不完全統(tǒng)計,截至2000年全球嵌入式處理器的品種總量已經(jīng)超過1000種,流行的體系結構有30多個系列,其中8051體系的占了多半。生產(chǎn)8051單片機的半導體廠家有20多個,共350多種衍生產(chǎn)品,僅NXP就有近百種。1.2嵌入式處理器現(xiàn)在幾乎每個半導體制造商都生產(chǎn)嵌入式處理器,而且越來越多的公司擁有自己的處理器設計部門。嵌入式處理器的尋址空間一般從64KB到4GB,處理速度從0.1MIPS到2000MIPS,常用封裝從8個引腳到208個引腳。1.2.1嵌入式處理器的分類
從應用的角度來劃分,嵌入式處理器包含了下面幾種類型。
1.嵌入式微控制器
嵌入式微控制器(MicrocontrollerUnit,MCU)又稱單片機,它將整個計算機系統(tǒng)集成到一塊芯片中。MCU一般以某一種微處理器內(nèi)核為核心,芯片內(nèi)部集成ROM、RAM、總線邏輯、定時器等各種必要的功能模塊。與微處理器相比,微控制器的最大特點是單片化,體積大大縮小,使功耗和成本下降,可靠性提高。
MCU是目前嵌入式系統(tǒng)應用的主流。由于MCU的片上資源一般比較豐富,適于控制,因此稱微控制器。為適應不同的應用需求,一般一個系列的單片機具有多種衍生產(chǎn)品,每種衍生產(chǎn)品的處理器內(nèi)核都是一樣的,不同的是存儲器和外設的配置及封裝。這樣可以最大限度地與應用需求相匹配,從而減小功耗和成本。
目前MCU的品種和數(shù)量繁多,比較有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300等。另外,還有許多半通用系列,如支持USB接口的MCU8XC930/931、C540、C541等。
2.嵌入式微處理器
嵌入式微處理器(MicroprocessorUnit,MPU)的基礎是通用計算機中的CPU。為了滿足嵌入式應用的特殊要求,MPU雖然在功能上和標準微處理器基本一樣,但在工作溫度、抗電磁干擾、可靠性等方面一般都做了各種增強。
目前MPU主要有Aml86/88、386EX、SC-400、PowerPC、68000、MIPS、ARM系列等。
MPU可分為復雜指令集計算機CISC和精減指令集計算機RISC兩類。大多數(shù)臺式計算機都使用CISC微處理器,如Intel的X86。RISC結構體系有兩大主流:SiliconGraphics公司(硅谷圖形公司)的MIPS技術及ARM公司的AdvancedRISCMachines技術。
RISC和CISC是目前設計制造微處理器的兩種典型技術,為達到高效的目的,采用的方法不同。它們的差異主要有以下幾點:
(1)指令系統(tǒng)。RISC設計者把主要精力放在那些經(jīng)常使用的指令上,對不常用的功能,常通過組合指令來實現(xiàn);CISC計算機的指令系統(tǒng)比較豐富,有專用指令來完成特定的功能。
(2)存儲器操作。RISC對存儲器操作有限制,使控制簡單化;CISC機器的存儲器操作指令多,操作直接。
(3)程序。RISC匯編語言程序一般需要較大的內(nèi)存空間,實現(xiàn)特殊功能時程序復雜,不易設計;CISC匯編語言程序編程相對簡單,科學計算及復雜操作的程序設計相對容易,效率較高。
(4)中斷。RISC機器在一條指令執(zhí)行的適當?shù)胤娇梢皂憫袛啵籆ISC機器是在一條指令執(zhí)行結束后響應中斷的。
(5)
CPU。RISCCPU包含較少的單元電路,面積小、功耗低;CISCCPU包含豐富的電路單元,功能強、面積大、功耗高。
(6)設計周期。RISC微處理器結構簡單,布局緊湊,設計周期短,且易于采用最新技術;CISC微處理器結構復雜,設計周期長。
(7)易用性。RISC微處理器結構簡單,指令規(guī)整,性能容易把握,易學易用;CISC微處理器結構復雜,功能強大,實現(xiàn)特殊功能容易。
(8)應用范圍。RISC機器更適合于嵌入式應用,CISC機器則更適合于通用計算機。
3.嵌入式DSP
嵌入式DSP(DigitalSignalProcessor)對系統(tǒng)結構和指令進行了特殊設計,使其適合于執(zhí)行DSP算法,編譯效率較高,指令執(zhí)行速度也較高。在數(shù)字濾波、FFT、譜分析等方面,DSP算法正在大量進入嵌入式領域。
推動嵌入式DSP發(fā)展的一個重要因素是嵌入式系統(tǒng)的智能化。例如,各種帶有智能邏輯的消費類產(chǎn)品、生物信息識別終端、帶有加/解密算法的鍵盤、ADSL接入、實時語音壓縮解壓系統(tǒng)、虛擬現(xiàn)實顯示等。這類智能化算法一般運算量都比較大,特別是向量運算、指針線性尋址等較多,而這些正是DSP的長處所在。嵌入式DSP有兩個發(fā)展來源,一是DSP經(jīng)過單片化、EMC改造、增加片上外設成為嵌入式DSP,例如TI的TMS320C2000/C5000;二是在通用單片機或片上系統(tǒng)(SoC)中增加DSP協(xié)處理器,例如Intel的MCS-296。
嵌入式DSP比較有代表性的產(chǎn)品是TexasInstruments的TMS320系列和Motorola的DSP56000系列。TMS320系列處理器包括用于控制的C2000系列、用于移動通信的C5000系列以及性能更高的C6000和C8000系列。DSP的設計者們把重點放在了處理連續(xù)的數(shù)據(jù)流上。如果嵌入式應用中強調(diào)對連續(xù)數(shù)據(jù)流的處理及高精度復雜運算,則應該選用DSP器件。
4.嵌入式片上系統(tǒng)
隨著VLSI設計的普及和半導體工藝的迅速發(fā)展,可以在一塊硅片上實現(xiàn)一個更為復雜的系統(tǒng),這就是SoC(Systemon-Chip)。各種通用處理器內(nèi)核和其它外圍設備都將成為SoC設計公司標準庫中的器件,可用標準的VHDL等硬件描述語言描述。用戶只需定義出整個應用系統(tǒng),仿真通過后就可以將設計圖交給半導體工廠制作芯片樣品。這樣,整個嵌入式系統(tǒng)大部分都可以集成到一塊芯片中,應用系統(tǒng)的電路板將變得很簡潔,這將有利于減小體積和功耗,從而提高系統(tǒng)的可靠性。嵌入式SoC的設計關鍵是IP核的設計。IP核分為硬核、軟核和固核。IP核設計是嵌入式技術的重要支持技術。在設計嵌入式系統(tǒng)時,可以通過使用IP核技術完成系統(tǒng)硬件的設計。在IP技術中把不同功能的電路模塊稱為IP,這些IP都是經(jīng)過實際制作并證明其是正確的。在EDA設計工具中把這些IP組織在一個IP元件庫中,供用戶使用。設計電子系統(tǒng)時,用戶需要知道IP模塊的功能和技術性能。把不同的IP模塊嵌入在一個硅片上,可以形成完整的應用系統(tǒng)。IP技術極大地簡化了SoC的設計過程,縮短了設計時間,因此已經(jīng)成為目前電子系統(tǒng)設計的重要的基本技術。
SoC可以分為通用系列和專用系列兩類。通用系列包括Motorola的M-Core、某些ARM系列器件、Echelon和Motorola聯(lián)合研制的Neuron芯片等。專用SoC一般專用于某類系統(tǒng)中,不為一般用戶所知。1.2.2ARM處理器
ARM(AdvancedRISCMachines)既可以認為是一個公司的名字,也可以認為是對一類微處理器的通稱,還可以認為是一種技術的名字。1991年ARM公司成立于英國劍橋,主要出售芯片設計技術的授權。目前,采用ARM技術知識產(chǎn)權(IP)核的微處理器,即通常所說的ARM微處理器,已廣泛應用于工業(yè)控制、消費類電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡系統(tǒng)、無線系統(tǒng)等各個領域。
1.ARM微處理器的應用領域
1)工業(yè)控制領域
作為32位的RISC架構,基于ARM核的微控制器芯片不但占據(jù)了高端微控制器市場的大部分市場份額,而且也逐漸向低端微控制器應用領域擴展,ARM微控制器的低功耗、高性價比,向傳統(tǒng)的8位/16位微控制器提出了挑戰(zhàn)。
2)無線通信領域
目前已有超過85%的無線通信設備采用了ARM技術,ARM以其高性能和低成本,在該領域的地位日益鞏固。
3)網(wǎng)絡應用
隨著寬帶技術的推廣,采用ARM技術的ADSL芯片正逐步獲得競爭優(yōu)勢。此外,ARM在語音及視頻處理上進行了優(yōu)化,并獲得廣泛支持,也對DSP的應用領域提出了挑戰(zhàn)。
4)消費類電子產(chǎn)品
ARM技術在目前流行的數(shù)字音頻播放器、數(shù)字機頂盒和游戲機中得到廣泛應用。
5)成像和安全產(chǎn)品
現(xiàn)在流行的數(shù)碼相機和打印機中絕大部分采用ARM技術。手機中的32位SIM智能卡也采用了ARM技術。
2.ARM微處理器的特點
ARM微處理器有如下特點:
(1)體積小、功耗低、成本低、性能高;
(2)支持Thumb(16位)/ARM(32位)雙指令集,兼容8位/16位器件;
(3)大量使用寄存器,指令執(zhí)行速度更快;
(4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成;
(5)尋址方式靈活簡單,執(zhí)行效率高;
(6)指令長度固定。
3.ARM微處理器系列
ARM微處理器的體系結構從最初開發(fā)到目前已有了很大的改進,并仍在完善和發(fā)展中。為了清楚地表達每個ARM應用實例所使用的指令集,ARM公司定義了7種主要的ARM指令集體系結構版本,以版本號V1~V7表示。
(1)
V1版架構只在原型機ARM1中出現(xiàn)過,只有26位的尋址空間,沒有用于商業(yè)產(chǎn)品。其尋址空間為64MB。
(2)
V2版架構對V1版進行了擴展,例如ARM2和ARM3(V2a)架構。V2包含了對32位乘法指令和協(xié)處理器指令的支持。版本V2a是版本V2的變種,ARM3芯片采用了版本V2a,是第一個采用片上Cache的ARM處理器。
(3)
V3版架構是ARM公司于1990年設計的第一個微處理器ARM6。它是一款IP核獨立的處理器,具有片上高速緩存、MMU和寫緩沖等功能,其變種版本有V3G和V3M。它的尋址空間增至32位(4GB),當前程序狀態(tài)信息從原來的R15寄存器移到當前程序狀態(tài)寄存器CPSR中(CurrentProgramStatusRegister)。V3版架構增加了程序狀態(tài)保存寄存器SPSR(SavedProgramStatusRegister)和兩種異常模式,使操作系統(tǒng)代碼可方便地使用數(shù)據(jù)訪問中止異常、指令預取中止異常和未定義指令異常。
(4)
V4版架構在V3版上作了進一步擴充,它是目前應用最廣的ARM體系結構,ARM7、ARM8、ARM9和StrongARM都采用該架構。V4不再強制要求與26位地址空間兼容,而且還明確了哪些指令會引起未定義指令異常。其指令集增加了T變種,處理器可工作在Thumb狀態(tài),增加了16位Thumb指令集,完善了軟件中斷SWI指令的功能。V4版架構處理器系統(tǒng)模式引進特權方式時使用用戶寄存器操作,把一些未使用的指令空間捕獲為未定義指令。
(5)
V5版架構在V4版基礎上增加了一些新的指令,ARM10和XScale都采用該版架構。其新增的指令有帶有鏈接和交換的轉移BLX指令、計數(shù)前導零CLZ指令、BRK中斷指令和數(shù)字信號處理指令(V5TE版)。V5還為協(xié)處理器增加了更多可選擇的指令,改進了ARM/Thumb狀態(tài)之間的切換效率,它的指令增加了E變種(增強型DSP指令集,包括全部算法操作和16位乘法操作)和J變種(支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能)。
(6)
V6版架構是2001年發(fā)布的,并在2002年春季發(fā)布的ARM11處理器中使用。V6在降低耗電量的同時,還強化了圖形處理性能。通過追加有效進行多媒體處理的SIMD(SingleInstruction,MultipleData,單指令多數(shù)據(jù))功能,將語音及圖像的處理功能提高到了原型機的4倍。
(7)
V7架構是在V6架構的基礎上誕生的。該架構采用了Thumb-2技術,它是在ARM的Thumb代碼壓縮技術的基礎上發(fā)展起來的,并且保持了對現(xiàn)存ARM解決方案的完整的代碼兼容性。Thumb-2技術比純32位代碼少使用31%的內(nèi)存,減小了系統(tǒng)開銷,同時能夠提供比已有的基于Thumb技術的解決方案高出38%的性能。V7架構還采用了NEON技術,將DSP和媒體處理能力提高了近4倍,并支持改良的浮點運算,滿足下一代3D圖形、游戲物理應用以及傳統(tǒng)嵌入式控制應用的需求。此外,V7架構還支持改良的運行環(huán)境,以迎合不斷增加的JIT(JustInTime)和DAC(DynamicAdaptiveCompilation)技術的使用。
目前市面上常用的ARM處理器有ARM7系列、ARM9系列、ARM9E系列、ARM10系列、ARM11系列、Cortex系列和SecurCore系列,分別用于開發(fā)不同的產(chǎn)品。如ARM7系列適用于工業(yè)控制、網(wǎng)絡設備、移動電話等應用;ARM9、ARM9E和ARM10E系列則更適合無線設備、消費類電子產(chǎn)品的設計;SecurCore系列專門為安全要求較高的應用而設計。
常見的基于ARM核的產(chǎn)品有Intel公司的XScale系列,ST公司的STM32系列,F(xiàn)reescale公司龍珠系列iMX處理器,TI公司DSP+ARM處理器OMAP和Cortex核的LM3S系列,CirrusLogic公司的ARM系列,SamSung公司的ARM系列,Atmel公司的AT91系列微控制器,NXP公司的微控制器系列。
4.ARMCortex處理器簡介
ARM公司在ARM11系列以后的產(chǎn)品改用Cortex命名,并分成A、R和M三類,旨在為各種不同的市場提供服務。
Cortex系列屬于V7架構,它是ARM公司最新的指令集架構。V7架構定義了三大分工明確的系列:A系列面向尖端的基于虛擬內(nèi)存的操作系統(tǒng)和用戶應用,R系列針對實時系統(tǒng),M系列針對微控制器。由于應用領域不同,基于V7架構的Cortex處理器系列所采用的技術也不相同,基于V7A的稱為Cortex-A系列,基于V7R的稱為Cortex-R系列,基于V7M的稱為Cortex-M系列。
1)
Cortex-A處理器
Cortex-A處理器適用于具有高計算要求、運行豐富操作系統(tǒng)以及提供交互媒體和圖形體驗的應用領域。從最新技術的移動Internet必備設備(如手機和超便攜的上網(wǎng)筆記本或智能筆記本)到汽車信息娛樂系統(tǒng)和下一代數(shù)字電視系統(tǒng),ARMCortex-A處理器可向托管豐富的操作系統(tǒng)平臺的設備和用戶應用提供全方位的解決方案,包括超低成本的手機、智能手機、移動計算平臺、數(shù)字電視、機頂盒、企業(yè)網(wǎng)絡、打印機和服務器解決方案。高性能的Cortex-A15、可伸縮的Cortex-A9、經(jīng)過市場驗證的Cortex-A8處理器和高效的Cortex-A5處理器均共享同一體系結構,因此具有完整的應用兼容性,支持傳統(tǒng)的ARM、Thumb?指令集和新增的高性能緊湊型Thumb-2指令集。
Cortex-A處理器的應用非常廣泛,具體包括上網(wǎng)筆記本、智能筆記本、輸入板、電子書閱讀器、智能手機、特色手機、數(shù)字家電、機頂盒、數(shù)字電視、藍光播放器、游戲控制臺、導航、激光打印機、路由器、無線基站、VOIP電話和設備、Web2.0、無線基站、交換機、服務器等。Cortex-A處理器的應用示例如圖1.1所示。
目前比較常見的Cortex-A處理器型號有Cortex-A8、Cortex-A9等。
圖1.1Cortex-A處理器的應用示例
2)
Cortex-R處理器
Cortex-R處理器為具有嚴格的實時響應限制的深層嵌入式系統(tǒng)提供高性能計算解決方案,為范圍廣泛的深層嵌入式半導體應用市場設置了行業(yè)標準,提供了大約20個許可接收方、100個設計和數(shù)百萬的設備。
(1)
Cortex-R處理器的目標應用。Cortex-R處理器的目標應用包括智能手機和基帶調(diào)制解調(diào)器中的移動手機處理、企業(yè)系統(tǒng)、硬盤驅動器、聯(lián)網(wǎng)和打印、家庭消費性電子產(chǎn)品、機頂盒、數(shù)字電視、媒體播放器和數(shù)碼相機以及應用于醫(yī)療行業(yè)、工業(yè)和汽車行業(yè)的可靠系統(tǒng)的嵌入式微控制器。在這些應用中,采用的是對處理響應設置硬截止時間的系統(tǒng),如果要避免數(shù)據(jù)丟失或機械損傷,則必須符合所設置的這些硬截止時間。因此Cortex-R處理器是專為高性能、高可靠性和容錯能力而設計的,其行為具有高確定性,同時保持很高的能效和成本效益。
(2)
Cortex-R處理器的主要功能。
①快速:以高時鐘頻率獲得高處理性能;
②確定性:處理在所有場合都必須符合硬實時限制;
③安全:系統(tǒng)必須可靠且可信(某些系統(tǒng)須是安全關鍵系統(tǒng));④成本效益:在處理器及其內(nèi)存系統(tǒng)中都具有競爭力的成本和功耗。
此功能集將Cortex-R、Cortex-M和Cortex-A系列處理器區(qū)別開來。顯而易見,Cortex-R提供的性能比Cortex-M系列提供的性能高得多,而Cortex-A專用于具有復雜軟件操作系統(tǒng)(使用虛擬內(nèi)存管理)的面向用戶的應用。
Cortex-R處理器保持了與經(jīng)典ARM處理器(如ARM7TDMI-S、ARM946E-S、ARM968E-S和ARM1156T2-S)的二進制兼容性,因此可確保應用的可移植性。它對于經(jīng)認證可用于汽車系統(tǒng)的代碼很有用,當舊源代碼不再可用時也非常有用。這些嵌入式系統(tǒng)處理器通常運行實時軟件操作系統(tǒng)(RTOS)并且不需要虛擬內(nèi)存管理單元(MMU)。但是,實時ARM處理器支持內(nèi)存保護單元(MPU)和緊密耦合內(nèi)存(TCM),它們使代碼和數(shù)據(jù)隨時可供處理器訪問。
Cortex-R系列處理器常用的有Cortex-R4、Cortex-R5和Cortex-R7等,主要滿足深層嵌入式和實時市場(如汽車安全或無線基帶)所要求的主要功能。Cortex-R處理器的應用示例如圖1.2所示。
圖1.2Cortex-R處理器的應用示例
3)
Cortex-M處理器
Cortex-M處理器是全球微控制器標準,已許可給40個以上的ARM合作伙伴,包括NXPSemiconductors、STMicroelectronics、TexasInstruments和Toshiba等領先供應商。使用標準處理器可以使ARM合作伙伴創(chuàng)建具有一致體系結構的設備,同時使它們可以專注于創(chuàng)建優(yōu)秀的設備實現(xiàn)。
Cortex-M處理器是一系列可向上兼容的高能效、易于使用的處理器,這些處理器旨在幫助開發(fā)人員滿足將來的嵌入式應用的需要。這些需要包括以更低的成本提供更多功能、不斷增加連接、改善代碼重用和提高能效。Cortex-M系列針對成本和功耗敏感的MCU和終端應用(如智能測量、人機接口設備、汽車和工業(yè)控制系統(tǒng)、大型家用電器、消費性產(chǎn)品和醫(yī)療器械)的混合信號設備進行過優(yōu)化。Cortex-M處理器的應用示例如圖1.3所示。
圖1.3Cortex-M處理器的應用示例
Cortex-M處理器的主要特點如下:
(1)能效。具有更低的功耗,更長的電池壽命。處理器能以更低的頻率或更短的活動時段運行,同時具有基于架構的睡眠模式支持,比8/16位設備的工作方式更智能,睡眠時間更長。
(2)更小的代碼。Cortex-M處理器具有高密度指令集,可比8/16位設備每字節(jié)完成更多操作,因此也只需要更小的RAM、ROM或閃存要求。
(3)易于使用。擁有多個供應商之間的全球標準,能夠更快地開發(fā)軟件。
(4)代碼兼容性。Cortex-M處理器具有統(tǒng)一的開發(fā)工具和操作系統(tǒng)支持。
(5)高性能。Cortex-M處理器是更有競爭力的產(chǎn)品,每兆赫茲可提供更高的性能,能夠以更低的功耗實現(xiàn)更豐富的功能。
目前比較常見的Cortex-M處理器有Cortex-M0和Cortex-M3。
(1)Cortex-M0處理器。Cortex-M0處理器是現(xiàn)有的體積最小、能耗最低且能效最高的ARM處理器。該處理器硅面積極小、能耗極低并且所需的代碼量極少,這使得開發(fā)人員能夠以8位設備的價格實現(xiàn)32位設備的性能,從而省略16位設備的研發(fā)步驟。Cortex-M0處理器超低的門數(shù)也使得它可以部署在模擬和混合信號設備中。
Cortex-M0的代碼密度和能效優(yōu)勢意味著它是各種應用中8/16位設備的自然高性價比換代產(chǎn)品,同時保留與功能豐富的Cortex-M3處理器的工具和二進制向上兼容性。
Cortex-M0處理器具有超低的能耗,在不到12K門的面積內(nèi)能耗僅有85μW/MHz(0.085mW),所憑借的是作為低能耗技術的領導者和創(chuàng)建超低能耗設備的主要推動者的無與倫比的ARM專門技術。它的指令只有56個,開發(fā)人員可以快速掌握整個Cortex-M0指令集,但其C語言友好體系結構意味著這并不是必需的??晒┻x擇的具有完全確定性的指令和中斷計時使得計算響應時間十分容易。同時,Cortex-M0處理器設計為支持低能耗連接,如BluetoothLowEnergy(BLE)、IEEE802.15和Z-wave,在這樣的模擬設備中,這些模擬設備正在增加其數(shù)字功能,以有效地預處理和傳輸數(shù)據(jù)。
(2)
Cortex-M3處理器。ARM公司于2004年引進并通過新技術更新了可配置性的Cortex-M3處理器,它是專門針對微控制器應用開發(fā)的主流ARM處理器,是行業(yè)領先的32位處理器,適用于具有高確定性的實時應用,已專門開發(fā)為允許合作伙伴為范圍廣泛的設備(包括微控制器、汽車車體系統(tǒng)、工業(yè)控制系統(tǒng)以及無線網(wǎng)絡和傳感器)開發(fā)高性能、低成本的平臺。該處理器提供出色的計算性能和對事件的卓越系統(tǒng)響應,同時可以應對低動態(tài)和靜態(tài)功率限制的挑戰(zhàn)。該處理器是高度可配置的,可以支持范圍廣泛的實現(xiàn)(從那些需要內(nèi)存保護和強大跟蹤技術的實現(xiàn)到那些需要極小面積的對成本非常敏感的設備)。
Cortex-M3處理器提供更高的性能和更豐富的功能,它具有高性能和低動態(tài)能耗,在90
nm制程時的額定功效為12.5DMIPS/mW。將集成的睡眠模式與可選的狀態(tài)保留功能相結合,Cortex-M3處理器確保對于同時需要低能耗和出色性能的應用不存在折中。
Cortex-M3處理器執(zhí)行Thumb?-2指令集以獲得最佳性能和代碼大小,包括硬件除法、單周期乘法和位字段操作。Cortex-M3NVIC在設計時是高度可配置的,最多可提供240個具有單獨優(yōu)先級、動態(tài)重設優(yōu)先級功能和集成系統(tǒng)時鐘的系統(tǒng)中斷。
Cortex-M3處理器具有豐富的外圍設備連接,功能和性能的組合使基于Cortex-M3的設備可以有效處理多個I/O通道和協(xié)議標準,如USBOTG(On-The-Go)、Ethernet、CANBus等。
1.3.1操作系統(tǒng)的概念
大型嵌入式系統(tǒng)通常需要完成復雜的功能,所以需要操作系統(tǒng)來完成各任務之間的調(diào)度。由于桌面型操作系統(tǒng)的體積以及實時性等特性不能滿足嵌入式系統(tǒng)的要求,從而促進了嵌入式操作系統(tǒng)的發(fā)展。1.3嵌入式操作系統(tǒng)操作系統(tǒng)(OperatingSystem,OS)的基本思想是隱藏底層不同硬件的差異,向在其上運行的應用程序提供一個統(tǒng)一的調(diào)用接口。應用程序通過這一接口實現(xiàn)對硬件的使用和控制,不必考慮不同硬件操作方式的差異。
很多產(chǎn)品廠商選擇購買操作系統(tǒng),并在此基礎上開發(fā)自己的應用程序,形成產(chǎn)品。事實上,因為嵌入式系統(tǒng)是將所有程序,包括操作系統(tǒng)、驅動程序及應用程序的程序代碼全部燒寫進ROM中執(zhí)行,所以操作系統(tǒng)在這里的角色更像是一套函數(shù)庫(Library)。操作系統(tǒng)主要完成三項任務:內(nèi)存管理、多任務管理和外圍設備管理。
嵌入式操作系統(tǒng)(EmbeddedOperatingSystem,EOS)負責嵌入式系統(tǒng)的全部軟、硬件資源的分配、調(diào)度、控制、協(xié)調(diào)。它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過加載/卸載某些模塊來達到系統(tǒng)所要求的功能。
EOS是相對于一般操作系統(tǒng)而言的,它除具備了一般操作系統(tǒng)最基本的功能,如任務調(diào)度、同步機制、中斷處理、文件處理等外,還有以下特點:
(1)強穩(wěn)定性,弱交互性。嵌入式系統(tǒng)一旦開始運行就不需要用戶過多的干預,這就要求負責系統(tǒng)管理的EOS具有很強的穩(wěn)定性。
(2)較強的實時性。EOS實時性一般較強,可用于各種設備的控制當中。
(3)可伸縮性。EOS具有開放、可伸縮性的體系結構。
(4)外設接口的統(tǒng)一性。EOS提供各種設備驅動接口。
嵌入式系統(tǒng)的操作系統(tǒng)核心通常要求體積很小,因為硬件ROM的容量有限,除了應用程序之外,不希望操作系統(tǒng)占用太大的存儲空間。事實上,嵌入式操作系統(tǒng)可以很小,只提供基本的管理功能和調(diào)度功能??s小到10KB~20KB以內(nèi)的嵌入式操作系統(tǒng)比比皆是。不同的應用場合會產(chǎn)生不同特點的嵌入式操作系統(tǒng),但都會有一個核心(Kernel)和一些系統(tǒng)服務(SystemService)。操作系統(tǒng)必須提供一些系統(tǒng)服務供應用程序調(diào)用,包括文件系統(tǒng)、內(nèi)存分配、I/O存取服務、中斷服務、任務(Task)服務、時間(Timer)服務等,設備驅動程序(DeviceDriver)則是要建立在I/O存取和中斷服務上的。有些嵌入式操作系統(tǒng)也會提供多種通信協(xié)議,以及用戶接口函數(shù)庫等。1.3.2嵌入式Linux
Linux是目前最為流行的一款開放源代碼的操作系統(tǒng),目前正在開發(fā)的嵌入式系統(tǒng)中,70%以上的項目選擇Linux作為嵌入式操作系統(tǒng)。
經(jīng)過改造后的嵌入式Linux具有以下適合于嵌入式系統(tǒng)的特點:
(1)內(nèi)核精簡,性能高、穩(wěn)定性強。
(2)具有良好的多任務支持。
(3)適用于不同的CPU體系架構。支持多種體系架構,如X86、ARM、MIPS、ALPHA、SPARC等。
(4)具有可伸縮的結構??缮炜s的結構使Linux適合于從簡單到復雜的各種嵌入式應用。
(5)外設接口統(tǒng)一。以設備驅動程序的方式為應用提供統(tǒng)一的外設接口。
(6)開放源碼,軟件資源豐富。廣泛的軟件開發(fā)者的支持,價格低廉,結構靈活,適用面廣。
(7)完整的技術文檔,便于用戶的二次開發(fā)。1.3.3
C/OS-Ⅱ
C/OS-Ⅱ是JeanJ.Labrosse在1990年前后編寫的一個實時操作系統(tǒng)內(nèi)核,通常也稱為MUCOS或者UCOS。
嚴格地說,
C/OS-Ⅱ只是一個實時操作系統(tǒng)內(nèi)核,它僅僅包含了任務調(diào)度、任務管理、時間管理、內(nèi)存管理和任務間通信和同步等基本功能,沒有提供輸入/輸出管理、文件管理、網(wǎng)絡等額外的服務。但由于
C/OS-Ⅱ具有良好的可擴展性和源碼開放,這些功能完全可以由用戶根據(jù)需要自己實現(xiàn)。
C/OS-Ⅱ獲得廣泛使用不僅僅是因為它的源碼開放,還有一個重要原因就是其可移植性。
C/OS-Ⅱ的大部分代碼都是用C語言編寫的,只有與處理器的硬件相關的一部分代碼用匯編語言編寫??梢哉f,
C/OS-Ⅱ在最初設計時就考慮到了系統(tǒng)的可移植性,這一點和同樣源碼開放的Linux很不一樣,后者最初只用于X86體系結構,后來才將和硬件相關的代碼單獨提取出來。
目前
C/OS-Ⅱ支持ARM、PowerPC、MIPS、68k/ColdFire和X86等多種體系結構。1.3.4WindowsCE
WindowsCE主要應用于PDA以及智能電話(SmartPhone)等多媒體網(wǎng)絡產(chǎn)品。微軟公司于2004年推出了代號為“Macallan”的新版WindowsCE系列的操作系統(tǒng)。
WindowsCE.NET的目的是讓不同語言所寫的程序可以在不同的硬件上執(zhí)行,也就是所謂的.NETCompactFramework,在這個Framework下的應用程序與硬件互相獨立無關。其核心本身是一個支持多線程以及多CPU的操作系統(tǒng)。在工作調(diào)度方面,為了提高系統(tǒng)的實時性,主要設置了256級的工作優(yōu)先級以及可嵌入式中斷處理。如同在PCDesktop環(huán)境,WindowsCE系列在通信和網(wǎng)絡的能力以及多媒體方面極具優(yōu)勢。其提供的協(xié)議軟件非常完整,甚至還提供了有保密與驗證的加密通信,如PCT/SSL。在多媒體方面,目前在PC上執(zhí)行的WindowsMedia和DirectX都已經(jīng)應用到WindowsCE3.0以上的平臺,其主要功能就是對圖形、影音進行編碼及譯碼,以及對多媒體信號進行處理。1.3.5VxWorks
VxWorks操作系統(tǒng)是美國WindRiver公司于1983年設計開發(fā)的一種嵌入式實時操作系統(tǒng)(RTOS),它是嵌入式開發(fā)環(huán)境的關鍵組成部分。VxWorks以其高可靠性、實時性和可裁剪性以及良好的持續(xù)發(fā)展能力,高性能的內(nèi)核及友好的用戶開發(fā)環(huán)境,在嵌入式實時操作系統(tǒng)領域占據(jù)一席之地。因此,它被廣泛地應用在通信、軍事、航空航天等高精尖技術及實時性要求極高的領域中,如衛(wèi)星通信、軍事演習、彈道制導及飛機導航等。在美國的F-16、FA-18戰(zhàn)斗機、B-2隱形轟炸機和愛國者導彈上,甚至在1997年4月登陸火星表面的火星探測器上也使用了VxWorks。第2章ARMCortex-M3體系結構2.1ARMCortex-M3編程模型2.2ARMCortex-M3寄存器組織2.3ARMCortex-M3存儲器2.4ARMCortex-M3異常處理2.5NVIC與中斷控制
處理器的“體系結構”是指從程序員的角度觀察到的處理器組織方式,所以又稱為處理器的編程模型。其主要內(nèi)容為處理器內(nèi)的寄存器組織、對存儲器的尋址方式、指令系統(tǒng)等。
本章將介紹ARMCortext-M3編程模型、工作狀態(tài)與工作模式、ARM和Thumb狀態(tài)的寄存器組織、存儲器組織結構、異常及協(xié)處理器接口等一些基本概念,還將講述ARM的編程基礎,如ARM微處理器的基本工作原理、與程序設計相關的基本技術細節(jié)等。
2.1.1ARMCortex-M3處理器的編程模型
ARMCortex-M3是ARM公司推出的下一代新生內(nèi)核,它是一款低功耗處理器,具有門數(shù)目少、中斷延遲短、調(diào)試成本低的特點,是為要求有快速中斷響應能力的深度嵌入式應用而設計的。2.1ARMCortex-M3編程模型ARMCortex-M3CPU具有3級流水線、哈佛結構、獨立的本地指令、數(shù)據(jù)總線以及用于外設的稍微低性能的第三條總線,可提供系統(tǒng)增強型特性,例如現(xiàn)代化調(diào)試特性和支持更高級別的塊集成。ARMCortex-M3CPU還包含一個支持隨機跳轉的內(nèi)部預取指單元。
Cortex-M3處理器采用ARMv7-M架構,它包括所有的16位Thumb指令集和基本的32位Thumb-2指令集架構。Cortex-M3處理器不能執(zhí)行ARM指令。Thumb指令集是ARM指令集的子集,重新被編碼為16位,它支持較高的代碼密度以及16位或小于16位的存儲器數(shù)據(jù)總線系統(tǒng)。Thumb-2在Thumb指令集架構(ISA)上進行了大量的改進,與Thumb相比,它的代碼密度更高,并且通過使用16/32位指令,可提供更高的性能。
Cortex-M3處理器整合了以下組件:
(1)
ARMv7-M處理器內(nèi)核。Thumb-2ISA子集,包含所有基本的16位和32位Thumb-2指令、硬件除法指令、處理模式(HandlerMode)和線程模式(ThreadMode)、Thumb狀態(tài)和調(diào)試狀態(tài)、可中斷-可繼續(xù)(Interruptible-Continued)的LDM/STM及PUSH/POP,以實現(xiàn)低中斷延遲,自動保存和恢復處理器狀態(tài),可實現(xiàn)低延遲地進入和退出中斷服務程序(ISR)。
(2)嵌套向量中斷控制器(NVIC)。NVIC可與處理器內(nèi)核緊密結合實現(xiàn)低延遲中斷處理,并具有以下特性:外部中斷可配置為1~240個,優(yōu)先級位可配置為3~8位,中斷優(yōu)先級可動態(tài)地重新配置,優(yōu)先級分為占先中斷等級和非占先中斷等級,支持末尾連鎖(Tail-Chaining)和遲來(LateArrival)中斷。
(3)存儲器保護單元(MPU)。MPU功能可選,用于對存儲器進行保護。
(4)總線接口。包括AHBLiteICode、DCode和系統(tǒng)總線接口,APB專用外設總線(PPB)接口,支持bit-band方式的原子寫和讀訪問。
(5)低成本調(diào)試解決方案。當內(nèi)核正在運行、被中止或處于復位狀態(tài)時,能對系統(tǒng)中包括Cortex-M3寄存器組在內(nèi)的所有存儲器和寄存器進行調(diào)試訪問;支持串行線(SW-DP)或JTAG(JTAG-DP)調(diào)試訪問;支持Flash修補和斷點單元(FPB),實現(xiàn)斷點和代碼修補;支持數(shù)據(jù)觀察點和觸發(fā)單元(DWT),實現(xiàn)觀察點、觸發(fā)資源和系統(tǒng)分析(Systemprofiling);實現(xiàn)了儀表跟蹤宏單元(ITM),支持對printf類型的調(diào)試;提供跟蹤端口的接口單元(TPIU),用來連接跟蹤端口分析儀;提供可選的嵌入式跟蹤宏單元(ETM),實現(xiàn)指令跟蹤。
Cortex-M3處理器的內(nèi)核模塊框圖如圖2.1所示。
圖2.1ARMCortex-M3內(nèi)核模塊框圖
Cortex-M3處理器專門針對快速和簡單的編程而設計,用戶無需深厚的架構知識或編寫任何匯編代碼就可以建立簡單的應用程序。Cortex-M3處理器帶有一個簡化的基于棧的編程模型,該模型與傳統(tǒng)的ARM架構兼容,Cortex-M3與傳統(tǒng)的8位、16位架構所使用的系統(tǒng)相似,它簡化了8位、16位到32位的轉換過程。此外,使用基于硬件的中斷機制意味著編寫中斷服務程序(handlers)不再重要。在不需要匯編代碼寄存器操作的情況下,啟動代碼得到了大大的簡化。在位字段處理、硬件除法和If/Then指令的協(xié)助下,Thumb-2指令集架構(InstructionSetArchitecture,ISA)底層的關鍵特性使C代碼的執(zhí)行變得更加自然。在開發(fā)方面,Thumb-2指令自動優(yōu)化了性能和代碼密度,在無需交互使用ARM代碼和Thumb代碼的情況下加快了開發(fā)的進程,簡化了編譯目標的長期維護和支持工作。如此一來,用戶不但可以繼續(xù)使用C代碼,而且還免去了建立預編譯目標代碼庫的麻煩,代碼在更大程度上獲得了重復利用。2.1.2Cortex-M3處理器的工作狀態(tài)和工作模式
1.Cortex-M3的工作狀態(tài)
Cortex-M3處理器有以下兩種工作狀態(tài):
(1)
Thumb狀態(tài)。這是16位和32位半字對齊的Thumb和Thumb-2指令的正常執(zhí)行狀態(tài)。
(2)調(diào)試狀態(tài)。處理器停機調(diào)試時進入該狀態(tài)。
與ARM7處理器不同,Cortex-M3處理器不支持ARM指令的執(zhí)行,也即沒有ARM狀態(tài)。
2.Cortex-M3的工作模式
Cortex-M3處理器支持兩種工作模式:線程模式(threadmode)和處理模式(handlermode)。
在復位時,Cortex-M3處理器進入線程模式,異常返回時也會進入該模式。特權和用戶(非特權)代碼能夠在線程模式下運行。出現(xiàn)異常時,Cortex-M3處理器進入處理模式,在處理模式中,所有代碼都是特權訪問的。
引入線程模式和處理模式的概念,是為了讓處理器區(qū)分普通應用程序代碼和異常服務(包括中斷服務)例程代碼,從而進行不同的處理。
3.Cortex-M3代碼的特權分級
Cortex-M3的代碼執(zhí)行進行了特權分級,可以分為特權執(zhí)行和非特權執(zhí)行。特權執(zhí)行時可以訪問所有資源。非特權執(zhí)行時對有些資源的訪問受到限制或不允許訪問。
特權分級可以提供一種存儲器訪問的保護機制,避免普通用戶因程序代碼出現(xiàn)意外而進行對存儲器關鍵區(qū)域的操作,這也是一種基本的安全模型。
處理模式始終是特權訪問,線程模式可以是特權訪問,也可以是非特權訪問。系統(tǒng)復位之后,處理器默認進入線程模式,特權級別為特權訪問,此時的程序可以訪問所有范圍的存儲器,并且可以執(zhí)行所有指令。應用程序也可以通過MSR指令清零控制寄存器(CONTROL)的第0位,將它配置為用戶(非特權)訪問。但是,當線程模式的程序從特權訪問變?yōu)橛脩粼L問后,本身便不能回到特權訪問。只有通過執(zhí)行一條系統(tǒng)調(diào)用指令SVC,觸發(fā)SVC異常,然后由異常服務例程(一般由操作系統(tǒng)提供,用戶不能自己編寫)接管,如果獲準進入特權訪問,由異常服務例程修改CONTROL寄存器,才能使非特權訪問的線程模式程序重新進入特權訪問。通過引入特權訪問和非特權訪問,能夠在硬件水平上限制某些不受信任的程序執(zhí)行,使系統(tǒng)的可靠性得到提高。例如,操作系統(tǒng)的內(nèi)核通常都在特權級下執(zhí)行,所有可使用的存儲器都可以訪問;一旦在操作系統(tǒng)里開啟了一個用戶程序,就讓該用戶程序在非特權級下執(zhí)行,從而使整個系統(tǒng)不會因個別程序的錯誤或惡意攻擊而導致崩潰。
4.Cortex-M3的雙堆棧機制
Cortex-M3的程序存儲使用堆棧來實現(xiàn)。整個系統(tǒng)提供一個主堆棧MSP(MainStackPointer)供用戶程序和異常處理程序使用,每一個處于線程模式的程序也有一個自己的進程堆棧PSP(ProcessStackPointer)。
結束復位后,所有代碼都使用主堆棧。異常處理程序(例如SVC)可以通過改變其在退出時使用的EXC_RETURN值來改變線程模式使用的堆棧。所有異常繼續(xù)使用主堆棧,堆棧指針r13是分組寄存器,可在SP_main和SP_process之間切換。任何時候,進程堆棧和主堆棧中只有一個是可見的,由r13指示。除了使用從處理模式退出時的EXC_RETURN值外,在線程模式中,使用MSR指令對CONTROL[1]執(zhí)行寫操作也可以從主堆棧切換到進程堆棧。
使用這種雙堆棧機制,可以使操作系統(tǒng)內(nèi)核僅在處理模式下執(zhí)行,此時內(nèi)核僅使用主堆棧,而用戶應用程序僅在線程模式下執(zhí)行,此時用戶應用程序使用自己的進程堆棧,這樣便可以防止因用戶程序的堆棧錯誤而破壞操作系統(tǒng)使用的堆棧。
Cortex-M3處理器擁有16個32位的通用寄存器r0~r15以及一些特殊功能寄存器。絕大多數(shù)的16位指令只能使用r0~r7(低組寄存器),而32位的Thumb-2指令則可以訪問所有通用寄存器。特殊功能寄存器有預定義的功能,包括程序狀態(tài)寄存器(xPSR)、控制寄存器(CONTROL)、中斷屏蔽寄存器(PRIMASK、FAULTMASK、BASEPRI)等,它們必須通過專用的指令來訪問。2.2ARMCortex-M3寄存器組織
圖2.2ARMCortex-M3寄存器集合2.2.1通用寄存器
1.通用目的寄存器r0~r7
r0~r7也被稱為低組寄存器,所有指令都能訪問它們,其字長全為32位,復位后的初始值是不可預料的。
2.通用目的寄存器r8~r12
r8~r12也被稱為高組寄存器。這是因為只有很少的16位Thumb指令能訪問它們,32位的Thumb-2指令則不受限制。其字長也是32位,且復位后的初始值是不可預料的。
3.堆棧指針寄存器r13
寄存器r13用作堆棧指針(SP)。由于SP忽略了寫入位[1:0]的值,因此它自動與字,即4字節(jié)邊界對齊。
在Cortex-M3處理器內(nèi)核中共有兩個堆棧指針。當引用r13(或寫做SP)時,引用到的是當前正在使用的那一個堆棧,則另一個堆棧必須用特殊的指令來訪問。這兩個堆棧指針分別是:
●主堆棧指針(MSP),或寫做SP_main。這是缺省的堆棧指針,它由操作系統(tǒng)內(nèi)核、異常服務例程以及所有需要特權訪問的應用程序代碼來使用?!襁M程堆棧指針(PSP),或寫做SP_process。用于常規(guī)的應用程序代碼(不處于異常服務例程中時)。
處理模式始終使用SP_main,而線程模式可配置為SP_main或SP_process。r13是堆棧指針。
要注意的是,并不是每個程序都要用齊兩個堆棧指針,簡單的應用程序只使用MSP就可以了。堆棧指針用于訪問堆棧,并且PUSH指令和POP指令默認使用SP。
4.鏈接寄存器r14
寄存器r14是子程序的鏈接寄存器(LR)。在執(zhí)行分支(branch)和鏈接(BL)指令或帶有交換的分支和鏈接指令(BLX)時,LR用于接收來自PC的返回地址。LR也用于異常返回。
其它任何時候都可以將r14看做一個通用寄存器。
在一個匯編程序中,LR用于在調(diào)用子程序時存儲返回地址。例如,當使用BL(分支并鏈接,BranchandLink)指令時,就自動填充LR的值。如:
main;主程序
…
BLfunction1;使用“分支并鏈接”指令呼叫function1
;PC=function1,并且LR=main的下一條指令地址
…
Function1
…;function1的代碼
BXLR;函數(shù)返回
5.程序計數(shù)器r15
寄存器r15為程序計數(shù)器(PC)。該寄存器的位0始終為0,因此,指令始終與字或半字邊界對齊。由于Cortex-M3處理器內(nèi)部使用了指令流水線,讀PC時返回的值是當前指令的地址+4。如:
0x1000:MOVR0,PC;R0=0x1004
如果向PC中寫數(shù)據(jù),就會引起一次程序的分支(但是不更新LR寄存器)。2.2.2程序狀態(tài)寄存器
系統(tǒng)級的Cortex-M3處理器狀態(tài)可分為3類,因此有3個程序狀態(tài)寄存器,即應用PSR(APSR)、中斷PSR(IPSR)、執(zhí)行PSR(EPSR)。
通過MRS/MSR指令,這3個PSR既可以單獨訪問,也可以組合訪問(2個組合,3個組合都可以)。當使用三合一的方式訪問時,應使用“xPSR”或“PSR”作為名稱。
1.應用PSR(APSR)
應用PSR(APSR)包含條件代碼標志。在進入異常之前,Cortex-M3處理器將條件代碼標志保存在堆棧內(nèi)??梢允褂肕SR(2)和MRS(2)指令來訪問APSR。APSR的位分配示意圖如圖2.3所示。
圖2.3APSR的位分配示意圖●
N位:負數(shù)或小于標志。為1時表示結果為負數(shù)或小于,為0時表示結果為正數(shù)或大于。
●
Z位:零標志。為1時表示結果為0,為0時表示結果為非0。
●
C位:進位/借位標志。為1時表示有進位或借位,為0時表示沒有進位或借位。
●
V位:溢出標志。為1時表示溢出,為0時表示沒有溢出。
●
Q位:粘著飽和(stickysaturation)標志。
2.中斷PSR(IPSR)
中斷PSR(IPSR)包含當前激活的異常的ISR編號。IPSR的位分配示意圖如圖2.4所示。
圖2.4IPSR的位分配示意圖
IPSR的9位表示了當前激活的異常ISR編號,即中斷編號。常用的一些中斷編號有:基礎級別=0,NMI=2,SVCall=11,INTISR[0]=16,INTISR[1]=17,…,INTISR[239]=255。
具體的中斷編號請參見有關中斷的章節(jié)。
3.執(zhí)行PSR(EPSR)
執(zhí)行PSR(EPSR)包含兩個重疊的區(qū)域:
(1)可中斷-可繼續(xù)指令區(qū)(ICI):多寄存器加載(LDM)和存儲(STM)操作是可中斷的。EPSR的ICI區(qū)用來保存從產(chǎn)生中斷的點繼續(xù)執(zhí)行多寄存器加載和存儲操作時所必需的信息。
(2)
If-Then(IT)狀態(tài)區(qū):EPSR的IT區(qū)包含了If-Then指令的執(zhí)行狀態(tài)位。
注意:ICI區(qū)和IT區(qū)是重疊的,因此,If-Then模塊內(nèi)的多寄存器加載或存儲操作不具有可中斷-可繼續(xù)功能。EPSR的位分配示意圖如圖2.5所示。
圖2.5EPSR的位分配示意圖●
ICI區(qū):[15:12]位,可中斷-可繼續(xù)的指令位。如果在執(zhí)行LDM或STM操作時產(chǎn)生一次中斷,則LDM或STM操作暫停。EPSR使用位[15:12]來保存該操作中下一個寄存器操作數(shù)的編號。在中斷響應之后,處理器返回由[15:12]指向的寄存器并恢復操作。如果ICI區(qū)指向的寄存器不在指令的寄存器列表中,則處理器對列表中的下一個寄存器(如果有)繼續(xù)執(zhí)行LDM/STM操作。
●
IT(If-Then)區(qū):[15:10]位和[26:25]位,它們是If-Then指令的執(zhí)行狀態(tài)位,包含If-Then模塊的指令數(shù)目和它們的執(zhí)行條件?!?/p>
T位:[24]位。T位使用一條可相互作用的指令來清零,這里寫入的PC的位0的值為0。也可以使用異常出棧操作來清零,被壓棧的T位為0。當T位為0時執(zhí)行指令會引起INVSTATE異常。
由以上3個PSR的位分配圖可以看出,3個PSR的位分配是互不影響的。因此在實際使用中常將3個PSR組合成一個xPSR來使用。在進入異常時,處理器也將3個狀態(tài)寄存器組合的信息xPSR保存在堆棧里。2.2.3控制寄存器
控制寄存器(CONTROL)有兩個用途:其一,用于定義特權級別;其二,用于選擇當前使用哪個堆棧指針。應用時可由兩個位來行使這兩個職能。
(1)
CONTROL[1]位:堆棧指針選擇位,該位為0時表示選擇主堆棧指針MSP(復位后的缺省值);為1時表示選擇進程堆棧指針PSP。在線程模式下,可以使用PSP;在處理模式下,只允許使用MSP,所以此時不得在該位寫1。在Cortex-M3的處理模式中,CONTROL[1]總是0;在線程模式中則可以為0或1。因此,僅當處于特權級的線程模式下時此位才可寫,其它場合下禁止寫此位。改變處理器的模式也有其它的方式:在異常返回時,通過修改LR的位2,也能實現(xiàn)模式切換,這是LR在異常返回時的特殊用法。
(2)
CONTROL[0]位:特權級別選擇位,其值為0時表示特權級的線程模式,為1時表示用戶級的線程模式。處理模式永遠都是特權級的。僅當在特權級下操作時才允許寫該位。一旦進入了用戶級,唯一返回特權級的途徑就是觸發(fā)一個(軟)中斷,再由服務例程改寫該位。2.2.4中斷屏蔽寄存器
中斷屏蔽寄存器包括PRIMASK、FAULTMASK和BASEPRI三個寄存器,這三個寄存用于控制異常的使能和清除。
(1)
PRIMASK。PRIMASK是一個只有單一比特的寄存器。在它被置1后,就關掉所有可屏蔽的異常,只剩下NMI和硬fault可以響應。它的缺省值是0,表示沒有關中斷。
(2)
FAULTMASK。FAULTMASK也是一個只有一個位的寄存器。當它置1時,只有NMI才能響應,所有其它的異常,甚至是硬錯誤,也全部被屏蔽。它的缺省值也是0,表示沒有關異常。
(3)
BASEPRI。BASEPRI寄存器最多有9位(由表達優(yōu)先級的位數(shù)決定),它定義了被屏蔽優(yōu)先級的閾值。當BASEPRI寄存器被設成某個值后,所有優(yōu)先級號大于等于此值的中斷都被關(優(yōu)先級號越大,優(yōu)先級越低)。但若被設成0,則不關閉任何中斷,0也是缺省值。
對于某些任務而言,恰如其分地使用PRIMASK和BASEPRI來暫時關閉一些中斷是非常重要的。FAULTMASK則可以被操作系統(tǒng)用于暫時關閉fault處理機能,這種處理在某個任務崩潰時可能需要。因為在任務崩潰時,常常伴隨著一大堆fault。在系統(tǒng)進行后續(xù)處理時,通常不再需要響應這些fault??傊瓼AULTMASK就是專門留給操作系統(tǒng)用的。
只有在特權級下,才允許訪問這三個寄存器。
Cortex-M3處理器的存儲器系統(tǒng)與傳統(tǒng)ARM處理器的存儲器系統(tǒng)架構有所不同,主要體現(xiàn)在幾個方面:Cortex-M3的存儲器映射是預定義好的,并且還規(guī)定了哪個位置應該使用哪個總線,而傳統(tǒng)的ARM處理器的存儲器映射是由各生產(chǎn)廠家自己定義的;Cortex-M3存儲器系統(tǒng)支持位帶(bit-band)操作,通過它可以實現(xiàn)對單一比特的位操作,適用于一些特殊的存儲器區(qū)域中;Cortex-M3的存儲器系統(tǒng)支持非對齊訪問和互斥訪問,這個特性是傳統(tǒng)ARM處理器沒有的;Cortex-M3的存儲器系統(tǒng)同時支持大端格式配置和小端格式配置。2.3ARMCortex-M3存儲器2.3.1Cortex-M3存儲器格式
Cortex-M3處理器將存儲器看做從0開始向上編號的字節(jié)的線性集合。例如:字節(jié)0~3存放第一個被保存的字,字節(jié)4~7存放第二個被保存的字,等等。
Cortex-M3處理器能夠以小端格式或大端格式訪問存儲器中的數(shù)據(jù)字,而訪問代碼時始終使用小端格式。
小端格式中,一個字中最低地址的字節(jié)為該字的最低有效字節(jié),最高地址的字節(jié)為最高有效字節(jié)。存儲器系統(tǒng)地址0的字節(jié)與數(shù)據(jù)線7~0相連。小端數(shù)據(jù)格式示意圖如圖2.6所示。小端格式是ARM處理器默認的存儲器格式。大端格式中,一個字中最低地址的字節(jié)為該字的最高有效字節(jié),而最高地址的字節(jié)為最低有效字節(jié)。存儲器系統(tǒng)地址0的字節(jié)與數(shù)據(jù)線31~24相連。大端數(shù)據(jù)格式示意圖如圖2.7所示。
圖2.6小端數(shù)據(jù)格式示意圖
圖2.7大端數(shù)據(jù)格式示意圖
Cortex-M3處理器有一個配置引腳BIGEND,用戶能夠使用它來選擇小端格式或大端格式。該引腳在復位時被采樣,結束復位后存儲器格式不能修改。2.3.2Cortex-M3存儲器映射
微處理器將存儲器空間和外設空間分為獨立編址和統(tǒng)一編址兩種方式。存儲器映射是指把芯片中或芯片外的各類存儲器、外設等進行統(tǒng)一編址,便可以用地址來表示某一使用對象。通過把片上外設的寄存器映射到外設區(qū),就可以簡單地以訪問內(nèi)存的方式來訪問這些外設的寄存器,從而控制外設的工作。
Cortex-M3處理器擁有32位地址線,尋址空間為4GB。它有一個預定義好的基本存儲器映射,這一特性極大地方便了軟件在各種Cortex-M3芯片間的移植。由于各廠商生產(chǎn)的各種型號的Cortex-M3芯片的NVIC和MPU都在相同的位置布設寄存器,使得它們與具體器件無關,這樣,中斷和存儲保護有關的代碼便可在各種Cortex-M3處理器上運行。
Cortex-M3的存儲器映射是一個粗線條的方框,它依然允許芯片制造商靈活細膩地分配存儲器空間,以制造出各具特色的芯片。
Cortex-M3的存儲器映射如圖2.8所示。
圖2.8Cortex-M3存儲器映射
Cortex-M3的地址空間為4GB,程序可以在代碼區(qū)、內(nèi)部SRAM區(qū)以及外部RAM區(qū)中執(zhí)行。但是因為指令總線與數(shù)據(jù)總線是分開的,最理想的是把程序放到代碼區(qū),從而使取指和數(shù)據(jù)訪問各自使用自己的總線并行執(zhí)行。代碼區(qū)的地址范圍是0x00000000~0x1FFFFFFF。
Cortex-M3內(nèi)部SRAM區(qū)的大小是512MB,用于讓芯片制造商連接片上的SRAM,這個區(qū)通過系統(tǒng)總線來訪問,地址范圍是0x20000000~0x3FFFFFFF。在這個區(qū)的下部,有一個1MB的區(qū)間,被稱為位帶區(qū)。該位帶區(qū)還有一個對應的32MB的位帶別名(alias)區(qū),容納了8M個位變量。位帶區(qū)對應的是最低的1MB地址范圍,而位帶別名區(qū)里面的每個字對應位帶區(qū)的一個比特。位帶操作只適用于數(shù)據(jù)訪
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省實驗中學廣州市天河區(qū)附屬實驗學校2021-2022學年八年級下學期期中物理試題(含答案)
- 基層中醫(yī)藥知識培訓課件
- (一模)哈三中2025屆高三第一次模擬考試 英語試題(含答案)
- 物業(yè)管理服務委托及管理費支付協(xié)議
- 安東尼奇妙的冒險故事讀后感
- 項目執(zhí)行工作計劃書與時間表安排
- 山西省晉中市太谷區(qū)職業(yè)中學校2024-2025學年高一上學期期末考試生物試題
- 企業(yè)文件保密制度表格化處理記錄
- 三農(nóng)問題社會調(diào)查方法與技術指導書
- 離職員工知識產(chǎn)權保密協(xié)議
- 標識標牌制作及安裝項目技術方案
- 醫(yī)療器械物價收費申請流程
- DB3410T 34-2024特定地域單元生態(tài)產(chǎn)品價值核算規(guī)范
- 江蘇紅豆實業(yè)股份有限公司償債能力分析
- 青島中石化輸油管道爆炸事故調(diào)查報告
- 2024年蘇州職業(yè)大學高職單招(英語/數(shù)學/語文)筆試歷年參考題庫含答案解析
- 充電樁采購安裝投標方案(技術方案)
- 教科版小學科學六年級下冊單元練習試題及答案(全冊)
- 《Java程序設計》電子課件
- 乳腺癌患者的疼痛護理課件
- 研課標說教材修改版 八年級下冊
評論
0/150
提交評論