《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > ARM S3C4510B系統中的異常中斷技術
ARM S3C4510B系統中的異常中斷技術
摘要: 本文根據S3C4510B系統的特點,分析了該系統中七種異常中斷的功能及特點。并給出了SWI異常中斷(外部中斷)和IRQ異常中斷(軟件中斷)的應用實例代碼。
關鍵詞: ARM S3C4510B SWI
Abstract:
Key words :

引言

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

1 S3C4510B系統中的異常中斷

1.1 S3C4510B系統異常中斷的特點

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

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

1.2 S3C4510B系統中的異常中斷的類型

S3C4510B擁有七種不同的異常中斷類型,分別適應于不同的中斷需要。根據ARM系列處理器的特點,各種異常中斷對應于ARM系列的不同工作模式。其種類和對應關系如表1所示。

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

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

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

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

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

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

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

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

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

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

整個響應與返回的過程如圖1所示。

39.jpg

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

2 S3C4510B系統中的異常中斷處理程序的安裝

S3C4510B系統通過異常向量表安裝異常中斷處理程序,即將異常向量表指向異常中斷處理程序的入口,實現面向異常中斷的跳轉。這里需要介紹一下 S3C4510B系統的中斷向量表。在S3C4510B系統中,無論在地址重映射之前還是之后,異常中斷向量表的入口地址為固定的(見表1)。當系統運行到滿足異常中斷條件而產生異常中斷時,系統將自動跳入相應的異常中斷向量表中。而在異常向量表中保存的,正是利用跳轉指令或ldr指令指向該中斷的異常中斷處理程序的指令程序,這樣就實現了異常中斷處理程序的安裝。以SWI軟中斷為例,異常中斷安裝的基本順序如圖2所示,其中異常中斷向量的地址是固定的,其他地址為假設的。

2.1 利用跳轉指令實現異常中斷的安裝

將BL指令放置到中斷向量表的特定位置,跳轉目標地址為中斷處理程序的首地址,便可直接實現異常中斷的安裝。其優點是BL指令可以直接保存地址,缺點是BL的跳轉范圍只有32MB的地址空間,如bl SWI_Handler。

2.2 利用ldr指令實現異常中斷的安裝

利用ldr直接向程序計數器PC中賦值也可以實現中斷處理程序的安裝。先要將異常中斷處理程序首地址的絕對地址放在鄰近的一個存儲單元中,然后用ldr命令將該內存單元中的地址讀取到PC中。其優點是可調用程序的范圍不受限制,如:

ldr pc,SWI_ADDR
……
SWI_ADDR dcd SWI_Handler

以上兩種安裝方法各有優缺點,需要根據實際情況來選擇。 電子技術書籍網

3 S3C4510B系統中SWI異常中斷實例

S3C4510B中的SWI指令可以用來實現RTOS中的系統功能調用。它由用戶模式下當前執行的指令引發,通過一個24位的立即數來指代SWI需要調用的系統功能,調用執行的過程在特權模式中進行。

3.1 SWI異常中斷的處理程序

通常我們把SWI的中斷處理程序分為兩級,分別完成立即數的讀取和功能調用的執行。其指令代碼如下:
……

stmfd sp!,{r0-r12,lr}
保護現場,保存寄存器的值
ldr r0,[lr,#-4]
lr寄存器保存指令
bic r0,r0,#0XFF000000 ;讀取指令中的24位立即數
……
cmp R0,#MaxOfSWI
判斷立即數是否有效
ldrls pc,[pc,r0,lsl #2]
b OutOfSWIRange ;超出范圍
JumpListofSWI
dcd SWIPro_0
dcd SWIPro_1
……
其他所有的軟中斷入口
SWIPro_0
進入SWI對應立即數0的中斷處理程序
……
對應立即數0的中斷處理程序
b EndOfSWI
SWIPro0
進入SWI對應立即數1的中斷處理程序
……
對應立即數1的中斷處理程序
b EndOfSWI
……
其他的SWI處理程序
EndOfSWI
1dmfd sp!,{r0-r12,pc}^
恢復各寄存器

3.2 SWI異常中斷的調用與返回

對于SWI異常中斷的調用要根據中斷現場所處的處理器模式進行調用。通常用戶模式下調用SWI功能只需將處理器所需要的參數存放于寄存器中,然后調用相應功能號的系統功能。

Mov r0,#80
假設參數為#80
swi 0X1
SWI中斷立即數1

由于SWI中斷功能調用在特權模式下執行,故而當在特權模式下調用SWI功能時,必須對當前模式下的SPSR和寄存器LR進行保存。
stmfd sp!,{r0-r12,lr}
保存寄存器
mov r1,sp
mov r0, spsr_svc
stmfd sp!,{r0} ;保存SPSR
……
讀取立即數,調用SWI中斷處理程序
ldmfd sp!,{r0}  ;恢復SPSR
msr spsr_svc, r0
ldmdf sp!,{r0-r12,lr}^ ;恢復其他寄存器

4 S3C4510B系統中的IRQ異常中斷實例

4.1 IRQ異常中斷的產生

S3C4510B處理器系統常用于進行外部異常的響應和操作系統進程的控制。CPSR寄存器的I控制位置0時,處理器在指令邊界查詢是否有IRQ請求,系統的外部中斷管理器或者外設通過使能處理器的IRQ輸入管腳產生IRQ異常中斷。

4.2 IRQ異常中斷的處理程序

IRQ異常中斷產生后,根據中斷向量的指令跳入相應的中斷處理程序。系統的外圍中斷管理硬件會將所用的IRQ中斷請求按照優先級進行排列,把最高優先級的IRQ中斷的信息放入寄存器中。通常的IRQ中斷處理程序也需要保存返回地址、寄存器,而且需要屏蔽IRQ中斷,以保證優先級較高的中斷完全處理。
sub lr,lr,#4
stmfd sp!,{lr}
保存返回地址
mrs r14,spsr_irq
stmfd sp!,[r12,r14]
保存r12,spsr
mov r12,#IntBase
讀取中斷管理接口的基址

ldr r12,[r12,#IntLevel]
計算當前中斷的物理地址
mrs r14,cpsr
bic r14,r14,#0X80
清零IRQ中斷禁止位
msr cpsr_irq,r14
開IRQ中斷
ldr pc,[ pc,r12,lsr #2]
跳轉到相應的中斷處理程序
dcd PirQ0Handler
dcd PirQ1Handler

dcd PirQnHandler
優先級為n的中斷處理程序地址
PirQ0Handler
stmfd sp!,{r0-r11}
……
優先級為1的中斷處理程序
ldmfd sp!,{r0-r11}
msr spsr_irq,r14
恢復r12和spsr
ldmfd sp!,{pc}^ ;中段返回
……
dcd PirQnHandler
中斷優先級為N的中斷處理程序
……

4.3 IRQ異常中斷在進程控制中的應用

S3C4510B處理器系統中的進程之間的切換也是通過IRQ來完成的。操作系統中的每一個進程都由進程控制塊PCB來表示,PCB中包含了進程相關的信息。比如,當某一進程進行到一定的程度時,利用IRQ中斷將當前進程中斷,保存需要保存的寄存器的值之后,切換到另一進程中執行。

5 結束語

S3C4510B的異常中斷機制較為復雜,但也正是因為其復雜的機制,使我們在開發的過程中有了更靈活的選擇。用好了異常中斷,不僅可以實現系統的實時響應,而且對于提高系統效率和提升整體性能方面都有著很大的幫助。希望本文能夠對S3C4510B系統的開發者有所幫助。

參考文獻

1 杜春雷.ARM體系結構與編程. 北京:清華大學出版社
2 馬忠梅,馬廣云等.ARM嵌入式處理器結構與應用基礎. 北京:北京航空航天大學出版社,2002.6
3 S3c4510b Data Sheet. SAMSUNG.1999.3
4 ARM Limited. Developer suit(Version 1.1), Assembler Guide.ARM DUI 0068A,2000 

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          欧美777四色影视在线| 国产精品高精视频免费| 欧美日韩在线播| 老妇喷水一区二区三区| 国产精品久久久久秋霞鲁丝| 午夜精品av| 欧美亚洲一级| 欧美激情aaaa| 久久婷婷久久一区二区三区| 99香蕉国产精品偷在线观看| 国产三级精品三级| 香蕉成人啪国产精品视频综合网| 伊人久久大香线蕉av超碰演员| 国产欧美日韩综合精品二区| 中文有码久久| 欧美黑人多人双交| 91久久久精品| 久久精品国产99| 精品福利av| 一区二区高清视频| 亚洲欧美在线免费| 亚洲欧美www| 国产精品免费小视频| 国产亚洲成年网址在线观看| 欧美日韩中文字幕精品| 香蕉久久夜色精品国产| 国产日韩欧美一区二区三区在线观看| 亚洲美洲欧洲综合国产一区| 国产欧美精品一区| 欧美三级电影精品| 久久国产精品电影| 国产精品视频自拍| 亚洲一区二区三区久久| 欧美女主播在线| 国产在线观看一区| 又紧又大又爽精品一区二区| 欧美人在线视频| 欧美日韩亚洲成人| 国产精品亚洲综合| 另类春色校园亚洲| 国产精品丝袜久久久久久app| 一区二区三区日韩欧美精品| 欧美亚洲综合久久| 久久精品成人一区二区三区蜜臀| 欧美国产日韩精品| 欧美韩日视频| 久久精品一区二区三区不卡牛牛| 日韩午夜电影在线观看| 欧美黑人在线观看| 99v久久综合狠狠综合久久| 国产亚洲欧美日韩美女| 亚洲综合大片69999| 日韩一级精品| 午夜久久电影网| 一区二区三区在线观看视频| 亚洲午夜久久久| 黄色在线成人| 在线观看欧美日本| 在线观看日韩国产| 久久成人免费视频| 欧美午夜在线视频| 久久婷婷综合激情| 亚洲一区二区综合| 美女任你摸久久| 狠狠综合久久av一区二区老牛| 国产日产高清欧美一区二区三区| 国产喷白浆一区二区三区| 国产精品免费网站在线观看| 日韩视频在线免费观看| 欧美日韩国产影片| 开元免费观看欧美电视剧网站| 亚洲日本一区二区三区| 久久综合久久美利坚合众国| 欧美国产在线观看| 一区二区三区精密机械公司| 欧美四级电影网站| 欧美视频一区二区| 欧美日韩国产成人在线91| 久久久久国产精品一区| 亚洲精品自在久久| 国产精品亚洲片夜色在线| 亚洲一区日韩在线| 久久久久久久91| 欧美看片网站| 国产精品高清在线观看| 欧美日韩在线观看一区二区三区| 欧美午夜在线视频| 久久蜜桃香蕉精品一区二区三区| 国产精品高潮视频| 国产日韩欧美日韩| 亚洲七七久久综合桃花剧情介绍| 99精品久久免费看蜜臀剧情介绍| 欧美性猛交99久久久久99按摩| 久久在线免费视频| 伊人狠狠色丁香综合尤物| 国产精品视频yy9099| 亚洲视频碰碰| 国产欧美精品日韩区二区麻豆天美| 亚洲在线一区二区| 亚洲一级免费视频| 久久精品亚洲乱码伦伦中文| 免费成人美女女| 亚洲人永久免费| 亚洲天堂久久| 国产欧美日韩综合一区在线观看| 国产精品久久久久久av福利软件| 国产日韩亚洲欧美精品| 性欧美超级视频| 99国内精品久久久久久久软件| 国产精品久久97| 亚洲日本中文字幕| 欧美人与禽猛交乱配视频| 一本色道久久88亚洲综合88| 亚洲综合视频网| 国产麻豆精品在线观看| 免费观看国产成人| 国产精品视频导航| 另类国产ts人妖高潮视频| 亚洲一级电影| 在线视频你懂得一区| 9人人澡人人爽人人精品| 欧美一级日韩一级| 国产精品进线69影院| 一本色道久久综合| 亚洲国产精品女人久久久| 免费观看成人www动漫视频| 免费91麻豆精品国产自产在线观看| 亚洲人屁股眼子交8| 日韩亚洲欧美在线观看| 欧美日韩亚洲在线| 久久久久久国产精品mv| 国产亚洲精品久久飘花| 欧美久久精品午夜青青大伊人| 最新日韩av| 亚洲免费网站| 在线一区二区三区四区| 狠狠色狠狠色综合日日小说| 久久九九99视频| 在线观看欧美精品| 国产精品成人国产乱一区| 国产精品美女久久久免费| 亚洲美女一区| 欧美国产日韩亚洲一区| 久久久久一区| 在线观看日韩av先锋影音电影院| 国产一区二区中文字幕免费看| 国产精品xvideos88| 亚洲精品日韩在线| 欧美一区精品| 午夜精品久久久久久久99樱桃| 亚洲视频一区| 在线观看的日韩av| 亚洲专区一二三| 亚洲欧美伊人| 国产一区深夜福利| 欧美日韩八区| 亚洲精品网址在线观看| 欧美黄免费看| 欧美极品在线播放| 国产亚洲欧美另类一区二区三区| av成人手机在线| 亚洲美女在线视频| 黑人中文字幕一区二区三区| 欧美成人在线免费视频| 欧美精品成人91久久久久久久| 欧美特黄一级| 亚洲女ⅴideoshd黑人| 欧美顶级少妇做爰| 国内外成人在线视频| 亚洲欧美久久久| 美女999久久久精品视频| 亚洲另类自拍| 国产精品日韩久久久久| 欧美日韩国产成人在线观看| 国产精品有限公司| 欧美日韩一区三区| 欧美午夜精品伦理| 亚洲国产成人高清精品| 欧美精品一区二区三区在线看午夜| 久久久精品一区二区三区| 国产精品久久久久久久久久三级| 亚洲国产精品成人综合色在线婷婷| 久久国产精品一区二区三区| 亚洲一区二区三区在线播放| 国产精品久久久久久久久久免费看| 一区二区三区在线观看国产| 国产精品美女在线观看| 国产亚洲制服色| 亚洲欧美日韩在线综合| 欧美日韩福利| 日韩系列欧美系列| 欧美伦理a级免费电影| 国产精品国产三级国产aⅴ入口| 久久黄色级2电影| 黄色av一区| 在线观看日韩专区| 欧美黄色片免费观看| 欧美无乱码久久久免费午夜一区| 欧美日韩在线免费| 尤物99国产成人精品视频| 免费亚洲一区| 亚洲精品久久久久| 欧美中文字幕视频在线观看| 欧美日韩国产成人高清视频| 亚洲第一页自拍| 国产欧美精品在线观看| 一区二区冒白浆视频| 亚洲国产精品女人久久久| 日韩一区二区免费看| 国产自产2019最新不卡| 美脚丝袜一区二区三区在线观看| 亚洲一级高清| 美女被久久久| 狠狠色狠狠色综合日日小说| 欧美在线视频不卡| 欧美精品在线一区二区三区| 一本色道久久综合精品竹菊| 极品裸体白嫩激情啪啪国产精品| 国产精品电影观看| 在线日韩中文字幕| 国产精品午夜视频| 性久久久久久久久久久久| 欧美国产日韩精品免费观看| 欧美三级中文字幕在线观看| 国产精品亚洲视频| 欧美午夜宅男影院在线观看| 欧美激情国产精品| 国产九色精品成人porny| 欧美成人精品激情在线观看| 国产精品jizz在线观看美国| 日韩五码在线| 国内成人精品视频| 午夜精品美女久久久久av福利| 在线亚洲欧美视频| 99精品视频免费| 99视频热这里只有精品免费| 开心色5月久久精品| 国产综合精品| 欧美视频精品在线观看| 久久精品道一区二区三区| 欧美一区二区三区久久精品茉莉花| 欧美一级视频精品观看| 激情国产一区二区| 国产欧美日韩一区二区三区| 一区在线影院| 蜜臀av一级做a爰片久久| 亚洲欧美日韩另类| 国产精品videosex极品| 亚洲日韩第九十九页| 影音先锋亚洲视频| 国产综合欧美在线看| 老巨人导航500精品| 欧美激情视频一区二区三区不卡| 国产精品v欧美精品v日韩精品| 久久婷婷国产综合国色天香| 狠狠色丁香婷婷综合| 91久久国产自产拍夜夜嗨| 亚洲国产另类 国产精品国产免费| 午夜精品久久久久久久久久久久久| 娇妻被交换粗又大又硬视频欧美| 欧美日韩爆操| 美女国内精品自产拍在线播放| 欧美高清在线观看| 国产精品av一区二区| 亚洲视屏在线播放| 亚洲欧洲在线看| 日韩视频免费观看| 国产专区欧美精品| 久久久综合网| 国产精品mv在线观看| 欧美日韩久久| 美国成人直播| 免费一级欧美片在线观看| 免费亚洲婷婷| 国产精品毛片a∨一区二区三区| 欧美日韩国产综合视频在线| 久久久久国产一区二区三区| 久久99在线观看| 一区二区三区久久| 亚洲天堂成人在线视频| 日韩天堂在线视频| 一本色道久久综合亚洲二区三区| 老司机一区二区三区| 国内精品美女在线观看| 精东粉嫩av免费一区二区三区| 亚洲国产精品va在线观看黑人| 国产综合色产在线精品| 亚洲第一伊人| 亚洲激情综合| 一卡二卡3卡四卡高清精品视频| 亚洲黄色高清| 国产精品家庭影院| 在线观看欧美| 免费一级欧美在线大片| 国产精品美女久久福利网站| 欧美精品一区二区精品网| 亚洲精品自在久久| 欧美激情视频网站| 亚洲欧美视频在线| 亚洲国产精品日韩| 亚洲国产一区二区三区青草影视| 99re热这里只有精品免费视频| 99v久久综合狠狠综合久久| 99精品视频一区| 亚洲精品一二| 国产伦精品免费视频| 另类天堂av| 欧美精品网站| 欧美另类女人| 一本久久知道综合久久| 91久久精品一区二区三区| 国产老肥熟一区二区三区| 亚洲日韩第九十九页| 欧美精品www| 国产精品久久久久久久久免费桃花| 欧美体内谢she精2性欧美| 久久久久久久激情视频| 日韩视频不卡中文| 欧美精品久久久久久久久久| 99在线热播精品免费99热| 国产一区二区成人| 欧美一级久久久久久久大片| 免费日韩成人| 美女被久久久| 欧美日一区二区在线观看| 美女黄毛**国产精品啪啪| 亚洲精品女人| 亚洲黄一区二区|