《嵌入式系統(tǒng)》全冊(cè)配套課件_第1頁(yè)
《嵌入式系統(tǒng)》全冊(cè)配套課件_第2頁(yè)
《嵌入式系統(tǒng)》全冊(cè)配套課件_第3頁(yè)
《嵌入式系統(tǒng)》全冊(cè)配套課件_第4頁(yè)
《嵌入式系統(tǒng)》全冊(cè)配套課件_第5頁(yè)
已閱讀5頁(yè),還剩705頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

《嵌入式系統(tǒng)》全冊(cè)配套課件2023/1/112023/1/112今日授課內(nèi)容第一部分:教學(xué)安排和要求第二部分:嵌入式系統(tǒng)概述2023/1/113課程特點(diǎn)

本課程以ARM9微處理器S3C2410A為應(yīng)用實(shí)例,介紹嵌入式系統(tǒng)的基本原理、硬件結(jié)構(gòu)和軟件開(kāi)發(fā)。具有如下特點(diǎn):1、理論與實(shí)踐相結(jié)合2、軟硬件結(jié)合3、注重學(xué)以致用、工程動(dòng)手能力的培養(yǎng)。2023/1/114教學(xué)內(nèi)容嵌入式系統(tǒng)技術(shù)是本專(zhuān)業(yè)核心課程,教學(xué)內(nèi)容包括:嵌入式系統(tǒng)概論;ARM體系結(jié)構(gòu);嵌入式系統(tǒng)存儲(chǔ)器結(jié)構(gòu)與接口;嵌入式系統(tǒng)輸入輸出接口技術(shù);嵌入式系統(tǒng)總線(xiàn)與通信接口;嵌入式操作系統(tǒng)介紹;嵌入式系統(tǒng)設(shè)計(jì)與開(kāi)發(fā);嵌入式系統(tǒng)應(yīng)用實(shí)例分析。2023/1/115先修基礎(chǔ)知識(shí)模擬電路數(shù)字電路計(jì)算機(jī)硬件基礎(chǔ)微機(jī)原理與接口技術(shù)計(jì)算機(jī)操作系統(tǒng)C語(yǔ)言程序設(shè)計(jì)等2023/1/116教材與參考書(shū)黃智偉等,ARM9嵌入式系統(tǒng)設(shè)計(jì)基礎(chǔ)教程.北京航空航天大學(xué)出版社王志英等,嵌入式系統(tǒng)原理與設(shè)計(jì).高等教育出版社楊剛等,嵌入式系統(tǒng)設(shè)計(jì)與實(shí)踐.北京航空航天大學(xué)出版社符意德,嵌入式系統(tǒng)設(shè)計(jì)原理及應(yīng)用.清華大學(xué)出版社……2023/1/117教學(xué)目標(biāo)(期望)掌握嵌入式系統(tǒng)設(shè)計(jì)的基本原理、基本方法;熟悉ARM微處理器體系結(jié)構(gòu),掌握一套主流的開(kāi)發(fā)工具及其開(kāi)發(fā)方法;具備嵌入式系統(tǒng)軟、硬件開(kāi)發(fā)設(shè)計(jì)的基本能力;為進(jìn)一步研究和處理實(shí)際工程問(wèn)題打下基礎(chǔ)。

2023/1/118考核方式課堂表現(xiàn)——占總成績(jī)10%教學(xué)實(shí)驗(yàn)——占總成績(jī)30%閉卷考試——占總成績(jī)60%上課時(shí)間:?jiǎn)沃?下午5、6節(jié)周4下午5、6節(jié)

實(shí)驗(yàn)時(shí)間和地點(diǎn)待定。2023/1/119今日授課內(nèi)容第一部分:教學(xué)安排和要求第二部分:嵌入式系統(tǒng)概述2023/1/1110嵌入式系統(tǒng)概述什么是嵌入式系統(tǒng)?2023/1/1111生活中的嵌入式系統(tǒng)2023/1/1112嵌入式系統(tǒng)的定義IEEE:“Deviceusedtocontrol,monitor,orassisttheoperationofequipment,machineryorplants”.從技術(shù)的角度定義:以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng)。嵌入式系統(tǒng)是將先進(jìn)的計(jì)算機(jī)技術(shù)、半導(dǎo)體技術(shù)和電子技術(shù)與各個(gè)行業(yè)的具體應(yīng)用相結(jié)合后的產(chǎn)物。2023/1/1113嵌入式系統(tǒng)示例——汽車(chē)控制系統(tǒng)2023/1/1114馬達(dá)控制器車(chē)燈嵌入式系統(tǒng)示例——汽車(chē)控制系統(tǒng)尾燈控制系統(tǒng)后車(chē)門(mén)控制系統(tǒng)前車(chē)門(mén)控制系統(tǒng)座椅控制系統(tǒng)發(fā)動(dòng)器控制系統(tǒng)所有的控制系統(tǒng)都是一個(gè)完整的嵌入式系統(tǒng)2023/1/1115即使遠(yuǎn)在火星火星與地球,這一對(duì)在星空中遙遙相望的“兄弟”,在2003年8月27日這一天,迎來(lái)6萬(wàn)年來(lái)“最親密的接觸”,火星距離地球最近達(dá)到55756622(5千多萬(wàn))公里。面對(duì)6萬(wàn)年才有一次的機(jī)會(huì),科學(xué)家們積極行動(dòng)起來(lái)———從6月開(kāi)始,先后有歐洲的“火星快車(chē)”、美國(guó)“勇氣號(hào)”和“機(jī)遇號(hào)”等三顆火星探測(cè)器飛往火星,而日本一顆本已在太空“迷失方向”的火星探測(cè)器也在關(guān)鍵時(shí)刻及時(shí)“醒”來(lái),開(kāi)始了久違的火星之旅?!坝職馓?hào)”火星探測(cè)器2023/1/1116嵌入式系統(tǒng)的組成嵌入式系統(tǒng)一般由嵌入式硬件和軟件組成硬件系統(tǒng)一般由嵌入式微處理器、存儲(chǔ)器和輸入/輸出部分組成,其中嵌入式微處理器是嵌入式硬件系統(tǒng)的核心。軟件包括:初始化代碼及驅(qū)動(dòng)、嵌入式操作系統(tǒng)和應(yīng)用程序等,這些軟件有機(jī)地結(jié)合在一起,形成系統(tǒng)特定的一體化軟件。2023/1/1117嵌入式處理器的分類(lèi)——用途嵌入式微控制器(MicroControllerUnit,MCU)嵌入式微處理器(MicroProcessorUnit,MPU)嵌入式DSP(DigitalSignalProcessor)嵌入式片上系統(tǒng)(SystemOnChip)2023/1/1118嵌入式微控制器嵌入式微控制器又稱(chēng)單片機(jī),它是將整個(gè)計(jì)算機(jī)系統(tǒng)集成到一塊芯片中。嵌入式微控制器一般以某一種微處理器內(nèi)核為核心,芯片內(nèi)部集成ROM/EPROM、RAM、總線(xiàn)、總線(xiàn)邏輯、定時(shí)/計(jì)數(shù)器、WatchDog、I/O、串行口、脈寬調(diào)制輸出、A/D、等各種必要功能和外設(shè)。嵌入式處理器的字長(zhǎng)寬度可分為4位、8位、16位、32位和64位。一般把16位及以下的稱(chēng)為嵌入式微控制器(EmbeddedMicroController)特點(diǎn):?jiǎn)纹?、體積小、功耗和成本低、可靠性高;缺點(diǎn):MCU微控制器,總線(xiàn)寬度一般為4位、8位或16位,處理速度有限,一般在幾個(gè)MIPS,進(jìn)行一些復(fù)雜的應(yīng)用很困難,運(yùn)行操作系統(tǒng)就更難。2023/1/1119嵌入式微控制器嵌入式微控制器目前的品種和數(shù)量最多,比較有代表性的通用系列包括8051、P51XA、MCS-251、MCS-96/196/296、C166/167、MC68HC05/11/12/16、68300、數(shù)目眾多ARM芯片等。目前MCU占嵌入式系統(tǒng)約70%的市場(chǎng)份額。復(fù)位部件看門(mén)狗部件晶振部件I/O部件中斷部件ROM部件SRAM部件定時(shí)器部件CPU核2023/1/1120嵌入式微處理器

嵌入式微處理器(EmbeddedMicroProcessingUnit,EMPU)由通用計(jì)算機(jī)中的CPU發(fā)展而來(lái),嵌入式微處理器只保留和嵌入式應(yīng)用緊密相關(guān)的功能硬件,去除其他的冗余功能部分,以最低的功耗和資源實(shí)現(xiàn)嵌入式應(yīng)用的特殊要求。同時(shí),其在工作溫度、抗電磁干擾、可靠性等方面一般都做了各種增強(qiáng)。優(yōu)點(diǎn):體積小、功耗低、成本低、可靠性高;缺點(diǎn):片內(nèi)周片電路不足,必須配備ROM,RAM,總線(xiàn)接口,各種外設(shè)接口等;2023/1/1121嵌入式微處理器嵌入式微處理器把CPU、ROM、RAM及I/O等做到同一個(gè)芯片上。32位微處理器采用32位的地址和數(shù)據(jù)總線(xiàn),其地址空間達(dá)到了232=4GB。目前主流的32位嵌入式微處理器系列主要有:ARM系列MIPS系列PowerPC系列等。2023/1/1122ARM系列ARM(AdvancedRISCMachine)公司的ARM微處理器體系結(jié)構(gòu)目前被公認(rèn)為是嵌入式應(yīng)用領(lǐng)域領(lǐng)先的32位嵌入式RISC微處理器結(jié)構(gòu)。ARM體系結(jié)構(gòu)目前發(fā)展并定義了7種不同的版本。從版本1到版本7,ARM體系的指令集功能不斷擴(kuò)大。ARM處理器系列中的各種處理器,雖然在實(shí)現(xiàn)技術(shù)、應(yīng)用場(chǎng)合和性能方面都不相同,但只要支持相同的ARM體系版本,基于它們的應(yīng)用軟件是兼容的。目前,70%的移動(dòng)電話(huà)、大量的游戲機(jī)、手持PC和機(jī)頂盒等都已采用了ARM處理器,許多一流的芯片廠(chǎng)商都是ARM的授權(quán)用戶(hù),如Intel、Samsung、TI、Freescale、ST等公司。2023/1/1123MIPS系列美國(guó)斯坦福大學(xué)的Hennessy教授領(lǐng)導(dǎo)的研究小組研制的MIPS(MicroprocessorwithoutInterlockedPipedStages,無(wú)互鎖流水級(jí)的微處理器)是世界上很流行的一種RISC處理器,其機(jī)制是盡量利用軟件辦法避免流水線(xiàn)中的數(shù)據(jù)相關(guān)問(wèn)題。從20世紀(jì)80年代初期MIPS處理器發(fā)明到現(xiàn)在,MIPS處理器以其高性能的處理能力被廣泛應(yīng)用于寬帶接入、路由器、調(diào)制解調(diào)設(shè)備、電視、游戲、打印機(jī)、辦公用品、DVD播放等廣泛的領(lǐng)域。和ARM公司一樣,MIPS公司本身并不從事芯片的生產(chǎn)活動(dòng)(只進(jìn)行設(shè)計(jì)),不過(guò)其他公司如果要生產(chǎn)該芯片,則必須得到MIPS公司的許可。2023/1/1124PowerPCPowerPC是Freescale(原Motorola)公司的產(chǎn)品。PowerPC

RISC處理器采用了超標(biāo)量處理器設(shè)計(jì)和調(diào)整內(nèi)存緩沖器,修改了指令處理設(shè)計(jì),它完成一個(gè)操作所需的指令數(shù)比CISC處理器要多,但完成操作的總時(shí)間卻減少了。PowerPC內(nèi)核采用獨(dú)特分支處理單元可以讓指令預(yù)取效率大大提高,即使指令流水線(xiàn)上出現(xiàn)跳轉(zhuǎn)指令,也不會(huì)影響到其運(yùn)算單元的運(yùn)算效率。PowerPC

RISC處理器設(shè)計(jì)了多級(jí)內(nèi)存高速緩沖區(qū),以便讓那些正在訪(fǎng)問(wèn)(或可能會(huì)被訪(fǎng)問(wèn))的數(shù)據(jù)和指令總是存儲(chǔ)在調(diào)整內(nèi)存中。2023/1/1125嵌入式DSP處理器DSP處理器是專(zhuān)門(mén)用于信號(hào)處理方面的處理器,芯片內(nèi)部采用程序和數(shù)據(jù)分開(kāi)存儲(chǔ)和傳輸?shù)墓鸾Y(jié)構(gòu),具有專(zhuān)門(mén)硬件乘法器,采用流水線(xiàn)操作,提供特殊的DSP指令,可用來(lái)快速地實(shí)現(xiàn)各種數(shù)字信號(hào)處理算法,使其處理速度比最快的CPU還快10~50倍。在數(shù)字濾波、FFT、譜分析等各種儀器上DSP獲得了大規(guī)模的應(yīng)用。1982年世界上誕生了首枚DSP芯片。在語(yǔ)音合成和編碼解碼器中得到了廣泛應(yīng)用。DSP的運(yùn)算速度進(jìn)一步提高,應(yīng)用領(lǐng)域也從上述范圍擴(kuò)大到了通信和計(jì)算機(jī)方面。2023/1/1126嵌入式DSP處理器有代表性的產(chǎn)品是TexasInstruments的TMS320系列和Motorola的DSP56000系列。TMS320系列處理器包括用于控制的C2000系列,移動(dòng)通信的C5000系列,以及性能更高的C6000和C8000系列。Motorola公司的DSP56000已經(jīng)發(fā)展成為DSP56000,DSP56100,DSP56200和DSP56300等幾個(gè)不同系列的處理器。2023/1/1127嵌入式片上系統(tǒng)(SOC)SoC就是SystemonChip,SoC是一種基于IP(IntellectualProperty)核嵌入式系統(tǒng)設(shè)計(jì)技術(shù)。它結(jié)合了許多功能區(qū)塊,將功能做在一個(gè)芯片上,ARM

RISC、MIPS

RISC、DSP或是其他的微處理器核心,加上通信的接口單元,例如通用串行端口(USB)、TCP/IP通信單元、GPRS通信接口、GSM通信接口、IEEE1394、藍(lán)牙模塊接口等等,這些單元以往都是依照各單元的功能做成一個(gè)個(gè)獨(dú)立的處理芯片。SOC可以分為通用和專(zhuān)用兩類(lèi)。通用系列包括Infineon(Siemens)的TriCore,Motorola的M-Core,Echelon和Motorola聯(lián)合研制的Neuron芯片等。專(zhuān)用SOC一般專(zhuān)用于某個(gè)或某類(lèi)系統(tǒng)中。有代表性的產(chǎn)品是Philips的SmartXA2023/1/1128SOC體系結(jié)構(gòu)SOC芯片已在聲音、圖像、影視、網(wǎng)絡(luò)及系統(tǒng)邏輯等應(yīng)用領(lǐng)域中廣泛應(yīng)用。2023/1/1129嵌入式系統(tǒng)的應(yīng)用隨著社會(huì)經(jīng)濟(jì)的發(fā)展和科學(xué)技術(shù)的進(jìn)步,嵌入式系統(tǒng)在消費(fèi)電子、工業(yè)應(yīng)用、軍事國(guó)防、網(wǎng)絡(luò)設(shè)備等領(lǐng)域都得到廣泛應(yīng)用。2023/1/1130嵌入式系統(tǒng)的應(yīng)用家用方面:數(shù)字電視、信息家電、智能玩具、手持通訊、存儲(chǔ)設(shè)備的核心。2023/1/1131嵌入式視頻服務(wù)器2023/1/1132現(xiàn)代化家庭2023/1/1133嵌入式Internet應(yīng)用2023/1/1134智能玩具與機(jī)器人2023/1/1135嵌入式技術(shù)應(yīng)用——工業(yè)控制工業(yè)方面:機(jī)床、冶金、電子、交通、航空航天等行業(yè)技術(shù)升級(jí)的重要基礎(chǔ)2023/1/1136軍事偵察阿富汗參加反恐作戰(zhàn)的“赫耳墨斯”價(jià)值4萬(wàn)美元,可攜帶2架攝像機(jī),發(fā)揮了很好作用。2023/1/1137反恐防暴2002年11月28日,以色列一選舉投票點(diǎn),發(fā)生槍擊事件,造成至少7人死亡,數(shù)十人受傷。以警方用機(jī)器人在檢查一具巴勒斯坦槍手的尸體。2023/1/1138空中飛行器微型飛行器“黑寡婦”2023/1/1139基于RTLinux的仿人機(jī)器人2023/1/1140基于VXworks的火星探路者2023/1/1141基于OMAP5912的智能手持設(shè)備方案2023/1/1142嵌入式系統(tǒng)的特點(diǎn)系統(tǒng)內(nèi)核小:嵌入式系統(tǒng)一般應(yīng)用于小型電子裝置,系統(tǒng)資源有限,因此內(nèi)核較傳統(tǒng)的操作系統(tǒng)要小得多;專(zhuān)用性強(qiáng):軟、硬件按對(duì)象要求裁剪,兩者結(jié)合緊密;軟件的編譯下載與系統(tǒng)相結(jié)合,“通用”、“升級(jí)”的概念一般不適用;系統(tǒng)精簡(jiǎn):沒(méi)有系統(tǒng)軟件和應(yīng)用軟件的區(qū)分2023/1/1143嵌入式系統(tǒng)的特點(diǎn)嵌入式系統(tǒng)開(kāi)發(fā)需要開(kāi)發(fā)工具和環(huán)境用戶(hù)對(duì)其中程序功能進(jìn)行修改必須一套開(kāi)發(fā)工具和環(huán)境;開(kāi)發(fā)工具一般基于通用計(jì)算機(jī)上的軟硬件設(shè)備以及各種輔助儀器;主機(jī):用于程序的開(kāi)發(fā);目標(biāo)機(jī):最后的執(zhí)行機(jī);開(kāi)發(fā)是交替式的。2023/1/1144嵌入式系統(tǒng)開(kāi)發(fā)特點(diǎn)由于嵌入式系統(tǒng)資源有限,一般不具備自主開(kāi)發(fā)能力,產(chǎn)品發(fā)布后用戶(hù)通常也不能對(duì)其中的軟件進(jìn)行修改,必須有一套專(zhuān)門(mén)的開(kāi)發(fā)環(huán)境。該開(kāi)發(fā)環(huán)境包括專(zhuān)門(mén)的開(kāi)發(fā)工具(包括設(shè)計(jì)、編譯、調(diào)試、測(cè)試等工具),采用交叉開(kāi)發(fā)的方式進(jìn)行,交叉開(kāi)發(fā)環(huán)境如圖所示。2023/1/1145嵌入式系統(tǒng)的發(fā)展歷史從單片機(jī)的出現(xiàn)到今天各種嵌入式微處理器、微控制器的廣泛應(yīng)用,嵌入式系統(tǒng)的應(yīng)用可以追溯到20世紀(jì)60年代中期,例如阿波羅飛船的導(dǎo)航控制系統(tǒng)AGC(ApolloGuidanceComputer)。嵌入式系統(tǒng)的發(fā)展歷程,大致經(jīng)歷了以下4個(gè)階段。(1)無(wú)操作系統(tǒng)階段(2)簡(jiǎn)單操作系統(tǒng)階段(3)實(shí)時(shí)操作系統(tǒng)階段(4)面向Internet階段2023/1/1146無(wú)操作系統(tǒng)階段單片機(jī)是最早應(yīng)用的嵌入式系統(tǒng),單片機(jī)作為各類(lèi)工業(yè)控制和飛機(jī)、導(dǎo)彈等武器裝備中的微控制器,用來(lái)執(zhí)行一些單線(xiàn)程的程序,完成監(jiān)測(cè)、伺服和設(shè)備指示等多種功能,一般沒(méi)有操作系統(tǒng)的支持,程序設(shè)計(jì)采用匯編語(yǔ)言。由單片機(jī)構(gòu)成的這種嵌入式系統(tǒng)使用簡(jiǎn)便、價(jià)格低廉,在工業(yè)控制領(lǐng)域中得到了非常廣泛的應(yīng)用。返回2023/1/1147簡(jiǎn)單操作系統(tǒng)階段20世紀(jì)80年代,出現(xiàn)了大量具有高可靠性、低功耗的嵌入式CPU(如PowerPC等),芯片上集成有微處理器、I/O接口、串行接口及RAM、ROM等部件,面向I/O設(shè)計(jì)的微控制器在嵌入式系統(tǒng)設(shè)計(jì)應(yīng)用。一些簡(jiǎn)單的嵌入式操作系統(tǒng)開(kāi)始出現(xiàn)并得到迅速發(fā)展,程序設(shè)計(jì)人員也開(kāi)始基于一些簡(jiǎn)單的“操作系統(tǒng)”開(kāi)發(fā)嵌入式應(yīng)用軟件。此時(shí)的嵌入式操作系統(tǒng)雖然還比較簡(jiǎn)單,但已經(jīng)初步具有了一定的兼容性和擴(kuò)展性,內(nèi)核精巧且效率高,大大縮短了開(kāi)發(fā)周期,提高了開(kāi)發(fā)效率。返回2023/1/1148實(shí)時(shí)操作系統(tǒng)階段20世紀(jì)90年代,面對(duì)分布控制、柔性制造、數(shù)字化通信和信息家電等巨大市場(chǎng)的需求,嵌入式系統(tǒng)飛速發(fā)展。隨著硬件實(shí)時(shí)性要求的提高,嵌入式系統(tǒng)的軟件規(guī)模也不斷擴(kuò)大,實(shí)時(shí)多任務(wù)操作系統(tǒng)(Real-timeOperationSystem,RTOS)逐漸形成,系統(tǒng)能夠運(yùn)行在各種不同類(lèi)型的微處理器上,具備了文件和目錄管理、設(shè)備管理、多任務(wù)、網(wǎng)絡(luò)、圖形用戶(hù)界面(GraphicUserInterface,GUI)等功能,并提供了大量的應(yīng)用程序接口(ApplicationProgrammingInterface,API),從而使應(yīng)用軟件的開(kāi)發(fā)變得更加簡(jiǎn)單。返回2023/1/1149面向Internet階段進(jìn)入21世紀(jì),Internet技術(shù)與信息家電、工業(yè)控制技術(shù)等的結(jié)合日益緊密,嵌入式技術(shù)與Internet技術(shù)的結(jié)合正在推動(dòng)著嵌入式系統(tǒng)的飛速發(fā)展。2023/1/11補(bǔ)充內(nèi)容:相關(guān)基本知識(shí)馮-諾依曼體系結(jié)構(gòu)與哈佛體系結(jié)構(gòu)馮-諾依曼體系結(jié)構(gòu)特點(diǎn):數(shù)據(jù)和指令都存儲(chǔ)在同一存儲(chǔ)器中。通用PC,ARM7。2023/1/11哈佛體系結(jié)構(gòu)特點(diǎn):數(shù)據(jù)存儲(chǔ)器和程序都存儲(chǔ)分開(kāi);數(shù)據(jù)存儲(chǔ)器的帶寬較寬;DSP、ARM9哈佛體系結(jié)構(gòu)2023/1/11CISC&RISCCISC(復(fù)雜指令集)具有大量的指令和尋址方式大多數(shù)程序只使用少量的指令就可以運(yùn)行。RISC(精簡(jiǎn)指令集)指令長(zhǎng)度固定,指令類(lèi)型很少數(shù)據(jù)處理指令只訪(fǎng)問(wèn)寄存器,與訪(fǎng)問(wèn)存儲(chǔ)器的指令是分開(kāi)的使CPU硬件結(jié)構(gòu)設(shè)計(jì)更為簡(jiǎn)單,縮短了開(kāi)發(fā)周期,提高了性能。2023/1/11流水線(xiàn)技術(shù)幾個(gè)指令可以并行執(zhí)行提高了CPU的運(yùn)行效率流水線(xiàn)技術(shù)中的“寫(xiě)后讀”、“延遲轉(zhuǎn)移”2023/1/11超標(biāo)量執(zhí)行采用多條流水線(xiàn)結(jié)構(gòu)2023/1/11CACHECache的內(nèi)容是部分主存儲(chǔ)器內(nèi)容的拷貝;CPU對(duì)高速緩存(Cache)的讀寫(xiě)速度比對(duì)內(nèi)存讀寫(xiě)的速度快得多;2023/1/1156課程回顧嵌入式系統(tǒng)定義嵌入式系統(tǒng)組成嵌入式微處理器的分類(lèi)嵌入式系統(tǒng)的應(yīng)用2023/1/1157謝謝!CHAPTER

2ARM體系結(jié)構(gòu)2023/1/1159內(nèi)容提要嵌入式系統(tǒng)硬件基礎(chǔ)ARM概述ARM微處理器結(jié)構(gòu)ARM運(yùn)行模式與寄存器ARM的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)2023/1/1160嵌入式系統(tǒng)硬件基礎(chǔ)嵌入式系統(tǒng)的硬件通常由嵌入式處理器和嵌入式外圍設(shè)備構(gòu)成。嵌入式處理器可分為:嵌入式微控制器MCU

嵌入式微處理器MPU

嵌入式DSP

嵌入式SOC2023/1/1161嵌入式系統(tǒng)硬件基礎(chǔ)RISC和CISC馮·諾依曼體系結(jié)構(gòu)和哈佛體系結(jié)構(gòu)流水線(xiàn)嵌入式微處理器體系結(jié)構(gòu)嵌入式外圍設(shè)備2023/1/1162微處理器架構(gòu)體系CISC:復(fù)雜指令集(ComplexInstructionSetComputer)具有大量的指令和尋址方式,指令長(zhǎng)度可變8/2原則:80%的程序只使用20%的指令大多數(shù)程序只使用少量的指令就能夠運(yùn)行。RISC:精簡(jiǎn)指令集(ReducedInstructionSetComputer)只包含最有用的指令,指令長(zhǎng)度固定確保數(shù)據(jù)通道快速執(zhí)行每一條指令使CPU硬件結(jié)構(gòu)設(shè)計(jì)變得更為簡(jiǎn)單2023/1/1163CISC的背景和特點(diǎn)背景:存儲(chǔ)資源緊缺,強(qiáng)調(diào)編譯優(yōu)化增強(qiáng)指令功能,設(shè)置一些功能復(fù)雜的指令,把一些原來(lái)由軟件實(shí)現(xiàn)的、常用的功能改用硬件的(微程序)指令系統(tǒng)來(lái)實(shí)現(xiàn)為節(jié)省存儲(chǔ)空間,強(qiáng)調(diào)高代碼密度,指令格式不固定,指令可長(zhǎng)可短,操作數(shù)可多可少尋址方式復(fù)雜多樣,操作數(shù)可來(lái)自寄存器,也可來(lái)自存儲(chǔ)器采用微程序控制,執(zhí)行每條指令均需完成一個(gè)微指令序列CPI>5,指令越復(fù)雜,CPI越大。2023/1/1164CISC的主要缺點(diǎn)指令使用頻度不均衡。高頻度使用的指令占據(jù)了絕大部分的執(zhí)行時(shí)間,擴(kuò)充的復(fù)雜指令往往是低頻度指令。大量復(fù)雜指令的控制邏輯不規(guī)整,不適于VLSI工藝VLSI的出現(xiàn),使單芯片處理機(jī)希望采用規(guī)整的硬聯(lián)邏輯實(shí)現(xiàn),而不希望用微程序,因?yàn)槲⒊绦虻氖褂梅炊萍s了速度提高。(微碼的存控速度比CPU慢5-10倍)。軟硬功能分配復(fù)雜指令增加硬件的復(fù)雜度,使指令執(zhí)行周期大大加長(zhǎng),直接訪(fǎng)存次數(shù)增多,數(shù)據(jù)重復(fù)利用率低。不利于先進(jìn)指令級(jí)并行技術(shù)的采用流水線(xiàn)技術(shù)2023/1/1165CISC與RISC的對(duì)比2023/1/1166RISC和CISC的發(fā)展盡管RISC架構(gòu)有不少優(yōu)點(diǎn),但決不能認(rèn)為RISC架構(gòu)就可以取代CISC架構(gòu),事實(shí)上,RISC和CISC各有優(yōu)勢(shì),而且界限并不那么明顯?,F(xiàn)代的CPU往往采用CISC的外圍,內(nèi)部加入了RISC的特性,如超長(zhǎng)指令集(VLSW)CPU就是融合了RISC和CISC的優(yōu)勢(shì),成為未來(lái)的CPU發(fā)展方向之一。2023/1/1167馮·諾依曼體系結(jié)構(gòu)2023/1/1168哈佛體系結(jié)構(gòu)2023/1/1169流水線(xiàn)(Pipeline)技術(shù)基本思想:將一個(gè)重復(fù)的時(shí)序分解成若干個(gè)子過(guò)程,而每一個(gè)子過(guò)程都可以有效地在其專(zhuān)有功能段上與其他子過(guò)程同時(shí)執(zhí)行。提高了CPU的運(yùn)行效率內(nèi)部信息流要求通暢流動(dòng)2023/1/1170ARM7TDMI指令流水線(xiàn)該例中用6個(gè)時(shí)鐘周期執(zhí)行了6條指令所有的操作都在寄存器中(單周期執(zhí)行)指令周期數(shù)(CPI)=12023/1/1171LDR流水線(xiàn)2023/1/1172嵌入式外圍設(shè)備嵌入式系統(tǒng)外圍設(shè)備是指在一個(gè)嵌入式硬件系統(tǒng)中,除了核心控制部件以外的完成存儲(chǔ)、通信、保護(hù)、調(diào)試和顯示等輔助功能的其他部件。1、存儲(chǔ)器類(lèi)型靜態(tài)易失型存儲(chǔ)(RAM、SRAM)動(dòng)態(tài)存儲(chǔ)器(DRAM、SDRAM)非易失型存儲(chǔ)器(ROM、EPROM、E2PROM、Flash)2、接口類(lèi)型

RS232、IRDA、SPI、I2C、USB、Ethernet等3、顯示類(lèi)型:

CRTLCD

觸摸屏2023/1/1173內(nèi)容提要嵌入式系統(tǒng)硬件基礎(chǔ)ARM概述ARM微處理器結(jié)構(gòu)ARM運(yùn)行模式與寄存器ARM的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)2023/1/1174ARM微處理器ARM公司簡(jiǎn)介成立于1990年11月前身為Acorn計(jì)算機(jī)公司AdvanceRISCMachine(ARM)主要設(shè)計(jì)ARM系列RISC處理器內(nèi)核授權(quán)ARM內(nèi)核給生產(chǎn)和銷(xiāo)售半導(dǎo)體的合作伙伴ARM公司不生產(chǎn)芯片IP(IntelligenceProperty,知識(shí)產(chǎn)權(quán))另外也提供基于ARM架構(gòu)的開(kāi)發(fā)設(shè)計(jì)技術(shù)軟件工具,評(píng)估板,調(diào)試工具,應(yīng)用軟件,總線(xiàn)架構(gòu),外圍設(shè)備單元,等等2023/1/1175ARM公司England:Cambridge,Maidenhead,Sheffield,BlackburnGermany:Munich France:Paris,SophiaAntipolisKorea:SeoulUS:Seattle,LosGatos,WalnutCreek,Austin,Boston,SanDiegoChina:TaiwanandShanghaiJapan:Shin-Yokohama(Tokyo)800+雇員全球2023/1/1176ARM公司合作伙伴2023/1/1177ARM微處理器的應(yīng)用領(lǐng)域ARM微處理器的應(yīng)用領(lǐng)域工業(yè)控制領(lǐng)域無(wú)線(xiàn)通訊領(lǐng)域網(wǎng)絡(luò)應(yīng)用消費(fèi)類(lèi)電子產(chǎn)品成像和安全產(chǎn)品到目前為止,基于ARM技術(shù)的微處理器應(yīng)用約占據(jù)了32位嵌入式微處理器75%以上的市場(chǎng)份額。全球80%的GSM/3G手機(jī)、99%的CDMA手機(jī)以及絕大多數(shù)PDA產(chǎn)品均采用ARM體系的嵌入式處理器,“掌上計(jì)算”相關(guān)的所有領(lǐng)域皆為其所主宰。ARM技術(shù)正在逐步滲入到我們生活的各個(gè)方面。2023/1/1178ARM產(chǎn)品LexmarkZ52ColorJetprinterSamsungML5100AJVC"Pixstar"GC-X1HPJornado820PsionRevoPlusHPCapShareSonyMZ-R90MiniDiscNokia8810NokiaMediamasterNintendo

Gameboy

AdvanceEricssonR380AlbaBushInternetTV3Com10/100PCINICIomegaHipZipDiamondMultimediaRio6002023/1/1179內(nèi)容提要嵌入式系統(tǒng)硬件基礎(chǔ)ARM概述ARM微處理器結(jié)構(gòu)ARM運(yùn)行模式與寄存器ARM的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)2023/1/1180ARM體系結(jié)構(gòu)一個(gè)典型的ARM體系結(jié)構(gòu)方框圖如右圖所示,包含有32位ALU、31個(gè)32位通用寄存器及6個(gè)狀態(tài)寄存器、32×8位乘法器32×32位桶形移位寄存器、指令譯碼及控制邏輯、指令流水線(xiàn)和數(shù)據(jù)/地址寄存器等。2023/1/1181ARM處理器核簡(jiǎn)介ARM公司開(kāi)發(fā)了很多系列的ARM處理器核,目前最新的系列已經(jīng)是ARM11了,而ARM6核以及更早的系列已經(jīng)很罕見(jiàn)了。目前應(yīng)用比較廣泛的系列是:2023/1/1182ARM處理器的分類(lèi)2023/1/1183ARM的發(fā)展2023/1/1184ARM家族2023/1/1185ARM7系列ARM7系列是為低功耗的32位RISC處理器,最適合用于對(duì)價(jià)位和功耗要求較高的消費(fèi)類(lèi)應(yīng)用。ARM7系列有如下特點(diǎn):具有嵌入式ICE-RT(實(shí)時(shí)在線(xiàn)仿真)邏輯,調(diào)試開(kāi)發(fā)方便;極低的功耗,適合對(duì)功耗要求較高的應(yīng)用,如便攜式產(chǎn)品;能夠提供0.9MIPS/MHz的三級(jí)流水線(xiàn)結(jié)構(gòu);代碼密度高,并兼容16位的Thumb指令集;對(duì)操作系統(tǒng)的支持廣泛,如WindowsCE、Linux、PalmOS等;指令系統(tǒng)與ARM9系列、ARM9E系列和ARM10E系列兼容,便于用戶(hù)的產(chǎn)品升級(jí)換代;主頻最高可達(dá)130M,高速的運(yùn)算處理能力能勝任絕大多數(shù)的復(fù)雜應(yīng)用。2023/1/1186ARM7系列主要應(yīng)用領(lǐng)域:工業(yè)控制、Internet設(shè)備、網(wǎng)絡(luò)和調(diào)制解調(diào)器設(shè)備、移動(dòng)電話(huà)等多種多媒體和嵌入式應(yīng)用。ARM7系列微處理器包括如下幾種類(lèi)型的核:

ARM7TDMI、ARM7TDMI-S、ARM720T、ARM7EJ。其中,ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器,屬低端ARM處理器核。TDMI的基本含義為:T:支持16為壓縮指令集Thumb;D:支持片上Debug;M:內(nèi)嵌硬件乘法器(Multiplier)I:嵌入式ICE,支持片上斷點(diǎn)和調(diào)試點(diǎn);2023/1/1187ARM7處理核特點(diǎn)3段指令流水:取指、譯碼和執(zhí)行。程序計(jì)數(shù)器(PC)指向取指的指令而不是正在執(zhí)行的指令,這一點(diǎn)很重要,因?yàn)檎趫?zhí)行的指令使用的程序計(jì)數(shù)器值總是當(dāng)前地址前2條指令的地址。存儲(chǔ)器訪(fǎng)問(wèn):使用單一32位數(shù)據(jù)線(xiàn)傳送指令和數(shù)據(jù)。只有加載、存儲(chǔ)和交換指令可以訪(fǎng)問(wèn)存儲(chǔ)器中數(shù)據(jù)。數(shù)據(jù)可以是:8位(字節(jié))、16位(半字)、32位(字)。字必須是4字節(jié)邊界對(duì)準(zhǔn),半字必須是2字節(jié)邊界對(duì)準(zhǔn)。嵌入式ICE-RT邏輯:提供了集成的在片調(diào)試支持2023/1/1188指令流水線(xiàn)為增加處理器指令流的速度,ARM7系列使用3級(jí)流水線(xiàn).–允許多個(gè)操作同時(shí)處理,比逐條指令執(zhí)行要快。PC指向正被取指的指令,而非正在執(zhí)行的指令2023/1/1189ARM9微處理器ARM9系列微處理器在高性能和低功耗特性方面提供最佳的表現(xiàn)。具有以下特點(diǎn):5級(jí)整數(shù)流水線(xiàn),指令執(zhí)行效率更高。提供1.1MIPS/MHz的哈佛結(jié)構(gòu)。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線(xiàn)接口。全性能的MMU,支持WindowsCE、Linux、PalmOS等多種主流嵌入式操作系統(tǒng)。MPU支持實(shí)時(shí)操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的指令和數(shù)據(jù)處理能力。2023/1/1190ARM9微處理器ARM9系列微處理器主要應(yīng)用于無(wú)線(xiàn)設(shè)備、儀器儀表、安全系統(tǒng)、機(jī)頂盒、高端打印機(jī)、數(shù)字照相機(jī)和數(shù)字?jǐn)z像機(jī)等。ARM9系列微處理器包含ARM920TARM922TARM940T2023/1/1191ARM9改進(jìn)Harvard架構(gòu)

–增加了可用的存儲(chǔ)器寬度指令存儲(chǔ)器接口數(shù)據(jù)存儲(chǔ)器接口

–可以實(shí)現(xiàn)對(duì)指令和數(shù)據(jù)存儲(chǔ)器的同時(shí)訪(fǎng)問(wèn)5級(jí)流水線(xiàn) 實(shí)現(xiàn)了以下改進(jìn):改進(jìn)CPI到~1.5提高了最大時(shí)鐘頻率2023/1/1192ARM9E微處理器ARM9E系列微處理器的主要特點(diǎn)如下:支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。5級(jí)整數(shù)流水線(xiàn),指令執(zhí)行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線(xiàn)接口。支持VFP9浮點(diǎn)處理協(xié)處理器。全性能的MMU,支持眾多主流嵌入式操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的處理能力。主頻最高可達(dá)300M。2023/1/1193ARM9E微處理器ARM9E系列微處理器主要應(yīng)用于下一代無(wú)線(xiàn)設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、存儲(chǔ)設(shè)備和網(wǎng)絡(luò)設(shè)備等領(lǐng)域。ARM9E系列微處理器包含ARM926EJ-SARM946E-SARM966E-S2023/1/1194ARM10E微處理器ARM10E系列微處理器的主要特點(diǎn)如下:支持DSP指令集,適合于需要高速數(shù)字信號(hào)處理的場(chǎng)合。6級(jí)整數(shù)流水線(xiàn),指令執(zhí)行效率更高。支持32位ARM指令集和16位Thumb指令集。支持32位的高速AMBA總線(xiàn)接口。支持VFP10浮點(diǎn)處理協(xié)處理器。全性能的MMU,支持眾多主流嵌入式操作系統(tǒng)。支持?jǐn)?shù)據(jù)Cache和指令Cache,具有更高的處理能力主頻最高可達(dá)400M。內(nèi)嵌并行讀/寫(xiě)操作部件。與同等ARM9器件相比,同樣時(shí)鐘頻率下,性能提高近50%2023/1/1195ARM9vsARM10與同等ARM9器件相比,同樣時(shí)鐘頻率下,性能提高近50%2023/1/1196ARM10E微處理器ARM10E系列微處理器主要應(yīng)用于下一代無(wú)線(xiàn)設(shè)備、數(shù)字消費(fèi)品、成像設(shè)備、工業(yè)控制、通信和信息系統(tǒng)等領(lǐng)域。ARM10E系列微處理器包含ARM1020EARM1022EARM1026EJ-S2023/1/1197SecurCore微處理器SecurCore系列微處理器除了具有ARM體系結(jié)構(gòu)各種主要特點(diǎn)外,還在系統(tǒng)安全方面具有如下的特點(diǎn):帶有靈活的保護(hù)單元,確保操作系統(tǒng)和應(yīng)用數(shù)據(jù)的安全。采用軟內(nèi)核技術(shù),防止外部對(duì)其進(jìn)行掃描探測(cè)??杉捎脩?hù)自己的安全特性和其他協(xié)處理器。2023/1/1198SecurCore微處理器SecurCore系列微處理器主要應(yīng)用于一些對(duì)安全性要求較高的應(yīng)用產(chǎn)品及應(yīng)用系統(tǒng),如電子商務(wù)、電子政務(wù)、電子銀行業(yè)務(wù)、網(wǎng)絡(luò)和認(rèn)證系統(tǒng)等領(lǐng)域。SecurCore系列微處理器包含SecurCoreSC100SecurCoreSC110SecurCoreSC200SecurCoreSC2102023/1/1199StrongARM處理器IntelStrongARM微處理器是采用ARM體系結(jié)構(gòu)高度集成的32位RISC微處理器。它融合了Intel公司的設(shè)計(jì)和處理技術(shù)以及ARM體系結(jié)構(gòu)的電源效率,采用在軟件上兼容ARMv4體系結(jié)構(gòu)、同時(shí)采用具有Intel技術(shù)優(yōu)點(diǎn)的體系結(jié)構(gòu)。IntelStrongARM微處理器是便攜式通訊產(chǎn)品和消費(fèi)類(lèi)電子產(chǎn)品的理想選擇,已成功應(yīng)用于多家公司的掌上電腦系列產(chǎn)品。典型產(chǎn)品如SA110、SA-1100等處理器芯片。2023/1/11100Xscale微處理器Xscale處理器是基于ARMv5TE體系結(jié)構(gòu)的解決方案,是一款全性能、高性?xún)r(jià)比、低功耗的處理器。它支持16位的Thumb指令和DSP指令集,已使用在數(shù)字移動(dòng)電話(huà)、個(gè)人數(shù)字助理和網(wǎng)絡(luò)產(chǎn)品等場(chǎng)合。Xscale處理器是Intel目前主要推廣的一款A(yù)RM微處理器。Intel采用XScale架構(gòu)的嵌入式處理器典型產(chǎn)品有PXA25x、PXA26x和PXA27x系列。2023/1/11101ARM11微處理器ARM11微處理器于2002年10月發(fā)布流水線(xiàn)長(zhǎng)度擴(kuò)展到8階采用ARMv6指令集架構(gòu)主頻最高可達(dá)1GHz智能電源管理技術(shù),低功耗2023/1/11102性能參數(shù)對(duì)比2023/1/11103ARM系列產(chǎn)品2023/1/11104ARM系列產(chǎn)品2023/1/11105IntelARM2023/1/11106最快的嵌入式處理器ARMCortexA8ApplicationProcessor最快的處理器提供超過(guò)2000DMIPS的性能運(yùn)行于1GHz頻率(90nmor65nm制造工藝)功耗小于300mW2023/1/11107Cortex-M3ARMCortex-M3微控制器內(nèi)核,專(zhuān)門(mén)針對(duì)MCU應(yīng)用領(lǐng)域而設(shè)計(jì),突出低成本、低功耗和高效率。ARMCortexArchitectureThumb-2ISA3StagePipeline1.22DMIPS/MHz–30%overARM7TDMI33Kgates–30%smallerthanARM7TDMILuminaryMicro的Stellaris系列MCU產(chǎn)品售價(jià)僅1美元2023/1/11108ARM微處理器的特點(diǎn)采用RISC架構(gòu)的ARM微處理器一般具有如下特點(diǎn):體積小、低功耗、低成本、高性能;支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;大量使用寄存器,指令執(zhí)行速度更快;大多數(shù)數(shù)據(jù)操作都在寄存器中完成;尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;指令長(zhǎng)度固定2023/1/11109嵌入式處理器的選擇選擇處理器時(shí)主要考慮的因素有:市場(chǎng)供貨情況嵌入式處理器內(nèi)核選擇處理器的處理速度片內(nèi)存儲(chǔ)器的容量片內(nèi)外設(shè)的選擇考慮膠合邏輯問(wèn)題處理器的功耗處理器的軟件支持工具處理器是否內(nèi)置調(diào)試工具處理器供應(yīng)商是否提供評(píng)估板2023/1/11110內(nèi)容提要嵌入式系統(tǒng)硬件基礎(chǔ)ARM概述ARM微處理器結(jié)構(gòu)ARM運(yùn)行模式與寄存器ARM的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)2023/1/11111ARM支持的數(shù)據(jù)類(lèi)型ARM處理器支持下列數(shù)據(jù)類(lèi)型:字節(jié)8位半字16位(必須分配為占用兩個(gè)字節(jié))字32位(必須分配為占用4各字節(jié))V4版本之后的ARM結(jié)構(gòu)(ARM7)都支持這3種結(jié)構(gòu)),而以前的版本只支持字節(jié)和字;當(dāng)數(shù)據(jù)類(lèi)型定義為無(wú)符號(hào)型時(shí),N位數(shù)據(jù)值使用正常的二進(jìn)制格式表示范圍為0~2N-1的非負(fù)整數(shù);當(dāng)數(shù)據(jù)類(lèi)型定義為有符號(hào)型時(shí),N位數(shù)據(jù)值使用2的補(bǔ)碼格式表示范圍為-2N-1~+2N-1-1的整數(shù);所有數(shù)據(jù)操作,例如ADD,都以字為單位;裝載和保存指令可以對(duì)字節(jié)、半字和字進(jìn)行操作,當(dāng)裝載字節(jié)或半字時(shí)自動(dòng)實(shí)現(xiàn)零擴(kuò)展或符號(hào)擴(kuò)展;ARM指令的長(zhǎng)度剛好是1個(gè)字(分配為占用4個(gè)字節(jié)),Thumb指令的長(zhǎng)度剛好是半字(占用2個(gè)字節(jié))。2023/1/11112ARM處理器狀態(tài)ARM7TDMI處理器內(nèi)核使用V4T版本的ARM結(jié)構(gòu),該結(jié)構(gòu)包含32位ARM指令集和16位Thumb指令集。因此ARM7TDMI處理器有兩種操作狀態(tài):ARM狀態(tài):32位,這種狀態(tài)下執(zhí)行的是字方式的ARM指令;Thumb狀態(tài):16位,這種狀態(tài)下執(zhí)行半字方式的ARM指令。注意:兩個(gè)狀態(tài)之間的切換并不影響處理器模式或寄存器內(nèi)容。2023/1/11113處理器狀態(tài)切換使用BX指令將ARM7TDMI內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換,如下程序所示。2023/1/11114ARM處理器運(yùn)行模式ARM處理器支持7種不同的運(yùn)行模式:2023/1/11115特權(quán)模式2023/1/11116異常模式2023/1/11117用戶(hù)和系統(tǒng)模式2023/1/11118ARM微處理器的寄存器結(jié)構(gòu)ARM處理器共有37個(gè)寄存器,被分成若干個(gè)組(bank),包括:31個(gè)通用寄存器,包括程序計(jì)數(shù)器(PC指針),均為32位寄存器;6個(gè)狀態(tài)寄存器,用以標(biāo)識(shí)CPU工作狀態(tài)及程序運(yùn)行狀態(tài),均為32位。 目前只使用了其中的一部分2023/1/11119ARM狀態(tài)各模式下的寄存器2023/1/11120ARM寄存器2023/1/11121ARM寄存器2023/1/11122ARM寄存器2023/1/11123ARM寄存器2023/1/11124ARM寄存器2023/1/11125ARM寄存器2023/1/11126ARM寄存器2023/1/11127ARM寄存器2023/1/11128ARM寄存器R14(LR)寄存器與子程序調(diào)用操作流程1.程序A執(zhí)行過(guò)程中調(diào)用程序B;2.程序跳轉(zhuǎn)至標(biāo)號(hào)Lable,執(zhí)行程序B。同時(shí)硬件將“BLLable”指令的下一條指令所在地址存入R14(LR);3.程序B執(zhí)行最后,將R14寄存器的內(nèi)容放入PC,返回程序A;2023/1/11129ARM寄存器R14寄存器與異常發(fā)生異常發(fā)生時(shí),程序要跳轉(zhuǎn)至異常服務(wù)程序,對(duì)返回地址的處理與子程序調(diào)用類(lèi)似,都是由硬件完成的。區(qū)別在于有些異常有一個(gè)小常量的偏移。注意:當(dāng)發(fā)生異常嵌套時(shí),這些異常之間可能會(huì)發(fā)生沖突。例如:如果用戶(hù)在用戶(hù)模式下執(zhí)行程序時(shí)發(fā)生了IRQ中斷,用戶(hù)模式寄存器不會(huì)被破壞。但是如果允許在IRQ模式下的中斷處理程序重新使能IRQ中斷,并且發(fā)生了嵌套的IRQ中斷時(shí),外部中斷處理程序保存在R14_irq中的任何值都將被嵌套中斷的返回地址所覆蓋。2023/1/11130ARM寄存器2023/1/11131ARM寄存器2023/1/11132程序計(jì)數(shù)器R15(PC)2023/1/11133ARM寄存器讀R15的限制正常操作時(shí),從R15讀取的值是處理器正在取指的地址,即當(dāng)前正在執(zhí)行指令的地址加上8個(gè)字節(jié)(兩條ARM指令的長(zhǎng)度)。由于ARM指令總是以字為單位,所以R15寄存器的最低兩位總是為0。2023/1/11134ARM寄存器當(dāng)使用STR或STM指令保存R15時(shí),會(huì)有一個(gè)例外。這些指令可能將當(dāng)前指令地址加8字節(jié)或加12字節(jié)保存(將來(lái)可能還有其它數(shù)字)。偏移量是8還是12取決于具體的ARM芯片,但是對(duì)于一個(gè)確定的芯片,這個(gè)值是一個(gè)常量。所以最好避免使用STR和STM指令來(lái)保存R15,如果很難做到,那么應(yīng)當(dāng)在程序中計(jì)算出該芯片的偏移量。2023/1/11135ARM寄存器寫(xiě)R15的限制正常操作時(shí),寫(xiě)入R15的值被當(dāng)作一個(gè)指令地址,程序從這個(gè)地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行一次無(wú)條件跳轉(zhuǎn))。由于ARM指令以字節(jié)為邊界,因此寫(xiě)入R15的值最低兩位通常為0b00。具體的規(guī)則取決于內(nèi)核結(jié)構(gòu)的版本:在ARM結(jié)構(gòu)V3版及以下版本中,寫(xiě)入R15的值的最低兩位被忽略,因此跳轉(zhuǎn)地址由指令的實(shí)際目標(biāo)地址(寫(xiě)入R15的值)和0xFFFFFFFC相與得到;在ARM結(jié)構(gòu)V4版及以上版本中,寫(xiě)入R15的值的最低兩位為0,如果不是,結(jié)果將不可預(yù)測(cè)。2023/1/11136程序狀態(tài)寄存器CPSR2023/1/11137程序狀態(tài)寄存器CPSR2023/1/11138程序狀態(tài)寄存器寄存器R16用作程序狀態(tài)寄存器CPSR(CurrentProgramStatusRegister,當(dāng)前程序狀態(tài)寄存器)。在所有處理器模式下都可以訪(fǎng)問(wèn)CPSR。CPSR包含條件碼標(biāo)志、中斷禁止位、當(dāng)前處理器模式以及其他狀態(tài)和控制信息。每種異常模式都有一個(gè)程序狀態(tài)保存寄存器SPSR(SavedProgramStatusRegister)。當(dāng)異常出現(xiàn)SPSR用于保留CPSR的狀態(tài)。(1)條件碼標(biāo)志N、Z、C、V(Negative、Zero、Carry、OVerflow)均為條件碼標(biāo)志位(ConditionCodeFlags),它們的內(nèi)容可被算術(shù)或邏輯運(yùn)算的結(jié)果所改變,并且可以決定某條指令是否被執(zhí)行。CPSR中的條件碼標(biāo)志可由大多數(shù)指令檢測(cè)以決定指令是否執(zhí)行。在ARM狀態(tài)下,絕大多數(shù)的指令都是有條件執(zhí)行的。在Thumb狀態(tài)下,僅有分支指令是有條件執(zhí)行的。通常條件碼標(biāo)志通過(guò)執(zhí)行比較指令(CMN、CMP、TEQ、TST)、一些算術(shù)運(yùn)算、邏輯運(yùn)算和傳送指令進(jìn)行修改。2023/1/11139程序狀態(tài)寄存器(2)控制位程序狀態(tài)寄存器PSR(ProgramStatusRegister)的最低8位I、F、T和M[4:0]用作控制位。當(dāng)異常出現(xiàn)時(shí)改變控制位。處理器在特權(quán)模式下時(shí)也可由軟件改變。中斷禁止位

I:置1,則禁止IRQ中斷;

F:置1,則禁止FIQ中斷。T位

T=0指示ARM執(zhí)行;

T=1指示Thumb執(zhí)行。模式控制位

M4、M3、M2、Ml和M0(M[4:0])是模式位,決定處理器的工作模式。2023/1/11140ARM狀態(tài)和Thumb狀態(tài)之間寄存器的關(guān)系Thumb狀態(tài)寄存器與ARM狀態(tài)寄存器有如下的關(guān)系:Thumb狀態(tài)R0~R7與ARM狀態(tài)R0~R7相同;Thumb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同;Thumb狀態(tài)SP映射到ARM狀態(tài)R13;Thumb狀態(tài)LR映射到ARM狀態(tài)R14;Thumb狀態(tài)PC映射到ARM狀態(tài)PC(R15)。2023/1/111412023/1/11142處理器工作狀態(tài)ARM處理器有32位ARM和16位Thumb兩種工作狀態(tài)。在32位ARM狀態(tài)下執(zhí)行字對(duì)齊的ARM指令,在16位Thumb狀態(tài)下執(zhí)行半字對(duì)齊的Thumb指令。在Thumb狀態(tài)下,程序計(jì)數(shù)器PC(ProgramCounter)使用位[1]選擇另一個(gè)半字。ARM處理器在兩種工作狀態(tài)之間可以切換,切換不影響處理器的模式或寄存器的內(nèi)容。當(dāng)操作數(shù)寄存器的狀態(tài)位(位[0])為1時(shí),執(zhí)行BX指令進(jìn)入Thumb狀態(tài)。如果處理器在Thumb狀態(tài)進(jìn)入異常,則當(dāng)異常處理(IRQ、FIQ、Undef、Abort和SWI)返回時(shí),自動(dòng)轉(zhuǎn)換到Thumb狀態(tài)。(2)當(dāng)操作數(shù)寄存器的狀態(tài)位(位[0])為0時(shí),執(zhí)行BX指令進(jìn)入ARM狀態(tài),處理器進(jìn)行異常處理(IRQ、FIQ、Reset、Undef、Abort和SWI)。在此情況下,把PC放入異常模式鏈接寄存器中。從異常向量地址開(kāi)始執(zhí)行也可以進(jìn)入ARM狀態(tài)2023/1/11143內(nèi)容提要嵌入式系統(tǒng)硬件基礎(chǔ)ARM概述ARM微處理器結(jié)構(gòu)ARM運(yùn)行模式與寄存器ARM的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)2023/1/11144ARM微處理器的異常處理在一個(gè)正常的程序流程執(zhí)行過(guò)程中,由內(nèi)部或外部源產(chǎn)生的一個(gè)事件使正常的程序產(chǎn)生暫時(shí)的停止時(shí),稱(chēng)之為異常。異常是由內(nèi)部或外部源產(chǎn)生并引起處理器處理一個(gè)事件,例如一個(gè)外部的中斷請(qǐng)求。在處理異常之前,當(dāng)前處理器的狀態(tài)必須保留,當(dāng)異常處理完成之后,恢復(fù)保留的當(dāng)前處理器狀態(tài),繼續(xù)執(zhí)行當(dāng)前程序。多個(gè)異常同時(shí)發(fā)生時(shí),處理器將會(huì)按固定的優(yōu)先級(jí)進(jìn)行處理。ARM體系結(jié)構(gòu)中的異常,與單片機(jī)的中斷有相似之處,但異常與中斷的概念并不完全等同,例如外部中斷或試圖執(zhí)行未定義指令都會(huì)引起異常。2023/1/11145ARM體系結(jié)構(gòu)的異常類(lèi)型ARM體系結(jié)構(gòu)支持7種類(lèi)型的異常,異常類(lèi)型、異常處理模式和優(yōu)先級(jí)如表所示。異常出現(xiàn)后,強(qiáng)制從異常類(lèi)型對(duì)應(yīng)的固定存儲(chǔ)器地址開(kāi)始執(zhí)行程序。這些固定的地址稱(chēng)為異常向量(ExceptionVectors)。2023/1/11146異常類(lèi)型的含義復(fù)位當(dāng)處理器的復(fù)位電平有效時(shí),產(chǎn)生復(fù)位異常,ARM處理器立刻停止執(zhí)行當(dāng)前指令。復(fù)位后,ARM處理器在禁止中斷的管理模式下,程序跳轉(zhuǎn)到復(fù)位異常處理程序處執(zhí)行(從地址0x00000000或0xFFFF0000開(kāi)始執(zhí)行指令)。未定義指令異常當(dāng)ARM處理器或協(xié)處理器遇到不能處理的指令時(shí),產(chǎn)生未定義指令異常。當(dāng)ARM處理器執(zhí)行協(xié)處理器指令時(shí),它必須等待任一外部協(xié)處理器應(yīng)答后,才能真正執(zhí)行這條指令。若協(xié)處理器沒(méi)有響應(yīng),就會(huì)出現(xiàn)未定義指令異常。若試圖執(zhí)行未定義的指令,也會(huì)出現(xiàn)未定義指令異常。未定義指令異常可用于在沒(méi)有物理協(xié)處理器(硬件)的系統(tǒng)上,對(duì)協(xié)處理器進(jìn)行軟件仿真,或在軟件仿真時(shí)進(jìn)行指令擴(kuò)展。軟件中斷異常(SoftWareInterrupt,SWI)由執(zhí)行SWI指令產(chǎn)生,可使用該異常機(jī)制實(shí)現(xiàn)系統(tǒng)功能調(diào)用,用于用戶(hù)模式下的程序調(diào)用特權(quán)操作指令,以請(qǐng)求特定的管理(操作系統(tǒng))函數(shù)。2023/1/11147異常類(lèi)型的含義指令預(yù)取中止若處理器預(yù)取指令的地址不存在,或該地址不允許當(dāng)前指令訪(fǎng)問(wèn),存儲(chǔ)器會(huì)向處理器發(fā)出存儲(chǔ)器中止(Abort)信號(hào),但當(dāng)預(yù)取的指令被執(zhí)行時(shí),才會(huì)產(chǎn)生指令預(yù)取中止異常。數(shù)據(jù)中止(數(shù)據(jù)訪(fǎng)問(wèn)存儲(chǔ)器中止)若處理器數(shù)據(jù)訪(fǎng)問(wèn)指令的地址不存在,或該地址不允許當(dāng)前指令訪(fǎng)問(wèn)時(shí),產(chǎn)生數(shù)據(jù)中止異常。存儲(chǔ)器系統(tǒng)發(fā)出存儲(chǔ)器中止信號(hào)。響應(yīng)數(shù)據(jù)訪(fǎng)問(wèn)(加載或存儲(chǔ))激活中止,標(biāo)記數(shù)據(jù)為無(wú)效。在后面的任何指令或異常改變CPU狀態(tài)之前,數(shù)據(jù)中止異常發(fā)生。外部中斷請(qǐng)求(IRQ)異常當(dāng)處理器的外部中斷請(qǐng)求引腳有效,且CPSR中的I位為0時(shí),產(chǎn)生IRQ異常。系統(tǒng)的外設(shè)可通過(guò)該異常請(qǐng)求中斷服務(wù)。IRQ異常的優(yōu)先級(jí)比FIQ異常的低。當(dāng)進(jìn)入FIQ處理時(shí),會(huì)屏蔽掉IRQ異常??焖僦袛嗾?qǐng)求(FIQ)異常 當(dāng)處理器的快速中斷請(qǐng)求引腳有效,且CPSR中的F位為0時(shí),產(chǎn)生FIQ異常。FIQ支持?jǐn)?shù)據(jù)傳送和通道處理,并有足夠的私有寄存器。2023/1/11148異常的響應(yīng)過(guò)程當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作:①將下一條指令的地址存入相應(yīng)連接寄存器LR,以便程序在處理異常返回時(shí)能從正確的位置重新開(kāi)始執(zhí)行。若異常是從ARM狀態(tài)進(jìn)入,LR寄存器中保存的是下一條指令的地址(當(dāng)前PC+4或PC+8,與異常的類(lèi)型有關(guān));若異常是從Thumb狀態(tài)進(jìn)入,則在LR寄存器中保存當(dāng)前PC的偏移量。②將CPSR狀態(tài)傳送到相應(yīng)的SPSR中。③根據(jù)異常類(lèi)型,強(qiáng)制設(shè)置CPSR的運(yùn)行模式位。④強(qiáng)制PC從相關(guān)的異常向量地址取下一條指令執(zhí)行,跳轉(zhuǎn)到相應(yīng)的異常處理程序。還可以設(shè)置中斷禁止位,以禁止中斷發(fā)生。2023/1/11149異常的響應(yīng)過(guò)程如果異常發(fā)生時(shí),處理器處于Thumb狀態(tài),則當(dāng)異常向量地址加載入PC時(shí),處理器自動(dòng)切換到ARM狀態(tài)。異常處理完畢之后,ARM微處理器會(huì)執(zhí)行以下幾步操作從異常返回:①將連接寄存器LR的值減去相應(yīng)的偏移量后送到PC中。②將SPSR內(nèi)容送回CPSR中。③若在進(jìn)入異常處理時(shí)設(shè)置了中斷禁止位,要在此清除??梢哉J(rèn)為應(yīng)用程序總是從復(fù)位異常處理程序開(kāi)始執(zhí)行的,因此復(fù)位異常處理程序不需要返回。2023/1/11150應(yīng)用程序中的異常處理在應(yīng)用程序的設(shè)計(jì)中,異常處理采用的方式是在異常向量表中的特定位置放置一條跳轉(zhuǎn)指令,跳轉(zhuǎn)到異常處理程序。當(dāng)ARM處理器發(fā)生異常時(shí),程序計(jì)數(shù)器PC會(huì)被強(qiáng)制設(shè)置為對(duì)應(yīng)的異常向量,從而跳轉(zhuǎn)到異常處理程序,當(dāng)異常處理完成以后,返回到主程序繼續(xù)執(zhí)行2023/1/11151內(nèi)容提要嵌入式系統(tǒng)硬件基礎(chǔ)ARM概述ARM微處理器結(jié)構(gòu)ARM運(yùn)行模式與寄存器ARM的異常處理ARM的存儲(chǔ)器結(jié)構(gòu)2023/1/11152ARM的存儲(chǔ)器結(jié)構(gòu)

信息的存儲(chǔ)

大多數(shù)計(jì)算機(jī)使用8位(bit)的數(shù)據(jù)塊做為最小的可尋址的存儲(chǔ)器單位,稱(chēng)為一個(gè)字節(jié)。存儲(chǔ)器的每一個(gè)字節(jié)都用一個(gè)唯一的地址(address)來(lái)標(biāo)識(shí)。所有可能地址的集合稱(chēng)為存儲(chǔ)器空間。 對(duì)于軟件而言,它將存儲(chǔ)器看作一個(gè)大的字節(jié)數(shù)組,稱(chēng)為虛擬存儲(chǔ)器。在實(shí)際應(yīng)用中,虛擬存儲(chǔ)器可以劃分成的不同單元,用來(lái)存放程序、指令和數(shù)據(jù)等信息。

微處理器和編譯器使用不同的方式來(lái)編碼數(shù)據(jù),如不同長(zhǎng)度的整數(shù)和浮點(diǎn)數(shù),從而支持多種數(shù)據(jù)格式。以C語(yǔ)言為例,它支持整數(shù)和浮點(diǎn)數(shù)等多種數(shù)據(jù)格式。

2023/1/11153大端和小端存儲(chǔ)法

對(duì)于一個(gè)多字節(jié)類(lèi)型的數(shù)據(jù),在存儲(chǔ)器中有兩種存放方法。一種是低字節(jié)數(shù)據(jù)存放在內(nèi)存低地址處,高字節(jié)數(shù)據(jù)存放在內(nèi)存高地址處,稱(chēng)為小端字節(jié)順序存儲(chǔ)法;另一種是高字節(jié)數(shù)據(jù)存放在低地址處,低字節(jié)數(shù)據(jù)存放在高地址處,稱(chēng)為大端字節(jié)順序存儲(chǔ)法。

2023/1/11154小端數(shù)據(jù)格式2023/1/11155大端數(shù)據(jù)格式2023/1/11156例如,假設(shè)一個(gè)32位字長(zhǎng)的微處理器上定義一個(gè)int類(lèi)型的常量a,其內(nèi)存地址位于0x6000處,其值用十六進(jìn)制表示為0x23456789。如果按小端法存儲(chǔ),則其最低字節(jié)數(shù)據(jù)0x89存放在內(nèi)存低地址0x6000處,最高字節(jié)數(shù)據(jù)0x23存放在內(nèi)存高地址0x6003處如果按大端法存儲(chǔ),則其最高字節(jié)數(shù)據(jù)0x23存放在內(nèi)存的低地址0x6000處,而最低字節(jié)數(shù)據(jù)0x89存放在內(nèi)存的高地址0x6003處。2023/1/11157ARM存儲(chǔ)器結(jié)構(gòu) ARM體系結(jié)構(gòu)允許使用現(xiàn)有的存儲(chǔ)器和I/O器件進(jìn)行各種各樣的存儲(chǔ)器系統(tǒng)設(shè)計(jì)。

1.地址空間

ARM體系結(jié)構(gòu)使用232個(gè)字節(jié)的單一、線(xiàn)性地址空間。將字節(jié)地址做為無(wú)符號(hào)數(shù)看待,范圍為0~232-1。

2.存儲(chǔ)器格式對(duì)于字對(duì)齊的地址A,地址空間規(guī)則要求如下:●地址位于A的字由地址為A、A+1、A+2和A+3的字節(jié)組成;●地址位于A的半字由地址為A和A+1的字節(jié)組成;●地址位于A+2的半字由地址為A+2和A+3的字節(jié)組成;●地址位于A的字由地址為A和A+2的半字組成。2023/1/11158ARM存儲(chǔ)器結(jié)構(gòu)ARM存儲(chǔ)系統(tǒng)可以使用小端存儲(chǔ)或者大端存儲(chǔ)兩種方法(可以通過(guò)硬件的方式設(shè)置端模式),大端存儲(chǔ)和小端存儲(chǔ)格式如圖所示。ARM體系結(jié)構(gòu)通常希望所有的存儲(chǔ)器訪(fǎng)問(wèn)能適當(dāng)?shù)貙?duì)齊。特別是用于字訪(fǎng)問(wèn)的地址通常應(yīng)當(dāng)字對(duì)齊,用于半字訪(fǎng)問(wèn)的地址通常應(yīng)當(dāng)半字對(duì)齊。未按這種方式對(duì)齊的存儲(chǔ)器訪(fǎng)問(wèn)稱(chēng)作非對(duì)齊的存儲(chǔ)器訪(fǎng)問(wèn)。2023/1/11159ARM存儲(chǔ)器結(jié)構(gòu)ARM處理器有的帶有指令Cache和數(shù)據(jù)Cache,但不帶有片內(nèi)RAM和片內(nèi)ROM。系統(tǒng)所需的RAM和ROM(包括Flash)都通過(guò)總線(xiàn)外接。由于系統(tǒng)的地址范圍較大(232=4GB),有的片內(nèi)還帶有存儲(chǔ)器管理單元MMU(MemoryManagementUnit)。ARM架構(gòu)處理器還允許外接PCMCIA。2023/1/11160存儲(chǔ)器映射I/O2023/1/11161存儲(chǔ)器映射I/O2023/1/11162存儲(chǔ)器映射I/OARM的I/O端口都是內(nèi)存映射的方式,即對(duì)I/O端口的訪(fǎng)問(wèn)與內(nèi)存的訪(fǎng)問(wèn)的方式完全一樣。I/O口使用特定的存儲(chǔ)器地址,當(dāng)從這些地址加載(用于輸入)或向這些地址存儲(chǔ)(用于輸出)時(shí),完成I/O功能。加載和存儲(chǔ)也可用于執(zhí)行控制功能,代替或者附加到正常的輸入或輸出功能。?通常將I/O所映射的存儲(chǔ)系統(tǒng)標(biāo)識(shí)為非高速緩存(uncachable)和非緩沖(unbufferable)。2023/1/11163指令的預(yù)取和自修改代碼許多ARM實(shí)現(xiàn)在前一條指令的執(zhí)行尚未完成時(shí)將指令從存儲(chǔ)器中取出。這個(gè)動(dòng)作稱(chēng)為指令的預(yù)取。指令的預(yù)取并不是實(shí)際執(zhí)行指令。芯片的生產(chǎn)廠(chǎng)商可以自由選擇預(yù)取指令的數(shù)目。被預(yù)取的指令可能得不到運(yùn)行,可能的原因是:發(fā)生異常;發(fā)生跳轉(zhuǎn);當(dāng)讀取PC時(shí),得到的指令地址比正在執(zhí)行指令的地址落后兩條指令:對(duì)于ARM指令,得到的地址是它自身地址+8;對(duì)于Thumb指令,得到的地址是它自身地址+4;2023/1/11164謝謝!CHAPTER

3ARM指令系統(tǒng)2023/1/11166內(nèi)容提要ARM處理器尋址方式指令集介紹2023/1/11167ARM指令系統(tǒng)簡(jiǎn)介ARM處理器是基于精簡(jiǎn)指令集計(jì)算機(jī)(RISC)原理設(shè)計(jì)的,指令集和相關(guān)譯碼機(jī)制較為簡(jiǎn)單。帶有T變量的ARM核具有32位ARM指令集和16位Thumb指令集,ARM指令集效率高,但是代碼密度低;而Thumb指令集具有較高的代碼密度,卻仍然保持ARM的大多數(shù)性能上的優(yōu)勢(shì),它是ARM指令集的子集。所有的ARM指令都是可以有條件執(zhí)行的,而Thumb指令僅有一條指令具備條件執(zhí)行功能。ARM程序和Thumb程序可相互調(diào)用,相互之間的狀態(tài)切換開(kāi)銷(xiāo)幾乎為零。2023/1/11168ARM指令系統(tǒng)ARM指令集與Thumb指令集的關(guān)系Thumb指令集具有靈活、小巧的特點(diǎn)ARM指令集支持ARM核所有的特性,具有高效、快速的特點(diǎn)2023/1/11169內(nèi)容提要ARM處理器尋址方式指令集介紹2023/1/11170ARM處理器尋址方式尋址方式分類(lèi)

尋址方式是根據(jù)指令中給出的地址碼字段來(lái)實(shí)現(xiàn)尋找真實(shí)操作數(shù)地址的方式。ARM處理器具有9種基本尋址方式。1.寄存器尋址; 2.立即尋址;3.寄存器移位尋址; 4.寄存器間接尋址;5.基址尋址; 6.多寄存器尋址;7.堆棧尋址; 8.塊拷貝尋址;9.相對(duì)尋址。2023/1/11171

操作數(shù)的值在寄存器中,指令中的地址碼字段指出的是寄存器編號(hào),指令執(zhí)行時(shí)直接取出寄存器值來(lái)操作。寄存器尋址指令舉例如下:MOVR1,R2 ;將R2的值存入R1SUBR0,R1,R2;將R1的值減去R2的值,結(jié)果保存到R0

0xAA0x55R2R1ARM處理器尋址方式尋址方式分類(lèi)——寄存器尋址MOVR1,R20xAA2023/1/11172

立即尋址指令中的操作碼字段后面的地址碼部分即是操作數(shù)本身,也就是說(shuō),數(shù)據(jù)就包含在指令當(dāng)中,取出指令也就取出了可以立即使用的操作數(shù)(這樣的數(shù)稱(chēng)為立即數(shù))。立即尋址指令舉例如下:SUBS R0,R0,#1;R0減1,結(jié)果放入R0,并且影響標(biāo)志位MOV R0,#0xFF000;將立即數(shù)0xFF000裝入R0寄存器

0x55R0MOVR0,#0xFF00程序存儲(chǔ)ARM處理器尋址方式尋址方式分類(lèi)——立即尋址MOVR0,#0xFF000xFF00從代碼中獲得數(shù)據(jù)2023/1/11173

寄存器移位尋址是ARM指令集特有的尋址方式。當(dāng)?shù)?個(gè)操作數(shù)是寄存器移位方式時(shí),第2個(gè)寄存器操作數(shù)在與第1個(gè)操作數(shù)結(jié)合之前,選擇進(jìn)行移位操作。寄存器移位尋址指令舉例如下:MOV R0,R2,LSL#3

;R2的值左移3位,結(jié)果放入R0,即是R0=R2×8ANDS R1,R1,R2,LSLR3

;R2的值左移R3位,然后和R1相“與”,放入R10x55R0R20x01ARM處理器尋址方式尋址方式分類(lèi)——寄存器移位尋址MOVR0,R2,LSL#30x080x08邏輯左移3位2023/1/11174

寄存器間接尋址指令中的地址碼給出的是一個(gè)通用寄存器的編號(hào),所需的操作數(shù)保存在寄存器指定地址的存儲(chǔ)單元中,即寄存器為操作數(shù)的地址指針。寄存器間接尋址指令舉例如下:

LDR R1,[R2] ;將R2指向的存儲(chǔ)單元的數(shù)據(jù)讀出保存在R1中

SWP R1,R1,[R2] ;將寄存器R1的值和R2指定的存儲(chǔ)單元的內(nèi)容交換0x55R0R20x400000000xAA0x40000000ARM處理器尋址方式尋址方式分類(lèi)——寄存器間接尋址LDRR1,[R2]0xAA2023/1/11175

基址尋址就是將基址寄存器的內(nèi)容與指令中給出的偏移量相加,形成操作數(shù)的有效地址?;穼ぶ酚糜谠L(fǎng)問(wèn)基址附近的存儲(chǔ)單元,常用于查表、數(shù)組操作、功能部件寄存器訪(fǎng)問(wèn)等?;穼ぶ分噶钆e例如下:LDR R2,[R3,#0x0C] ;讀取R3+0x0C地址上的存儲(chǔ)單元的內(nèi)容,放入R2STR R1,[R0,#-4]! ;先R0=R0-4,然后把R1的值寄存到保存到R0指定的存儲(chǔ)單元ARM處理器尋址方式尋址方式分類(lèi)——基址尋址0x55R2R30x400000000xAA0x4000000CLDRR2,[R3,#0x0C]0xAA將R3+0x0C作為地址裝載數(shù)據(jù)2023/1/11176

多寄存器尋址一次可傳送幾個(gè)寄存器值,允許一條指令傳送16個(gè)寄存器的任何子集或所有寄存器。多寄存器尋址指令舉例如下:LDMIA R1!,{R2-R7,R12};將R1指向的單元中的數(shù)據(jù)讀出到

;R2~R7、R12中(R1自動(dòng)加1)STMIA R0!,{R2-R7,R12};將寄存器R2~R7、R12的值保

;存到R0指向的存儲(chǔ);單元中

;(R0自動(dòng)加1)0x40000000R1R20x??0x010x400000000x??R3R40x??R60x??0x020x030x040x400000040x400000080x4000000C存儲(chǔ)器ARM處理器尋址方式尋址方式分類(lèi)——多寄存器尋址LDRR1!,{R2-R4,R6}0x010x020x030x040x400000102023/1/11177

堆棧是一個(gè)按特定順序進(jìn)行存取的存儲(chǔ)區(qū),操作順序?yàn)椤昂筮M(jìn)先出”。堆棧尋址是隱含的,它使用一個(gè)專(zhuān)門(mén)的寄存器(堆棧指針)指向一塊存儲(chǔ)區(qū)域(堆棧),指針?biāo)赶虻拇鎯?chǔ)單元即是堆棧的棧頂。存儲(chǔ)器堆??煞譃閮煞N:向上生長(zhǎng):向高地址方向生長(zhǎng),稱(chēng)為遞增堆棧向下生長(zhǎng):向低地址方向生長(zhǎng),稱(chēng)為遞減堆棧ARM處理器尋址方式尋址方式分類(lèi)——堆棧尋址2023/1/11178ARM處理器尋址方式尋址方式分類(lèi)——堆棧尋址棧底棧頂棧區(qū)SP堆棧存儲(chǔ)區(qū)棧頂棧底棧區(qū)SP向下增長(zhǎng)向上增長(zhǎng)0x123456780x12345678堆棧壓棧堆棧壓棧2023/1/11179棧頂SP棧頂SP棧底空堆棧棧底滿(mǎn)堆棧

堆棧指針指向最后壓入的堆棧的有效數(shù)據(jù)項(xiàng),稱(chēng)為滿(mǎn)堆棧;堆棧指針指向下一個(gè)待壓入數(shù)據(jù)的空位置,稱(chēng)為空堆棧。ARM處理器尋址方式尋址方式分類(lèi)——堆棧尋址0x123456780x12345678棧頂SP0x12345678棧頂SP壓棧壓棧2023/1/11180所以可以組合出四種類(lèi)型的堆棧方式:滿(mǎn)遞增:堆棧向上增長(zhǎng),堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最高地址。指令如LDMFA、STMFA等;空遞增:堆棧向上增長(zhǎng),堆棧指針指向堆棧上的第一個(gè)空位置。指令如LDMEA、STMEA等;滿(mǎn)遞減:堆棧向下增長(zhǎng),堆棧指針指向內(nèi)含有效數(shù)據(jù)項(xiàng)的最低地址。指令如LDMFD、STMFD等;空遞減:堆棧向下增長(zhǎng),堆棧指針向堆棧下的第一個(gè)空位置。指令如LDMED、STMED等。ARM處理器尋址方式尋址方式分類(lèi)——堆棧尋址2023/1/11181

多寄存器傳送指令用于將一塊數(shù)據(jù)從存儲(chǔ)器的某一位置拷貝到另一位置。如:STMIA R0!,{R1-R7} ;將R1~R7的數(shù)據(jù)保存到存儲(chǔ)器中。

;存儲(chǔ)指針在保存第一個(gè)值之后增加,

;增長(zhǎng)方向?yàn)橄蛏显鲩L(zhǎng)。STMIB R0!,{R1-R7} ;將R1~R7的數(shù)據(jù)保存到存儲(chǔ)器中。

;存儲(chǔ)指針在保存第一個(gè)值之前增加,

;增長(zhǎng)方向?yàn)橄蛏显鲩L(zhǎng)。ARM處理器尋址方式尋址方式分類(lèi)——塊拷貝尋址2023/1/11182

相對(duì)尋址是基址尋址的一種變通。由程序計(jì)數(shù)器PC提供基準(zhǔn)地址,指令中的地址碼字段作為偏移量,兩者相加后得到的地址即為操作數(shù)的有效地址。相對(duì)尋址指令舉例如下:

BL SUBR1 ;調(diào)用到SUBR1子程序

BEQ LOOP ;條件跳轉(zhuǎn)到LOOP標(biāo)號(hào)處

...LOOP MOV R6,#1 ...SUBR1 ...ARM處理器尋址方式尋址方式分類(lèi)——相對(duì)尋址2023/1/11183內(nèi)容提要ARM處理器尋址方式指令集介紹ARM指令集Thumb指令集2023/1/11184簡(jiǎn)單的ARM程序;文件名:TEST

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論