free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問答首頁 最新問題 熱門問題 等待回答標(biāo)簽廣場(chǎng)
我要提問

電子百科

ARM處理器

ARM處理器

ARM處理器特點(diǎn)

  •   采用RISC架構(gòu)的ARM處理器一般具有如下特點(diǎn):

      1.體積小、低功耗、低成本、高性能。

      2.支持Thumb(16位)/ARM(32位)雙指令集。

      3.大量使用寄存器,指令執(zhí)行速度更快。

      4.大多數(shù)數(shù)據(jù)操作都在寄存器中完成。

      5.尋址方式靈活簡(jiǎn)單,執(zhí)行效率高。

      6.指令長(zhǎng)度固定。

ARM處理器啟動(dòng)方式

  •   選用EP7312處理器,主要是它具有高速ARM720T核心、豐富的外設(shè)接口與啟動(dòng)ROM的設(shè)置。EP7312可配置為外部的ROM啟動(dòng)的外啟動(dòng)方式或從片上ROM啟動(dòng)的內(nèi)啟動(dòng)方式。

      在外啟動(dòng)方式下,ARM從外部程序存儲(chǔ)器(一般是Flash存儲(chǔ)器)取指令執(zhí)行相應(yīng)的應(yīng)用;在內(nèi)啟動(dòng)方式下,ARM運(yùn)行片上啟動(dòng)ROM中固化的一個(gè)128B啟動(dòng)程序,完成器件初始化,配置串口1以9600bps速率接收2048B用戶程序存儲(chǔ)于片內(nèi)SRAM中,然后跳轉(zhuǎn)到片內(nèi)SRAM起始處開始執(zhí)行剛下載的2KB用戶程序,這為進(jìn)一步的調(diào)試、代碼下載、外啟動(dòng)Flash存儲(chǔ)器編程提供途徑,非常適用于嵌入式系統(tǒng)的實(shí)驗(yàn)與開發(fā)。

      EP7312有強(qiáng)大的系統(tǒng)擴(kuò)展能力,表1、表2中所示分別是內(nèi)、外啟動(dòng)方式下的地址空間分配。

      表1 內(nèi)啟動(dòng)方式地址空間分配

    內(nèi)啟動(dòng)方式地址空間分配

      表2 外啟動(dòng)方式地址空間分配

    外啟動(dòng)方式地址空間分配

ARM處理器運(yùn)行模式

  •   ARM處理器支持7種運(yùn)行模式,如表所示。

    ARM處理器運(yùn)行模式

      表 ARM處理器運(yùn)行模式

      說明:ARM處理器的運(yùn)行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。

      大多數(shù)的應(yīng)用程序運(yùn)行在用戶模式下,當(dāng)處理器運(yùn)行在用戶模式下時(shí),某些被保護(hù)的系統(tǒng)資源是不能被訪問的。

      除用戶模式User以外,其余的6種模式稱之為非用戶模式或特權(quán)模式(PrivilegedModes);其中除去用戶模式和系統(tǒng)模式以外的5種模式又稱為異常模式(ExceptionModes),常用于處理中斷或異常,以及需要訪問受保護(hù)的系統(tǒng)資源等情況。

ARM處理器與嵌入式系統(tǒng)

  •   由于各種新型微處理器的出現(xiàn)和應(yīng)用的不斷深化,嵌入式系統(tǒng)在后PC時(shí)代得到了空前的發(fā)展。隨著時(shí)間的推移和技術(shù)的進(jìn)步,在工業(yè)控制和新興的手持式應(yīng)用等領(lǐng)域,用戶體驗(yàn)成為產(chǎn)品成功的關(guān)鍵因素之一,越來越多的產(chǎn)品需要良好的用戶界面、互聯(lián)功能以及較強(qiáng)的數(shù)據(jù)處理能力,這對(duì)嵌入式處理器硬件、軟件、教學(xué)等提出了新的要求。

      1? 嵌入式處理器與硬件

      在處理器方面,目前大量的中、低端嵌入式應(yīng)用,主要使用8/16位單片機(jī)。在國內(nèi),由于歷史的原因,主要是以MCS51核為主的許多不同型號(hào)單片機(jī),主要廠商有Atmel、Philips、Winbond、宏晶等。還有一些近幾年發(fā)展較快的新型單片機(jī),如PIC、AVR、MSP430系列等。這些單片機(jī)各有特點(diǎn),但從目前的發(fā)展角度來看,單片機(jī)針對(duì)特定應(yīng)用領(lǐng)域的個(gè)性化發(fā)展愈發(fā)明顯,典型的例子就是TI公司的MSP430系列16位單片機(jī)、ST公司的STM8L系列8位單片機(jī)和STM32L系列32位超低功耗單片機(jī)。

      在嵌入式中的高端應(yīng)用領(lǐng)域,像工業(yè)控制、POS機(jī)、網(wǎng)絡(luò)設(shè)備、圖像處理、手機(jī)、PDA等,目前主要使用ARM、MIPS、PowerPC、DSP等16~64位處理器,以32位處理器為主。各種類型的處理器都有其一定的應(yīng)用針對(duì)性。例如,DSP對(duì)數(shù)字信號(hào)處理技術(shù)中用到的常用運(yùn)算、算法做了優(yōu)化設(shè)計(jì),主要用于實(shí)時(shí)信號(hào)處理領(lǐng)域,如實(shí)時(shí)音視頻處理、電機(jī)控制等。MIPS處理器性能很好,但功耗較大,適合于有交流電源供電的固定應(yīng)用,如固定的網(wǎng)絡(luò)設(shè)備、機(jī)頂盒等。ARM處理器性能高,功耗低,適合于用電池供電的便攜、手持式設(shè)備。由于近幾年便攜、手持式嵌入式應(yīng)用的高速發(fā)展,ARM處理器的增長(zhǎng)速度和市場(chǎng)占有率也快速提升,成為目前32位應(yīng)用中的主力產(chǎn)品。

      由于嵌入式應(yīng)用系統(tǒng)的廣泛性,嵌入式系統(tǒng)的硬件設(shè)計(jì)涉及的知識(shí)面很廣,從模擬到數(shù)字、低頻到高頻、小信號(hào)到大功率,以及復(fù)雜的時(shí)序邏輯設(shè)計(jì)和PCB設(shè)計(jì),還要考慮軟硬件資源的合理分配,不僅要有廣而扎實(shí)的理論基礎(chǔ),更需要豐富的實(shí)踐經(jīng)驗(yàn)。只有對(duì)大大小小各種應(yīng)用系統(tǒng)反復(fù)實(shí)戰(zhàn)演練,了解新技術(shù)、新器件,使用過多種多樣的處理器和模擬/數(shù)字器件,才能逐步積累,聚沙成塔,對(duì)一個(gè)新的應(yīng)用系統(tǒng)給出快速、合理的硬件方案與設(shè)計(jì)。

      2? ARM處理器的優(yōu)勢(shì)

      對(duì)于如今大量出現(xiàn)的32位嵌入式應(yīng)用,以筆者之見,ARM處理器的優(yōu)勢(shì)主要有以下幾個(gè)方面。

      2.1? 高性能、低功耗、低價(jià)格

      把ARM處理器的性能拿來和一些著名的通用處理器(如Pentium)相比是不合適的,因?yàn)樗麄兏髯葬槍?duì)的應(yīng)用需求是不同的。Pentium處理器采用多條指令流水線的超標(biāo)量結(jié)構(gòu),追求通用應(yīng)用目標(biāo)下的超強(qiáng)性能,功耗大,可以用散熱器加風(fēng)扇散熱。ARM針對(duì)嵌入式應(yīng)用,在滿足性能要求的前提下,力求最低的功率消耗。ARM結(jié)構(gòu)的優(yōu)點(diǎn)是能兼顧到性能、功耗、代碼密度、價(jià)格等幾個(gè)方面,而且做得比較均衡。在性能/功耗比(MIPS/W)方面,ARM處理器具有業(yè)界領(lǐng)先的性能?;贏RM核的芯片價(jià)格也很低,目前ARM CortexM的芯片價(jià)格可低至10元人民幣左右。

      2.2? 豐富的可選擇芯片

      ARM只是一個(gè)核,ARM公司自己不生產(chǎn)芯片,采用授權(quán)方式給半導(dǎo)體生產(chǎn)商。目前,全球幾乎所有的半導(dǎo)體廠家都向ARM公司購買了各種ARM核,配上多種不同的控制器(如LCD控制器、SDRAM控制器、DMA控制器等)和外設(shè)、接口,生產(chǎn)各種基于ARM核的芯片。目前,基于ARM核的各種處理器型號(hào)有好幾百種,在國內(nèi)市場(chǎng)上,常見的有ST、TI、NXP、Atmel、Samsung、OKI、Sharp、Hynix、Crystal等廠家的芯片。用戶可以根據(jù)各自的應(yīng)用需求,從性能、功能等方面考察,在許多具體型號(hào)中選擇最合適的芯片來設(shè)計(jì)自己的應(yīng)用系統(tǒng)。由于ARM核采用向上兼容的指令系統(tǒng),用戶開發(fā)的軟件可以非常方便地移植到更高的ARM平臺(tái)。

      2.3? 廣泛的第三方支持

      以如今的技術(shù),設(shè)計(jì)一個(gè)處理器并非難事,但要使這個(gè)處理器得到大家認(rèn)可,并取得市場(chǎng)成功卻是非常困難的,其中涉及許多技術(shù)與非技術(shù)的因素和環(huán)節(jié),還包括時(shí)機(jī)、運(yùn)氣。因?yàn)楝F(xiàn)在許多產(chǎn)品的開發(fā),不是一個(gè)簡(jiǎn)單的處理器加幾百條指令、語句就可以解決的。要用到32位處理器,一般都要有編譯器、高效的開發(fā)工具(仿真器及調(diào)試環(huán)境)、操作系統(tǒng)、協(xié)議棧等,這些東西都不是一個(gè)芯片生產(chǎn)商可以解決的,而需要許多第三方的支持。這就像一粒種子,需要土壤、空氣、水等環(huán)境才能發(fā)芽、成長(zhǎng)。這也是我們的一些“中國芯”該反思之處。

      ARM通過近20年的培育、發(fā)展,得到了廣泛的第三方合作伙伴支持。目前,除通用編譯器GCC,ARM有自己的高效編譯、調(diào)試環(huán)境(MDK、Keil),全球約有50家以上的實(shí)時(shí)操作系統(tǒng)(RTOS)軟件廠商和30家以上的EDA工具制造商,還有很多高效率的實(shí)時(shí)跟蹤調(diào)試工具的廠商,對(duì)ARM提供了很好的支持。用戶采用ARM處理器開發(fā)產(chǎn)品,既可以獲得廣泛的支持,也便于和同行交流,加快開發(fā)進(jìn)度,縮短產(chǎn)品的上市時(shí)間。

      2.4? 完整的產(chǎn)品線和發(fā)展規(guī)劃

      ARM核根據(jù)不同應(yīng)用需求對(duì)處理器的性能要求,有一個(gè)從ARM7、ARM9到ARM10、ARM11,以及新定義的CortexM/R/A系列完整的產(chǎn)品線。前幾年應(yīng)用較多的主要是基于V4架構(gòu)的ARM7TDMI、ARM720T、ARM920T核的一些處理器芯片,如NXP的LPC2000系列、ST的STR7/9系列、Atmel 的AT91系列和Samsung的S3C系列。近兩年,ARM Cortex系列以更好的性能、更低的價(jià)格得到快速推廣,典型的就是基于CortexM3的STM32系列。

      ARM CortexM/R/A系列分別針對(duì)不同的應(yīng)用領(lǐng)域。M系列主要面向傳統(tǒng)微控制器(MCU/單片機(jī))應(yīng)用,這類應(yīng)用面很廣,要求處理器有豐富的外設(shè),并且各方面比較均衡;R系列強(qiáng)調(diào)實(shí)時(shí)性,主要用于實(shí)時(shí)控制,如汽車引擎;A系列面向高性能、低功耗應(yīng)用系統(tǒng),如智能手機(jī)。選用ARM處理器進(jìn)行開發(fā),技術(shù)積累性較強(qiáng),生命周期長(zhǎng),設(shè)計(jì)重用度高,不易被淘汰。用戶在選擇ARM處理器時(shí),可以針對(duì)應(yīng)用需求,從大量的ARM芯片中選用滿足性能、功能要求的產(chǎn)品,以獲得較好的性價(jià)比。

      3? ARM嵌入式系統(tǒng)的軟件

      由于嵌入式系統(tǒng)的差異性很大,對(duì)不同的應(yīng)用需求,必須選擇不同的軟件設(shè)計(jì)方法、開發(fā)平臺(tái)和系統(tǒng)工具。

      對(duì)于一些不需要復(fù)雜圖形用戶界面、通信協(xié)議和復(fù)雜文件操作(如同時(shí)打開多個(gè)文件)的應(yīng)用,如果選用CortexM3核的處理器就已可以滿足要求,任務(wù)數(shù)不多,任務(wù)之間的關(guān)系也不復(fù)雜,則不一定需要移植復(fù)雜的操作系統(tǒng)。這樣一方面可以降低系統(tǒng)硬件開銷,也可以獲得更好的實(shí)時(shí)性和執(zhí)行速度。不過,這樣的軟件開發(fā)方法需要開發(fā)人員有較好的程序設(shè)計(jì)思想,對(duì)所用器件有深入的了解,并掌握其編程控制方法。若引入一個(gè)簡(jiǎn)單的操作系統(tǒng),如μC/OS,可以簡(jiǎn)化程序結(jié)構(gòu),但開發(fā)者最好熟悉其內(nèi)核結(jié)構(gòu),并有使用經(jīng)驗(yàn),否則可能會(huì)需要更多的系統(tǒng)開發(fā)、調(diào)試時(shí)間。

      如果選擇了帶存儲(chǔ)器管理單元(MMU)的ARM處理器(如ARM920T、CortexA8等),這種應(yīng)用系統(tǒng)根據(jù)應(yīng)用、實(shí)時(shí)性、開發(fā)環(huán)境等因素,移植一個(gè)功能較強(qiáng)的操作系統(tǒng)一般情況下會(huì)比較合適,如Linux、WinCE,甚至新的Android等。這種系統(tǒng)的開發(fā)難度主要是在OS的移植以及硬件驅(qū)動(dòng)程序的開發(fā)上。當(dāng)這二步工作完成后,主要的軟件開發(fā)工作已和在PC機(jī)上開發(fā)沒有多大區(qū)別,可以按照一般的軟件工程方法來進(jìn)行,要注意的只是與ARM硬件平臺(tái)相關(guān)的軟件優(yōu)化問題。

      由于嵌入式系統(tǒng)硬件資源的有限性,嵌入式軟件與其他應(yīng)用軟件的主要區(qū)別,在于嵌入式軟件要有較高的效率,包括執(zhí)行速度和存儲(chǔ)空間,盡管這二者經(jīng)常是相互矛盾的。目前一般要求更多的是速度優(yōu)化。要編寫出高效的ARM程序,需要開發(fā)人員熟悉ARM的體系結(jié)構(gòu),包括內(nèi)核結(jié)構(gòu)、指令系統(tǒng)、Cache與存儲(chǔ)器結(jié)構(gòu)等,還要有好的程序設(shè)計(jì)思想,以及對(duì)一些常用函數(shù)、算法的深刻理解。這個(gè)過程也是ARM系統(tǒng)開發(fā)從低級(jí)到高級(jí)的進(jìn)階之路。

      目前,由于應(yīng)用系統(tǒng)越來越復(fù)雜,嵌入式軟件的移植性和重用性也得到了人們的高度重視,因?yàn)樗苯佑绊懙角度胧杰浖拈_發(fā)效率和質(zhì)量。選擇一種通用的開發(fā)環(huán)境和高級(jí)編程語言,使開發(fā)的嵌入式軟件可以方便地移植到不同的硬件平臺(tái),是實(shí)現(xiàn)軟件重用的基礎(chǔ)。目前在ARM嵌入式系統(tǒng)開發(fā)中,ARM RealView、Keil以及IAR的EWARM是較好的開發(fā)平臺(tái),C/C++語言是應(yīng)用最廣泛的編程語言,并具有廣泛的庫函數(shù)、程序支持,在今后很長(zhǎng)一段時(shí)間內(nèi),仍將在嵌入式系統(tǒng)應(yīng)用領(lǐng)域中占重要地位。

      4? 嵌入式系統(tǒng)的教學(xué)

      如今,嵌入式系統(tǒng)作為一個(gè)熱門領(lǐng)域,其教學(xué)問題也頗受高校的關(guān)注。教學(xué)的主要目的是培養(yǎng)社會(huì)需要的人,由于嵌入式系統(tǒng)的廣泛性、差異性,社會(huì)對(duì)從事嵌入系統(tǒng)開發(fā)人員的要求也有很大的不同,既需要從事簡(jiǎn)單8/16位單片機(jī)開發(fā)的人員,也需要從事ARM、DSP開發(fā)的人員;既要有從事硬件、底層軟件開發(fā)的人員,也要有從事OS移植、應(yīng)用軟件開發(fā)的人員。由于整個(gè)大學(xué)學(xué)習(xí)時(shí)間和課程教學(xué)時(shí)數(shù)的限制,一個(gè)人顯然不可能學(xué)習(xí)、掌握嵌入系統(tǒng)開發(fā)的各個(gè)層面。所以,各個(gè)學(xué)校首先應(yīng)根據(jù)自身情況,明確定位,確定自己培養(yǎng)學(xué)生的社會(huì)適應(yīng)面,然后再制定教學(xué)大綱,確定課程內(nèi)容和實(shí)驗(yàn)平臺(tái)。對(duì)于高職、普通高校的電類與非電類專業(yè)、軟件學(xué)院等,都應(yīng)該有不同的選擇,而不是人云亦云,一哄而上。

      就目前的發(fā)展看,由于ARM等32位處理器應(yīng)用漸成主流,開發(fā)工具已較完善、成熟,對(duì)于普通高校計(jì)算機(jī)學(xué)科的嵌入式系統(tǒng)教學(xué),筆者認(rèn)為可以定位在以32位嵌入式系統(tǒng)開發(fā)為主,重點(diǎn)是嵌入式系統(tǒng)的軟硬件結(jié)構(gòu)、嵌入式OS的知識(shí),以及嵌入式軟件設(shè)計(jì)(包括優(yōu)化)。課程主體內(nèi)容基本與硬件平臺(tái)(處理器型號(hào))無關(guān),實(shí)驗(yàn)可以采用基于ARM核的不同廠家處理器的實(shí)驗(yàn)平臺(tái)。主要考慮以下幾點(diǎn):

      ①在32位嵌入式系統(tǒng)開發(fā)上,軟件開發(fā)人員的需求比硬件開發(fā)人員要多得多(盡管目前硬件開發(fā)人員較難找,但這應(yīng)該是電子等專業(yè)培養(yǎng)的)。一般在一個(gè)從事嵌入式應(yīng)用系統(tǒng)開發(fā)的公司中,軟硬件人員的比例不會(huì)小于10:1。由于學(xué)習(xí)時(shí)間有限,教學(xué)重點(diǎn)應(yīng)該偏軟件。

     ?、诂F(xiàn)代社會(huì)強(qiáng)調(diào)分工、合作,以求得整體利益的最大化。對(duì)個(gè)人的要求首先是專才,能把局部工作做精、做好。通才是需要的,但數(shù)量會(huì)比專才少得多,而且通才是練出來的,不是教出來的。今后的大學(xué)是大眾教育,教學(xué)只能面向大眾需求。在相關(guān)專業(yè)的研究生階段,對(duì)一些有基礎(chǔ)、有興趣的學(xué)生,可以進(jìn)行一些系統(tǒng)級(jí)硬件、底層軟件的開發(fā)實(shí)踐,同時(shí)也可滿足社會(huì)對(duì)高層次嵌入式人才的需要。

     ?、垡源藶橹?,可以再開設(shè)2門選修課。向下為“單片機(jī)原理與應(yīng)用”,此課程以實(shí)踐為主,讓有興趣的學(xué)生可以自己設(shè)計(jì)、制作一些單片機(jī)應(yīng)用系統(tǒng),同時(shí)也鍛煉了硬件動(dòng)手能力。向上為“數(shù)字信號(hào)處理(DSP)”,讓那些數(shù)學(xué)基礎(chǔ)較好、對(duì)實(shí)時(shí)信號(hào)處理有興趣的學(xué)生有用武之地(現(xiàn)在這樣的學(xué)生很難得)。

      另外,由于應(yīng)用日趨復(fù)雜,而教學(xué)時(shí)間有限,一個(gè)本科生在校期間不可能深入學(xué)習(xí)嵌入式系統(tǒng)的很多細(xì)節(jié),嵌入式教學(xué)應(yīng)采用自上而下的教學(xué)方法。一開始不必花很多時(shí)間講解處理器內(nèi)核架構(gòu)/指令系統(tǒng),只要知道各種內(nèi)核的基本特點(diǎn)即可,重點(diǎn)學(xué)習(xí)、掌握處理器、外設(shè)的編程結(jié)構(gòu)(即編程者角度看到的編程模型結(jié)構(gòu),非具體物理實(shí)現(xiàn)結(jié)構(gòu))。真實(shí)的應(yīng)用、研究設(shè)計(jì)都是從粗粒度向細(xì)粒度進(jìn)階的,是一個(gè)自頂向下的過程,首先要重視的是系統(tǒng)架構(gòu)和各個(gè)抽象層。1000行的C程序,編譯后生成的目標(biāo)代碼只有10 KB左右,試想現(xiàn)在的MCU Flash動(dòng)輒幾百KB,為什么?一個(gè)目標(biāo)代碼幾百KB的C程序,一般不是完全由個(gè)人寫出來的,而都會(huì)使用一些第三方的庫函數(shù)、中間件等。硬件也一樣,現(xiàn)在很多硬件系統(tǒng)都會(huì)使用一些模塊(Module),盡管這些模塊看上去還是一個(gè)芯片,但實(shí)際上已經(jīng)是一個(gè)SiP模塊,如WiFi模塊。所以,在了解基本嵌入式系統(tǒng)結(jié)構(gòu)的基礎(chǔ)上,本科階段要更多地學(xué)習(xí)各種系統(tǒng)、模塊、外設(shè)、協(xié)議、庫函數(shù)的“邊界(Interface)”,能夠搭建一個(gè)簡(jiǎn)單系統(tǒng)(How to do),今后在工作、或研究生階段進(jìn)一步去做好一個(gè)系統(tǒng)(How to do better)。

      5結(jié)語

      嵌入式系統(tǒng)作為一種特殊的計(jì)算機(jī)應(yīng)用系統(tǒng),在任何時(shí)期都有相對(duì)的高、中、低端應(yīng)用,即使在今后,沒有OS支持的4位或8位單片機(jī)的嵌入式應(yīng)用仍有大量需求,但趨勢(shì)是系統(tǒng)化、復(fù)雜化。這既是嵌入式系統(tǒng)的特點(diǎn)--廣泛性、差異性和不可壟斷性,也是廣大嵌入系統(tǒng)研發(fā)人員的生存與發(fā)展空間。ARM處理器在便攜、手持式設(shè)備以及工業(yè)控制等應(yīng)用領(lǐng)域,在今后相當(dāng)長(zhǎng)的時(shí)間內(nèi)是一個(gè)很好的選擇。當(dāng)然,沒有一種型號(hào)的處理器是可以覆蓋所有應(yīng)用的,也不是搬上一個(gè)嵌入式OS,就可以很好地解決軟件問題的。深入了解各種器件特性,選擇最合適的處理器、外圍器件、操作系統(tǒng)和軟件庫,盡可能地優(yōu)化軟件設(shè)計(jì),最貼切地滿足應(yīng)用需求,以獲得最好的系統(tǒng)性價(jià)比,是嵌入式系統(tǒng)設(shè)計(jì)開發(fā)的精髓。

基于ARM處理器中斷處理的編程實(shí)現(xiàn)

  •   ARM編程特別是系統(tǒng)初始化代碼的編寫中通常需要實(shí)現(xiàn)中斷的響應(yīng)、解析跳轉(zhuǎn)和返回等操作,以便支持上層應(yīng)用程序的開發(fā),而這往往是困擾初學(xué)者的一個(gè)難題。中斷處理的編程實(shí)現(xiàn)需要深入了解ARM內(nèi)核和處理器本身的中斷特征,從而設(shè)計(jì)一種快速簡(jiǎn)便的中斷處理機(jī)制。需要說明的是,具體的上層高級(jí)語言編寫的中斷服務(wù)函數(shù)不在本文的討論范圍之內(nèi)。

      ARM處理器異常中斷處理概述

      當(dāng)異常中斷發(fā)生時(shí),系統(tǒng)執(zhí)行完當(dāng)前指令后,將跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。當(dāng)異常中斷處理程序執(zhí)行完成后,程序返回到發(fā)生中斷的指令的下一條指令處執(zhí)行。在進(jìn)入異常中斷處理程序時(shí),要保存被中斷的程序的執(zhí)行現(xiàn)場(chǎng)。從異常中斷處理程序退出時(shí),要恢復(fù)被中斷的程序的執(zhí)行現(xiàn)場(chǎng)。ARM體系中通常在存儲(chǔ)地址的低端固化了一個(gè)32字節(jié)的硬件中斷向量表,用來指定各異常中斷及其處理程序的對(duì)應(yīng)關(guān)系。當(dāng)一個(gè)異常出現(xiàn)以后,ARM微處理器會(huì)執(zhí)行以下幾步操作:

      1)保存處理器當(dāng)前狀態(tài)、中斷屏蔽位以及各條件標(biāo)志位;

      2)設(shè)置當(dāng)前程序狀態(tài)寄存器CPSR中相應(yīng)的位;

      3)將寄存器lr[_]mode設(shè)置成返回地址;

      4)將程序計(jì)數(shù)器(PC)值設(shè)置成該異常中斷的中斷向量地址,從而跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序處執(zhí)行。

      在接收到中斷請(qǐng)求以后, ARM處理器內(nèi)核會(huì)自動(dòng)執(zhí)行以上四步,程序計(jì)數(shù)器PC總是跳轉(zhuǎn)到相應(yīng)的固定地址。從異常中斷處理程序中返回包括下面兩個(gè)基本操作:

      1)恢復(fù)被屏蔽的程序的處理器狀態(tài);

      2)返回到發(fā)生異常中斷的指令的下一條指令處繼續(xù)執(zhí)行。

      當(dāng)異常中斷發(fā)生時(shí),程序計(jì)數(shù)器PC所指的位置對(duì)于各種不同的異常中斷是不同的,同樣,返回地址對(duì)于各種不同的異常中斷也是不同的。例外的是,復(fù)位異常中斷處理程序不需要返回,因?yàn)檎麄€(gè)應(yīng)用系統(tǒng)是從復(fù)位異常中斷處理程序開始執(zhí)行的。

      支持中斷跳轉(zhuǎn)的解析程序

      解析程序的概念和作用

      如前所述,ARM處理器響應(yīng)中斷的時(shí)候,總是從固定的地址開始的,而在高級(jí)語言環(huán)境下開發(fā)中斷服務(wù)程序時(shí),無法控制固定地址開始的跳轉(zhuǎn)流程。為了使得上層應(yīng)用程序與硬件中斷跳轉(zhuǎn)聯(lián)系起來,需要編寫一段中間的服務(wù)程序來進(jìn)行連接。這樣的服務(wù)程序常被稱作中斷解析程序。

      每個(gè)異常中斷對(duì)應(yīng)一個(gè)4字節(jié)的空間,正好放置一條跳轉(zhuǎn)指令或者向PC寄存器賦值的數(shù)據(jù)訪問指令。理論上可以通過這兩種指令直接使得程序跳轉(zhuǎn)到對(duì)應(yīng)的中斷處理程序中去。但實(shí)際上由于函數(shù)地址值為未知和其它一些問題,并不這么做。這里給出一種常用的中斷跳轉(zhuǎn)流程:

    中斷跳轉(zhuǎn)流程圖

      圖1中斷跳轉(zhuǎn)流程圖

      這個(gè)流程中的關(guān)鍵部分是中斷向量表,為了讓解析程序能找到向量表,應(yīng)該將向量表的地址固定化(編程者自定義)。這樣,整個(gè)跳轉(zhuǎn)流程的所有程序地址都是固定的,當(dāng)中斷觸發(fā)后,就可以自動(dòng)運(yùn)行。其中,只有向量表的內(nèi)容是可變的,編程者只要在向量表中填入正確的目標(biāo)地址值就可以了。這使得上層中斷處理程序和底層硬件跳轉(zhuǎn)有機(jī)地聯(lián)系起來。

      解析過程示例

      以一次IRQ跳轉(zhuǎn)為例,假定中斷向量表定義在0x00400000開始的外部RAM空間:

    中斷解析示例流程

      圖2 中斷解析示例流程

      圖2中實(shí)線表示的流程都用ARM匯編語言編寫,一般作為boot代碼的一部分放在系統(tǒng)的底層模塊中。填寫向量表的操作可以在上層應(yīng)用程序中方便地實(shí)現(xiàn),比如在C語言中: *( int *(0x00400018)) = (int) ISR[_]IRQ;這樣就將IRQ中斷的服務(wù)程序入口地址(0x00300260)填寫到中斷向量表中的固定地址0x00400018開始的4字節(jié)空間了。

      如此一來,就可避免在應(yīng)用程序中計(jì)算中斷的跳轉(zhuǎn)地址,并且可以很方便的選擇不同的函數(shù)作為指定中斷的服務(wù)程序。當(dāng)然,在程序開發(fā)時(shí)要合理開辟好向量表,避免對(duì)向量表地址空間不必要的寫操作。

      解析程序的擴(kuò)展

      眾所周知,在ARM處理器中會(huì)包含很多中斷源,通常會(huì)在ARM內(nèi)核外面擴(kuò)展一個(gè)中斷控制器來管理各種原因產(chǎn)生的中斷。比如,三星公司的S3C4510B處理器中的IRQ/FIQ類型的中斷源可以有21個(gè),S3C44B0X有26個(gè)。這時(shí)候中斷處理的原理還是一樣的,無非是向量表更長(zhǎng),并且當(dāng)一個(gè)中斷觸發(fā)以后,需要在解析程序里查詢中斷控制器的狀態(tài)來確定具體的中斷源,再根據(jù)中斷源來讀取向量表中的對(duì)應(yīng)地址內(nèi)容。其處理流程可用圖3表示。

    中斷解析的擴(kuò)展

      圖3 中斷解析的擴(kuò)展

      相比圖2,圖3中多了一級(jí)的跳轉(zhuǎn),也就是在第一次解析跳轉(zhuǎn)到IRQ/FIQ服務(wù)程序中后,再進(jìn)行第二次的解析[_]中斷源的識(shí)別。

      向量中斷的處理

      一些處理器在設(shè)計(jì)外擴(kuò)的中斷控制器時(shí)提供了一種叫做“向量中斷”的中斷跳轉(zhuǎn)機(jī)制。這與前文敘述的擴(kuò)展解析跳轉(zhuǎn)流程有所不同,它不需要軟件來識(shí)別具體的中斷源,也就是不需要添加圖3中的IRQ/FIQ服務(wù)程序,而完全由硬件自動(dòng)跳轉(zhuǎn)到對(duì)應(yīng)的中斷地址。其它跳轉(zhuǎn)流程的原理都是一樣的。這相當(dāng)于擴(kuò)展了ARM內(nèi)核的硬件中斷向量表,減小了中斷響應(yīng)延時(shí)。以S3C44B0X處理器的外部中斷0為例,需要在其對(duì)應(yīng)的硬件固定跳轉(zhuǎn)地址0x00000020處添加指令:ldr pc,=HandlerEINT,使得程序跳轉(zhuǎn)到其服務(wù)程序HandlerEINT0處執(zhí)行。

    向量中斷解析流程示例

      圖4? 向量中斷解析流程示例

      結(jié)語

      本文介紹的中斷處理機(jī)制是嵌入式編程中常常采用的方法,其原理是通用的。當(dāng)然,在實(shí)際開發(fā)中,需要根據(jù)系統(tǒng)處理器ARM內(nèi)核的中斷特征和處理器自身的中斷控制器特點(diǎn)具體細(xì)化流程圖中的各個(gè)步驟和改寫參考代碼。

提問者:uyuy77 地點(diǎn):- 瀏覽次數(shù):1910 提問時(shí)間:07-30 04:50
我有更好的答案
提 交
撰寫答案
提 交
1 / 3
1 / 3
相關(guān)電子百科
硅膠板
3D晶體管
雙極性晶體管
晶體管時(shí)間繼電器
光敏電阻器