www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]Cortex—M3的異常處理機(jī)制研究

引 言
   
Cortex—M3是ARM公司第一款基于ARMv7一M的微控制器內(nèi)核,在指令執(zhí)行、異??刂?、時(shí)鐘管理、跟蹤調(diào)試和存儲保護(hù)等方面相對于ARM7有很大的區(qū)別。尤其在異常處理機(jī)制方面有很大的改進(jìn),其異常響應(yīng)只需要12個(gè)時(shí)鐘周期。NVIC(Nested Vectored Inteirupt Contmller,嵌套向量中斷控制器)是Cortex—M3處理器的一個(gè)緊耦合部件,可以配置1~240個(gè)帶有256個(gè)優(yōu)先級、8級搶占優(yōu)先權(quán)的物理中斷,為處理器提供出色的異常處理能力。同時(shí),搶占(pre-emption)、尾鏈(tail—chaining)、遲到(1ate—arriving)技術(shù)的使用,大大縮短了異常事件的響應(yīng)時(shí)間。
    異?;蛘咧袛嗍翘幚砥黜憫?yīng)系統(tǒng)中突發(fā)事件的一種機(jī)制。當(dāng)異常發(fā)生時(shí),Cortex—M3通過硬件自動將編程計(jì)數(shù)器(PC)、編程狀態(tài)寄存器(XPSR)、鏈接寄存器(LR)和R0~R3、R12等寄存器壓進(jìn)堆棧。在Dbus(數(shù)據(jù)總線)保存處理器狀態(tài)的同時(shí),處理器通過Ibus(指令總線)從一個(gè)可以重新定位的向量表中識別出異常向量,并獲取ISR函數(shù)的地址,也就是保護(hù)現(xiàn)場與取異常向量是并行處理的。一旦壓棧和取指令完成,中斷服務(wù)程序或故障處理程序就開始執(zhí)行。執(zhí)行完ISR,硬件進(jìn)行出棧操作,中斷前的程序恢復(fù)正常執(zhí)行。圖1為Cortex—M3處理器的異常處理流程。

1 Cortex—M3異常類型
   
同ARM7相比,Cortex—M3在異常的分類和優(yōu)先級上有很大的差異,如表1所列。

    Cortex—M3將異常分為復(fù)位、不可屏蔽中斷、硬故障、存儲管理、總線故障和應(yīng)用故障、SVcall、調(diào)試監(jiān)視異常、PendSV、SysTick以及外部中斷等。Cortex—M3采用向量表來確定異常的入口地址。與大多數(shù)其他ARM內(nèi)核不同,Cortex—M3向量表中包含異常處理程序和ISR的地址,而不是指令。復(fù)位處理程序的初始堆棧指針和地址必須分別位于0xO和Ox4。這些值在隨后的復(fù)位中被加載到適當(dāng)?shù)腃PU寄存器中。向量表偏移控制寄存器將向量表定位在CODE(Flash)或SRAM中。復(fù)位時(shí),默認(rèn)情況下為CODE模式,但可以重新定位。異常被接受后,處理器通過Ibus查表獲取地址,執(zhí)行異常處理程序。
    在Cortex—M3的優(yōu)先級分配中,較低的優(yōu)先級值具有較高的優(yōu)先級。NVIC將異常的優(yōu)先級分成兩部分:搶占優(yōu)先級(pre—emption priority)部分和子優(yōu)先級(sub—priority)部分,可以通過中斷申請/復(fù)位控制寄存器來確定兩個(gè)部分所占的比例。搶占優(yōu)先級和子優(yōu)先級共同作用確定了異常的優(yōu)先級。搶占優(yōu)先級用于決定是否發(fā)生搶占,一個(gè)異常只有在搶占優(yōu)先級高于另一個(gè)異常的搶占優(yōu)先級時(shí)才能發(fā)生搶占。當(dāng)多個(gè)掛起異常具有相同的搶占優(yōu)先級時(shí),子優(yōu)先級起作用。通過NVIC設(shè)置的優(yōu)先級權(quán)限高于硬件默認(rèn)優(yōu)先級。當(dāng)有多個(gè)異常具有相同的優(yōu)先級時(shí),則比較異常號的大小,異常號小的被優(yōu)先激活。

2 Cortex—M3異常處理
2.1 異常的進(jìn)入

    當(dāng)一個(gè)異常出現(xiàn)以后,Cortex一M3處理器由硬件通過Dbus保存處理器狀態(tài),同時(shí)通過Ibus讀取向量表中的SP,更新PC和LR,執(zhí)行中斷服務(wù)子程序。
    為了應(yīng)對堆棧操作階段到來后的更高優(yōu)先級異常,Cortex—M3支持遲到和搶占機(jī)制,以便對各種可能事件做出確定性的響應(yīng)。
    搶占是一種對更高優(yōu)先級異常的響應(yīng)機(jī)制。Cortex—M3異常搶占的處理過程如圖2所示。當(dāng)新的更高優(yōu)先級異常到來時(shí),處理器打斷當(dāng)前的流程,執(zhí)行更高優(yōu)先級的異常操作,這樣就發(fā)生了異常嵌套。遲到是處理器用來加速搶占的一種機(jī)制。如果一個(gè)具有更高優(yōu)先級的異常在上一個(gè)異常執(zhí)行壓棧期間到達(dá),則處理器保存狀態(tài)的操作繼續(xù)執(zhí)行,因?yàn)楸槐4娴臓顟B(tài)對于兩個(gè)異常都是一樣的。但是,NVIC馬上獲取的是更高優(yōu)先級的異常向量地址。這樣在處理器狀態(tài)保存完成后,開始執(zhí)行高優(yōu)先級異常的ISR。

[!--empirenews.page--]

2.2 異常的返回
    Cortex-M3異常返回的操作如圖3所示。當(dāng)從異常中返回時(shí),處理器可能會處于以下情況之一:
    ◆尾鏈到一個(gè)已掛起的異常,該異常比棧中所有異常的優(yōu)先級都高;
    ◆如果沒有掛起的異常,或是棧中最高優(yōu)先級的異常比掛起的最高優(yōu)先級異常具有更高的優(yōu)先級,則返回到最近一個(gè)已壓棧的ISR;
    ◆如果沒有異常已經(jīng)掛起或位于棧中,則返回到Tread模式。
    為了應(yīng)對異常返回階段可能遇到的新的更高優(yōu)先級異常,Cortex—M3支持完全基于硬件的尾鏈機(jī)制,簡化了激活的和未決的異常之問的移動,能夠在兩個(gè)異常之間沒有多余的狀態(tài)保存和恢復(fù)指令的情況下實(shí)現(xiàn)back—to—back處理。尾鏈發(fā)生的2個(gè)條件:異常返回時(shí)產(chǎn)生了新的異常;掛起的異常的優(yōu)先級比所有被壓棧的異常的優(yōu)先級都高。
    尾鏈發(fā)生后,Cortex—M3處理過程如圖3中尾鏈分支所示。這時(shí),Cortex—M3處理器終止正在進(jìn)行的出棧操作并跳過新異常進(jìn)入時(shí)的壓棧操作,同時(shí)通過Ibus立即取出掛起異常的向量。在退出前一個(gè)ISR返回操作6個(gè)周期后,開始執(zhí)行尾鏈的ISR。


3 Cortex—M3和ARM7中斷控制器比較
    在過去的十年中,基于ARMv4的ARM7系列微控制器廣泛應(yīng)用在各個(gè)領(lǐng)域。在ARM7系列中,并沒有對中斷進(jìn)行獨(dú)立的服務(wù),而是通過犧牲處理器一定的性能來換取有效的中斷響應(yīng)和中斷處理機(jī)制。Cortex—M3高度耦合的NVIC可以實(shí)現(xiàn)硬件中斷處理,同時(shí)支持遲到和尾鏈機(jī)制,加快了異常響應(yīng)的速度,充分發(fā)揮了處理器的性能。圖4為Corex—M3和ARM7在中斷控制器結(jié)構(gòu)方面的差異。

[!--empirenews.page--]

    比較可知,NVIC是直接作為Cortex—M3處理器的一部分,集成在處理器核內(nèi)部;而VIC只是游離在ARM7內(nèi)核的外圍,這樣就必然占用內(nèi)核資源,影響了處理速度。Cortex—M3和ARM7中斷控制器在功能和實(shí)現(xiàn)方式上的差異如表2所列。
3.1 處理器響應(yīng)單個(gè)異常
    Cortex一M3和ARM7異常處理過程如圖5所示。

    ARM7處理器的異常開銷:

   
    其中,TARM7為ARM7處理異常的時(shí)間開銷;TARM2_PUSH和TARM7_POP為ARM7進(jìn)行壓棧和出棧的操作時(shí)間;TCoretx-M3為Cortex一M3處理異常的時(shí)間開銷;TM3_PUSH和TM3_POP為Cortex—M3進(jìn)行壓棧和出棧的操作時(shí)間。
    可見,由于采用處理器狀態(tài)硬件保存,Cortex—M3處理器少用了18周期,節(jié)省了42.8%的異常開銷。
3.2 處理器響應(yīng)遲到異常
    Cortex—M3和ARM7在處理遲到高優(yōu)先級異常時(shí)的差異如圖6所示。

    當(dāng)IRQ2正在為執(zhí)行ISR2保存處理器狀態(tài)時(shí),遲到了一個(gè)優(yōu)先級更高的異常IRQl。這時(shí)ARM7繼續(xù)進(jìn)行壓棧操作。在壓棧操作完成后,ARM7繼續(xù)為執(zhí)行ISRl進(jìn)行壓棧操作,然后執(zhí)行ISRl。其實(shí),兩次壓棧操作所保存的內(nèi)容是一樣的。因此,Cortex—M3對這個(gè)階段的操作進(jìn)行了優(yōu)化,引進(jìn)了遲到異常技術(shù),只進(jìn)行一次的壓棧操作。并且在ISRl執(zhí)行完成之后,Cortex—M3沒有進(jìn)行出棧操作,而是通過一個(gè)6周期的尾鏈,直接進(jìn)入ISR2的執(zhí)行。
    在上面的例子中,ARM7處理器的異常開銷:


    其中,TARM7_later和TM3_later分別為ARM7和Cortex—M3處理遲到異常所用的時(shí)間開銷;Ttail-chaining為Cortex—M3處理尾鏈所用的時(shí)間。
    通過計(jì)算可以看出,Cortex—M3少用了44周期,節(jié)省65%的異常開銷。
3.3 處理器處理back-to-back異常
    若一個(gè)新的異常在上一個(gè)異常寄存器出棧時(shí)到來,ARM7和Cortex—M3的處理方式也有很大不同。Cortex—M3和ARM7在處理back—to—back異常時(shí)的差異如圖7所示。ARM7繼續(xù)當(dāng)前的出棧操作,在出棧操作完成后,處理器為執(zhí)行ISR2進(jìn)行壓棧操作,然后執(zhí)行ISR2。其實(shí),這時(shí)候處理器出棧和壓棧的內(nèi)容是一致的。Cortex—M3同樣優(yōu)化了這個(gè)階段的操作,引進(jìn)了尾鏈機(jī)制。當(dāng)IRQ2到來時(shí),Cortex—M3立即中止已經(jīng)進(jìn)行了8個(gè)周期的出棧操作,轉(zhuǎn)而進(jìn)行尾鏈操作,然后執(zhí)行ISR2。

    在處理back—to—back異常時(shí),ARM7處理器用在ISRl到ISR2轉(zhuǎn)換的異常開銷:
    TARM_btb=TARM7_POP+TARM7_PUSH=16+26=42周期Cortex-M3處理器用在ISRl到ISR2轉(zhuǎn)換的異常開銷:

    TM3_btb=Tcancel+Ttail-chaining=8+6=14周期
    其中,TARM_btb和TM3_btb分別為ARM7和Cortex—M3處理back—to—back異常轉(zhuǎn)換所用的時(shí)間開銷;Tcancel為發(fā)生尾鏈時(shí)Cortex—M3已用于狀態(tài)恢復(fù)的時(shí)間。
    通過計(jì)算可以看出,Cortex—M3少用了28周期。其實(shí),Cortex—M3處理器用在ISRl到ISR2轉(zhuǎn)換的異常開銷最低可以優(yōu)化到只用6個(gè)周期,這樣就極大地提高了back—to—back異常的響應(yīng)能力。

結(jié) 語
    本文闡述了Cortex—M3處理器異常處理機(jī)制。通過和ARM7進(jìn)行比較,量化分析了Cortex一M3在異常處理方面的優(yōu)勢,對工程師使用Cortex—M3的異常處理會有一定參考和幫助。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

成都2022年10月19日 /美通社/ -- 近期,平安養(yǎng)老險(xiǎn)積極籌備個(gè)人養(yǎng)老金的產(chǎn)品設(shè)計(jì)和系統(tǒng)開發(fā)工作,發(fā)展多樣化的養(yǎng)老金融產(chǎn)品,推動商業(yè)養(yǎng)老保險(xiǎn)、個(gè)人養(yǎng)老金、專屬商業(yè)養(yǎng)老保險(xiǎn)等產(chǎn)品供給。 搭養(yǎng)老政策東風(fēng) ...

關(guān)鍵字: 溫度 BSP 東風(fēng) 大眾

廣東佛山2022年10月19日 /美通社/ -- 空間是人居生活的基礎(chǔ)單元,承載著生存與活動的最基本功能。而對于理想空間的解構(gòu)意義卻在物理性容器之外,體現(xiàn)出人們對于空間和生活深層關(guān)系的思考,同時(shí)也塑造著人與空間的新型連接...

關(guān)鍵字: 溫度 BSP 智能化 進(jìn)程

上海2022年10月19日 /美通社/ -- 10月17日晚間,安集科技披露業(yè)績預(yù)告。今年前三季度,公司預(yù)計(jì)實(shí)現(xiàn)營業(yè)收入7.54億元至8.33億元,同比增長60.24%至77.03%;歸母凈利潤預(yù)計(jì)為1.73億...

關(guān)鍵字: 電子 安集科技 BSP EPS

北京2022年10月19日 /美通社/ -- 10月18日,北京市經(jīng)濟(jì)和信息化局發(fā)布2022年度第一批北京市市級企業(yè)技術(shù)中心創(chuàng)建名單的通知,諾誠健華正式獲得"北京市企業(yè)技術(shù)中心"認(rèn)定。 北京市企業(yè)技...

關(guān)鍵字: BSP ARMA COM 代碼

北京2022年10月18日 /美通社/ -- 10月14日,國際數(shù)據(jù)公司(IDC)發(fā)布《2022Q2中國軟件定義存儲及超融合市場研究報(bào)告》,報(bào)告顯示:2022年上半年浪潮超融合銷售額同比增長59.4%,近5倍于...

關(guān)鍵字: IDC BSP 數(shù)字化 數(shù)據(jù)中心

上海2022年10月18日 /美通社/ -- 2022年9月5日,是首都銀行集團(tuán)成立60周年的紀(jì)念日。趁著首都銀行集團(tuán)成立60周年與首都銀行(中國)在華深耕經(jīng)營12年的“大日子”,圍繞作為外資金融機(jī)構(gòu)對在華戰(zhàn)略的構(gòu)想和業(yè)...

關(guān)鍵字: 數(shù)字化 BSP 供應(yīng)鏈 控制

東京2022年10月18日  /美通社/ -- NIPPON EXPRESS HOLDINGS株式會社(NIPPON EXPRESS HOLDINGS, INC.)旗下集團(tuán)公司上海通運(yùn)國際物流有限公司(Nipp...

關(guān)鍵字: 溫控 精密儀器 半導(dǎo)體制造 BSP

廣州2022年10月18日 /美通社/ -- 10月15日,第 132 屆中國進(jìn)出口商品交易會("廣交會")于"云端"開幕。本屆廣交會上高新技術(shù)企業(yè)云集,展出的智能產(chǎn)品超過140,...

關(guān)鍵字: 中國智造 BSP 手機(jī) CAN

要問機(jī)器人公司哪家強(qiáng),波士頓動力絕對是其中的佼佼者。近來年該公司在機(jī)器人研發(fā)方面獲得的一些成果令人印象深刻,比如其開發(fā)的機(jī)器人會后空翻,自主爬樓梯等。這不,波士頓動力又發(fā)布了其機(jī)器人組團(tuán)跳男團(tuán)舞的新視頻,表演的機(jī)器人包括...

關(guān)鍵字: 機(jī)器人 BSP 工業(yè)機(jī)器人 現(xiàn)代汽車

南京2022年10月17日 /美通社/ -- 日前《2022第三屆中國高端家電品牌G50峰會》于浙江寧波落幕,來自兩百余名行業(yè)大咖、專家學(xué)者共同探討了在形勢依然嚴(yán)峻的當(dāng)下,如何以科技創(chuàng)新、高端化轉(zhuǎn)型等手段,幫助...

關(guān)鍵字: LINK AI BSP 智能家電

嵌入式教程

6897 篇文章

關(guān)注

發(fā)布文章

編輯精選

技術(shù)子站

關(guān)閉