日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀] CortexM3是ARM公司第一款基于ARMv7M的微控制器內(nèi)核,在指令執(zhí)行、異常控制、時鐘管理、跟蹤調(diào)試和存儲保護等方面相對于 ARM7有很大的區(qū)別。尤其在異常處理機制方面有很大的改進,其異常響應(yīng)只需要12個

CortexM3是ARM公司第一款基于ARMv7M的微控制器內(nèi)核,在指令執(zhí)行、異常控制、時鐘管理、跟蹤調(diào)試和存儲保護等方面相對于 ARM7有很大的區(qū)別。尤其在異常處理機制方面有很大的改進,其異常響應(yīng)只需要12個時鐘周期。NVIC(Nested Vectored Interrupt Controller,嵌套向量中斷控制器)是CortexM3處理器的一個緊耦合部件,可以配置1~240個帶有256個優(yōu)先級、8級搶占優(yōu)先權(quán)的物理中斷,為處理器提供出色的異常處理能力[1].同時,搶占(pre?emption)、尾鏈(tail?chaining)、遲到 (late?arriving)技術(shù)的使用,大大縮短了異常事件的響應(yīng)時間。


異?;蛘咧袛嗍翘幚砥黜憫?yīng)系統(tǒng)中突發(fā)事件的一種機制。當(dāng)異常發(fā)生時,CortexM3通過硬件自動將編程計數(shù)器(PC)、編程狀態(tài)寄存器(xPSR)、鏈接寄存器(LR)和R0~R3、R12等寄存器壓進堆棧。在Dbus(數(shù)據(jù)總線)保存處理器狀態(tài)的同時,處理器通過Ibus(指令總線)從一個可以重新定位的向量表中識別出異常向量,并獲取ISR函數(shù)的地址,也就是保護現(xiàn)場與取異常向量是并行處理的。一旦壓棧和取指令完成,中斷服務(wù)程序或故障處理程序就開始執(zhí)行。執(zhí)行完ISR,硬件進行出棧操作,中斷前的程序恢復(fù)正常執(zhí)行。圖1為CortexM3處理器的異常處理流程[2].

圖1 CortexM3異常處理流程

1 CortexM3異常類型

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

表1CortexM3異常類型及優(yōu)先級

CortexM3將異常分為復(fù)位、不可屏蔽中斷、硬故障、存儲管理、總線故障和應(yīng)用故障、SVcall、調(diào)試監(jiān)視異常、PendSV、 SysTick以及外部中斷等。CortexM3采用向量表來確定異常的入口地址。與大多數(shù)其他ARM內(nèi)核不同,CortexM3向量表中包含異常處理程序和ISR的地址,而不是指令。復(fù)位處理程序的初始堆棧指針和地址必須分別位于0x0和0x4.這些值在隨后的復(fù)位中被加載到適當(dāng)?shù)腃PU寄存器中。向量表偏移控制寄存器將向量表定位在CODE(Flash)或SRAM中。復(fù)位時,默認(rèn)情況下為CODE模式,但可以重新定位。異常被接受后,處理器通過 Ibus查表獲取地址,執(zhí)行異常處理程序。

在CortexM3的優(yōu)先級分配中,較低的優(yōu)先級值具有較高的優(yōu)先級。NVIC將異常的優(yōu)先級分成兩部分:搶占優(yōu)先級(pre?emption priority)部分和子優(yōu)先級(sub?priority)部分,可以通過中斷申請/復(fù)位控制寄存器來確定兩個部分所占的比例。搶占優(yōu)先級和子優(yōu)先級共同作用確定了異常的優(yōu)先級。搶占優(yōu)先級用于決定是否發(fā)生搶占,一個異常只有在搶占優(yōu)先級高于另一個異常的搶占優(yōu)先級時才能發(fā)生搶占。當(dāng)多個掛起異常具有相同的搶占優(yōu)先級時,子優(yōu)先級起作用[3].通過NVIC設(shè)置的優(yōu)先級權(quán)限高于硬件默認(rèn)優(yōu)先級。當(dāng)有多個異常具有相同的優(yōu)先級時,則比較異常號的大小,異常號小的被優(yōu)先激活。

2 CortexM3異常處理

2.1 異常的進入

當(dāng)一個異常出現(xiàn)以后,CortexM3處理器由硬件通過Dbus保存處理器狀態(tài),同時通過Ibus讀取向量表中的SP,更新PC和LR,執(zhí)行中斷服務(wù)子程序。

為了應(yīng)對堆棧操作階段到來后的更高優(yōu)先級異常,CortexM3支持遲到和搶占機制,以便對各種可能事件做出確定性的響應(yīng)。

搶占是一種對更高優(yōu)先級異常的響應(yīng)機制。CortexM3異常搶占的處理過程[2] 如圖2所示。當(dāng)新的更高優(yōu)先級異常到來時,處理器打斷當(dāng)前的流程,執(zhí)行更高優(yōu)先級的異常操作,這樣就發(fā)生了異常嵌套。遲到是處理器用來加速搶占的一種機制。如果一個具有更高優(yōu)先級的異常在上一個異常執(zhí)行壓棧期間到達,則處理器保存狀態(tài)的操作繼續(xù)執(zhí)行,因為被保存的狀態(tài)對于兩個異常都是一樣的。但是,NVIC馬上獲取的是更高優(yōu)先級的異常向量地址。這樣在處理器狀態(tài)保存完成后,開始執(zhí)行高優(yōu)先級異常的ISR.

圖2 異常搶占流程

2.2 異常的返回

CortexM3異常返回的操作[2]如圖3所示。當(dāng)從異常中返回時,處理器可能會處于以下情況之一[4]:

◆ 尾鏈到一個已掛起的異常,該異常比棧中所有異常的優(yōu)先級都高;

◆ 如果沒有掛起的異常,或是棧中最高優(yōu)先級的異常比掛起的最高優(yōu)先級異常具有更高的優(yōu)先級,則返回到最近一個已壓棧的ISR;

◆ 果沒有異常已經(jīng)掛起或位于棧中,則返回到Tread模式。

為了應(yīng)對異常返回階段可能遇到的新的更高優(yōu)先級異常,CortexM3支持完全基于硬件的尾鏈機制,簡化了激活的和未決的異常之間的移動,能夠在兩個異常之間沒有多余的狀態(tài)保存和恢復(fù)指令的情況下實現(xiàn)back?to?back處理。尾鏈發(fā)生的2個條件[2]:異常返回時產(chǎn)生了新的異常;掛起的異常的優(yōu)先級比所有被壓棧的異常的優(yōu)先級都高。

尾鏈發(fā)生后,CortexM3處理過程如圖3中尾鏈分支所示。這時,CortexM3處理器終止正在進行的出棧操作并跳過新異常進入時的壓棧操作,同時通過Ibus立即取出掛起異常的向量。在退出前一個ISR返回操作6個周期后,開始執(zhí)行尾鏈的ISR.

圖3 異常的返回

3 CortexM3和ARM7中斷控制器比較

在過去的十年中,基于ARMv4的ARM7系列微控制器廣泛應(yīng)用在各個領(lǐng)域。在ARM7系列中,并沒有對中斷進行獨立的服務(wù),而是通過犧牲處理器一定的性能來換取有效的中斷響應(yīng)和中斷處理機制。CortexM3高度耦合的NVIC可以實現(xiàn)硬件中斷處理,同時支持遲到和尾鏈機制,加快了異常響應(yīng)的速度,充分發(fā)揮了處理器的性能。

圖4 為CorexM3和ARM7在中斷控制器結(jié)構(gòu)方面的差異。

比較可知,NVIC是直接作為CortexM3處理器的一部分,集成在處理器核內(nèi)部;而VIC只是游離在ARM7內(nèi)核的外圍,這樣就必然占用內(nèi)核資源,影響了處理速度。CortexM3和ARM7中斷控制器在功能和實現(xiàn)方式上的差異如表2所列。

圖4 CortexM3和ARM7中斷控制器結(jié)構(gòu)的差異

表2 CortexM3和ARM7中斷控制器功能和實現(xiàn)方式的差異

3.1 處理器響應(yīng)單個異常

CortexM3和ARM7異常處理過程如圖5所示。

圖5 CortexM3和ARM7異常處理過程

ARM7處理器的異常開銷:

CortexM3處理器的異常開銷:

其中,TARM7為ARM7處理異常的時間開銷;TARM7_PUSH和TARM7_POP為ARM7進行壓棧和出棧的操作時間;TCoretxM3為CortexM3處理異常的時間開銷;TM3_PUSH和TM3_POP為CortexM3進行壓棧和出棧的操作時間。

可見,由于采用處理器狀態(tài)硬件保存,CortexM3處理器少用了18周期,節(jié)省了42.8%的異常開銷。

3.2 處理器響應(yīng)遲到異常

CortexM3和ARM7在處理遲到高優(yōu)先級異常時的差異如圖6所示。

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

圖6 NVIC對遲到的具有更高優(yōu)先級異常的響應(yīng)

在上面的例子中,ARM7處理器的異常開銷:

CortexM3處理器的異常開銷:

其中,TARM7_later和TM3_later分別為ARM7和CortexM3處理遲到異常所用的時間開銷;Ttailchaining為CortexM3處理尾鏈所用的時間。

通過計算可以看出,CortexM3少用了44周期,節(jié)省65%的異常開銷。

3.3 處理器處理back?to?back異常

若一個新的異常在上一個異常寄存器出棧時到來,ARM7和CortexM3的處理方式也有很大不同。CortexM3和ARM7在處理 back?to?back異常時的差異如圖7所示。ARM7繼續(xù)當(dāng)前的出棧操作,在出棧操作完成后,處理器為執(zhí)行ISR2進行壓棧操作,然后執(zhí)行 ISR2.其實,這時候處理器出棧和壓棧的內(nèi)容是一致的。CortexM3同樣優(yōu)化了這個階段的操作,引進了尾鏈機制。當(dāng)IRQ2到來時,CortexM3立即中止已經(jīng)進行了8個周期的出棧操作,轉(zhuǎn)而進行尾鏈操作,然后執(zhí)行ISR2.

圖7 NVIC搶占出棧

在處理back?to?back異常時,ARM7處理器用在ISR1到ISR2轉(zhuǎn)換的異常開銷:

CortexM3處理器用在ISR1到ISR2轉(zhuǎn)換的異常開銷:

其中,TARM_btb和TM3_btb分別為ARM7和CortexM3處理back?to?back異常轉(zhuǎn)換所用的時間開銷;TCANcel為發(fā)生尾鏈時CortexM3已用于狀態(tài)恢復(fù)的時間。

通過計算可以看出,CortexM3少用了28周期。其實,Cort

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

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當(dāng)下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應(yīng)用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉