日韩欧美国产极速不卡一区,国产手机视频在线观看尤物,国产亚洲欧美日韩蜜芽一区,亚洲精品国产免费,亚洲二区三区无码中文,A大片亚洲AV无码一区二区三区,日韩国语国产无码123

您好,歡迎來(lái)到維�(kù)電子市場(chǎng)�(wǎng) 登錄 | 免費(fèi)注冊(cè)

ARM處理�
閱讀�18359�(shí)間:2010-11-22 15:52:50

  ARM是Advanced RISC Machines的縮�(xiě),它是一�微處理器行業(yè)知名企業(yè),該企業(yè)�(shè)�(jì)了大量高性能、廉�(jià)、耗能低的RISC(精�(jiǎn)指令集)處理��

特點(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)度固定�

啟動(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用戶(hù)程序存儲(chǔ)于片�(nèi)SRAM�,然后跳�(zhuǎn)到片�(nèi)SRAM起始處開(kāi)始執(zhí)行剛下載�2KB用戶(hù)程序,這為�(jìn)一步的�(diào)�、代碼下�、外啟動(dòng)Flash存儲(chǔ)器編程提供途徑,非常適用于嵌入式系�(tǒng)的實(shí)�(yàn)與開(kāi)�(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)方式地址空間分配

�(yùn)行模�

  ARM處理器支�7種運(yùn)行模�,如表所��

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

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

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

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

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

與嵌入式系統(tǒng)

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

  1  嵌入式處理器與硬�

  在處理器方面,目前大量的�、低端嵌入式�(yīng)�,主要使�8/16位單片機(jī)。在�(guó)�(nèi),由于歷史的原因,主要是以MCS51核為主的許多不同型號(hào)單片�(jī),主要廠商有Atmel、Philips、Winbond、宏晶等。還有一些近幾年�(fā)展較快的新型單片�(jī),如PIC、AVR、MSP430系列�。這些單片�(jī)各有特點(diǎn),但從目前的�(fā)展角度來(lái)看,單片�(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位處理器為主。各種類(lèi)型的處理器都有其一定的�(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ù)、新器件,使用過(guò)多種多樣的處理器和模�/�(shù)字器件,才能逐步積累,聚沙成塔,�(duì)一�(gè)新的�(yīng)用系�(tǒng)給出快�、合理的硬件方案與設(shè)�(jì)�

  2  ARM處理器的�(yōu)�(shì)

  �(duì)于如今大量出�(xiàn)�32位嵌入式�(yīng)�,以筆者之�(jiàn),ARM處理器的�(yōu)�(shì)主要有以下幾�(gè)方面�

  2.1  高性能、低功�、低�(jià)�

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

  2.2  豐富的可選擇芯片

  ARM只是一�(gè)�,ARM公司自己不生�(chǎn)芯片,采用授�(quán)方式給半�(dǎo)體生�(chǎn)�。目�,全球幾乎所有的半導(dǎo)體廠家都向ARM公司�(gòu)�(mǎi)了各種ARM核,配上多種不同的控制器(如LCD控制�、SDRAM控制�、DMA控制器等)和外設(shè)、接�,生�(chǎn)各種基于ARM核的芯片。目�,基于ARM核的各種處理器型�(hào)有好幾百種,在國(guó)�(nèi)市場(chǎng)�,常�(jiàn)的有ST、TI、NXP、Atmel、Samsung、OKI、Sharp、Hynix、Crystal等廠家的芯片。用�(hù)可以根據(jù)各自的應(yīng)用需�,從性能、功能等方面考察,在許多具體型號(hào)中選擇最合適的芯片來(lái)�(shè)�(jì)自己的應(yīng)用系�(tǒng)。由于ARM核采用向上兼容的指令系統(tǒng),用�(hù)�(kāi)�(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)品的�(kāi)�(fā),不是一�(gè)�(jiǎn)單的處理器加幾百條指令、語(yǔ)句就可以解決�。要用到32位處理器,一般都要有編譯�、高效的�(kāi)�(fā)工具(仿真器及調(diào)試環(huán)境)、操作系�(tǒng)、協(xié)議棧�,這些東西都不是一�(gè)芯片生產(chǎn)商可以解決的,而需要許多第三方的支�。這就像一粒種�,需要土�、空�、水等環(huán)境才能發(fā)�、成�(zhǎng)。這也是我們的一些“中�(guó)芯”該反思之��

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

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

  ARM核根�(jù)不同�(yīng)用需求對(duì)處理器的性能要求,有一�(gè)從ARM7、ARM9到ARM10、ARM11,以及新定義的CortexM/R/A系列完整的產(chǎn)品線(xià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)用,這類(lèi)�(yīng)用面很廣,要求處理器有豐富的外設(shè),并且各方面比較均衡;R系列�(qiáng)�(diào)�(shí)�(shí)性,主要用于�(shí)�(shí)控制,如汽車(chē)引擎;A系列面向高性能、低功耗應(yīng)用系�(tǒng),如智能手機(jī)。選用ARM處理器�(jìn)行開(kāi)�(fā),技�(shù)積累性較�(qiáng),生命周期長(zhǎng),設(shè)�(jì)重用度高,不易被淘汰。用�(hù)在選擇ARM處理器時(shí),可以針�(duì)�(yīng)用需�,從大量的ARM芯片中選用滿(mǎn)足性能、功能要求的�(chǎn)品,以獲得較好的�?xún)r(jià)��

  3  ARM嵌入式系�(tǒng)的軟�

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

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

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

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

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

  4  嵌入式系�(tǒng)的教�(xué)

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

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

 ?、僭?2位嵌入式系統(tǒng)�(kāi)�(fā)�,軟件開(kāi)�(fā)人員的需求比硬件�(kāi)�(fā)人員要多得多(盡管目前硬件開(kāi)�(fā)人員較難�,但這應(yīng)該是電子等培�(yǎng)的)。一般在一�(gè)從事嵌入式應(yīng)用系�(tǒng)�(kāi)�(fā)的公司中,軟硬件人員的比例不�(huì)小于10�1。由于學(xué)�(xí)�(shí)間有�,教�(xué)重點(diǎn)�(yīng)該偏軟件�

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

 ?、垡源藶�?,可以再�(kāi)�(shè)2門(mén)選修�。向下為“單片機(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é)方法。一�(kāi)始不必花很多�(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è)自頂向下的過(guò)�,首先要重視的是系統(tǒng)架構(gòu)和各�(gè)抽象層�1000行的C程序,編譯后生成的目�(biāo)代碼只有10 KB左右,試想現(xiàn)在的MCU Flash�(dòng)輒幾百KB,為什�?一�(gè)目標(biāo)代碼幾百KB的C程序,一般不是完全由�(gè)人寫(xiě)出來(lái)的,而都�(huì)使用一些第三方的庫(kù)函數(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é)�、庫(kù)函數(shù)的“邊界(Interface)�,能夠搭建一�(gè)�(jiǎn)單系�(tǒng)(How to do�,今后在工作、或研究生階段�(jìn)一步去做好一�(gè)系統(tǒng)(How to do better)�

  5�(jié)�(yǔ)

  嵌入式系�(tǒng)作為一種特殊的�(jì)算機(jī)�(yīng)用系�(tǒng),在任何�(shí)期都有相�(duì)的高、中、低端應(yīng)用,即使在今�,沒(méi)有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)�,沒(méi)有一種型�(hào)的處理器是可以覆蓋所有應(yīng)用的,也不是搬上一�(gè)嵌入式OS,就可以很好地解決軟件問(wèn)題的。深入了解各種器件特�,選擇最合適的處理器、外圍器�、操作系�(tǒng)和軟件庫(kù),盡可能地優(yōu)化軟件設(shè)�(jì),最貼切地滿(mǎn)足應(yīng)用需�,以獲得的系�(tǒng)�?xún)r(jià)比,是嵌入式系統(tǒng)�(shè)�(jì)�(kāi)�(fā)的精��

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

  ARM編程特別是系�(tǒng)初始化代碼的編寫(xiě)中通常需要實(shí)�(xiàn)中斷的響�(yīng)、解析跳�(zhuǎn)和返回等操作,以便支持上層應(yīng)用程序的�(kāi)�(fā),而這往往是困擾初�(xué)者的一�(gè)難題。中斷處理的編程�(shí)�(xiàn)需要深入了解ARM�(nèi)核和處理器本身的中斷特征,從而設(shè)�(jì)一種快速簡(jiǎn)便的中斷處理�(jī)�。需要說(shuō)明的�,具體的上層�(yǔ)言編寫(xiě)的中斷服�(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é)的硬件中斷向量表,用�(lái)指定各異常中斷及其處理程序的�(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ù)位異常中斷處理程序開(kāi)始執(zhí)行的�

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

  解析程序的概念和作用

  如前所�,ARM處理器響�(yīng)中斷的時(shí)�,總是從固定的地址�(kāi)始的,而在�(yǔ)言�(huán)境下�(kāi)�(fā)中斷服務(wù)程序�(shí),無(wú)法控制固定地址�(kāi)始的跳轉(zhuǎn)流程。為了使得上層應(yīng)用程序與硬件中斷跳轉(zhuǎn)�(lián)系起�(lái),需要編�(xiě)一段中間的服務(wù)程序�(lái)�(jìn)行連接。這樣的服�(wù)程序常被�(chēng)作中斷解析程序�

  每�(gè)異常中斷�(duì)�(yīng)一�(gè)4字節(jié)的空�,正好放置一條跳�(zhuǎn)指令或者向PC寄存器賦值的�(shù)�(jù)訪問(wèn)指令。理論上可以通過(guò)這兩種指令直接使得程序跳�(zhuǎn)到對(duì)�(yīng)的中斷處理程序中�。但�(shí)際上由于函數(shù)地址值為未知和其它一些問(wèn)�,并不這么做。這里給出一種常用的中斷跳轉(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)系起�(lái)�

  解析�(guò)程示�

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

中斷解析示例流程

  �2 中斷解析示例流程

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

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

  解析程序的擴(kuò)�

  眾所周知,在ARM處理器中�(huì)包含很多中斷�,通常�(huì)在ARM�(nèi)核外面擴(kuò)展一�(gè)中斷控制器來(lái)管理各種原因�(chǎn)生的中斷。比�,三星公司的S3C4510B處理器中的IRQ/FIQ�(lèi)型的中斷源可以有21�(gè),S3C44B0X�26�(gè)。這時(shí)候中斷處理的原理還是一樣的,無(wú)非是向量表更�(zhǎng),并且當(dāng)一�(gè)中斷觸發(fā)以后,需要在解析程序里查�(xún)中斷控制器的狀�(tài)�(lái)確定具體的中斷源,再根據(jù)中斷源來(lái)讀取向量表中的�(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)流程有所不同,它不需要軟件來(lái)�(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é)�(yǔ)

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

維庫(kù)電子�,電子知�(shí),一查百通!

已收錄詞�160364�(gè)