<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > ARM S3C4510B系統中的異常中斷技術(shù)

ARM S3C4510B系統中的異常中斷技術(shù)

作者: 時(shí)間:2012-03-29 來(lái)源:網(wǎng)絡(luò ) 收藏

引言

本文引用地址:http://dyxdggzs.com/article/171746.htm

隨著(zhù)人們對于電子產(chǎn)品的要求越來(lái)越高,以80C51系列為代表的8位處理器開(kāi)始面臨越來(lái)越多的局限和挑戰,人們對于高性能芯片和嵌入式功能的呼聲也越來(lái)越高。16/32 位的處理器得到了前所未有的關(guān)注和重視。32位體系系列處理器便是其中的代表。處理器是基于7體系16/32位RISC 處理器,內部集成了8KB的CACHE/SDRAM,內嵌EARTHNET控制器,擁有7種處理器模式和內部多線(xiàn)程和外部多處理器的處理器結構。在嵌入式中具有重要意義的系統中也體現了體系獨有的一些的特點(diǎn)。本文根據系統的特點(diǎn),分析了該系統中七種的功能及特點(diǎn)。并給出了SWI(外部中斷)和IRQ異常中斷(軟件中斷)的應用實(shí)例代碼。

1 S3C4510B系統中的異常中斷

1.1 S3C4510B系統異常中斷的特點(diǎn)

S3C4510B系統中控制程序執行流程的方式通常有三種,一是正常程序執行過(guò)程,即根據指令類(lèi)型增加程序計數器PC使程序順序執行;二是通過(guò)跳轉的方式來(lái)控制程序的執行,可以利用跳轉的命令執行跳轉操作,也可以通過(guò)直接修改程序計數器來(lái)達到跳轉的目的;三是異常中斷的方式,可以根據軟件的執行情況,外部設備的異常請求等實(shí)現內部、外部異常的處理,系統功能的調用和程序進(jìn)程的控制等功能。

S3C4510B系統的異常中斷具有以下幾個(gè)特點(diǎn)。首先,作為ARM體系RTOS(實(shí)時(shí)操作系統)組成部分,程序中的異常中斷必須按照ARM體系的要求進(jìn)行處理器模式的轉換。其次,如果對系統的優(yōu)化有需求時(shí),可以進(jìn)行32位的ARM處理指令和16位的THUMB指令的轉換。另外,S3C4510B處理器正常運行時(shí),保存的返回地址是通過(guò)將PC存入LR寄存器完成的,由于中斷產(chǎn)生時(shí)的計數器PC的值有時(shí)已經(jīng)更新,如產(chǎn)生了外部中斷和快速中斷等;有時(shí)可能尚未更新,如軟件中斷和未定義指令中止等,故必須根據實(shí)際情況對返回地址進(jìn)行軟件修正之后才能正確返回。最后還要注意,ARM體系支持c語(yǔ)言和匯編語(yǔ)言程序的相互之間的調用,并有ATPCS 規則進(jìn)行協(xié)調,所以異常中斷處理程序必需按照ATPCS規則進(jìn)行寄存器處理。

1.2 S3C4510B系統中的異常中斷的類(lèi)型

S3C4510B擁有七種不同的異常中斷類(lèi)型,分別適應于不同的中斷需要。根據ARM系列處理器的特點(diǎn),各種異常中斷對應于A(yíng)RM系列的不同工作模式。其種類(lèi)和對應關(guān)系如表1所示。

其中,復位中斷是優(yōu)先級最高的中斷。在復位引腳有效的前提下,系統加電或系統復位時(shí)都會(huì )引起復位中斷。數據訪(fǎng)問(wèn)中止是在數據訪(fǎng)問(wèn)指令的目標地址不存在或者該地址不允許當前指令訪(fǎng)問(wèn)的情況下產(chǎn)生的。指令預取中止中斷是處理器或系統協(xié)處理器認為當前指令未定義,當系統預取該指令時(shí),本中斷執行。未定義中止在處理器或系統協(xié)處理器認為當前指令未定義時(shí)產(chǎn)生,故而可以根據該異常中斷機制仿真浮點(diǎn)向量運算??焖僦袛嗪屯獠恐袛喽际窃趯闹袛嗾埱笠_有效,且狀態(tài)寄存器中的相應中斷禁止標志位清零時(shí)產(chǎn)生。其中的外部中斷還可以用來(lái)進(jìn)行各系統進(jìn)程的切換;軟中斷由用戶(hù)定義,在程序運行時(shí)由SWI指令調用,可用于用戶(hù)模式下的程序調用特權模式指令。在RTOS系統中可以通過(guò)該中斷機制實(shí)現系統功能調用。

1.3 S3C4510B系統對異常中斷的響應

S3C4510B系統對異常中斷的響應流程如下:

(1) 保存處理器當前狀態(tài)寄存器CPSR的值、中斷屏蔽以及各條件標志位到將要執行的異常中斷的SPSR中。 電子電路圖

(2) 設置當前程序狀態(tài)寄存器CPSR的值。其中包括:設置CPSR相應位的值使處理器進(jìn)入特定的處理器模式;按要求屏蔽中斷,通常應該屏蔽IRQ中斷,在FIQ中斷時(shí)屏蔽FIQ中斷。

(3) 設置Lr寄存器。將中斷相應模式的Lr寄存器的值設置為異常中斷的返回地址。

(4) 處理程序計數器PC。將PC值設為相應的中斷向量的地址,從而實(shí)現跳轉以執行中斷程序。

當處理器執行完以上流程之后,處理器已經(jīng)自中斷向量進(jìn)入異常中斷的處理狀態(tài)。異常中斷處理完畢之后,在異常中斷程序的末端,處理器進(jìn)入異常中斷的返回狀態(tài),其流程如下:

(1) 恢復狀態(tài)寄存器。將保存在中斷模式中的SPSR值賦給當前的狀態(tài)寄存器。

(2) 將返回地址復制到程序計數器。這樣程序將返回到異常中斷產(chǎn)生的下一條指令或出現問(wèn)題的指令處執行。

整個(gè)響應與返回的過(guò)程如圖1所示。

39.jpg

需要注意的是,對于不同的異常中斷,其返回地址的計算方法也是不同的。IRQ和FIQ異常中斷產(chǎn)生時(shí),程序計數器PC已經(jīng)更新,而SWI中斷和未定義指令中斷是由當前指令自身產(chǎn)生的,程序計數器PC尚未更新,所以要計算出下一條指令的地址來(lái)執行返回操作;指令預取中止異常中斷和數據訪(fǎng)問(wèn)異常中斷要求返回到出現異常的執行現場(chǎng),重新執行操作。

塵埃粒子計數器相關(guān)文章:塵埃粒子計數器原理

上一頁(yè) 1 2 3 4 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>