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

引言

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

1 S3C4510B系統(tǒng)中的異常中斷

1.1 S3C4510B系統(tǒng)異常中斷的特點

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

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

1.2 S3C4510B系統(tǒng)中的異常中斷的類型

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

其中,復(fù)位中斷是優(yōu)先級最高的中斷。在復(fù)位引腳有效的前提下,系統(tǒng)加電或系統(tǒng)復(fù)位時都會引起復(fù)位中斷。數(shù)據(jù)訪問中止是在數(shù)據(jù)訪問指令的目標(biāo)地址不存在或者該地址不允許當(dāng)前指令訪問的情況下產(chǎn)生的。指令預(yù)取中止中斷是處理器或系統(tǒng)協(xié)處理器認(rèn)為當(dāng)前指令未定義,當(dāng)系統(tǒng)預(yù)取該指令時,本中斷執(zhí)行。未定義中止在處理器或系統(tǒng)協(xié)處理器認(rèn)為當(dāng)前指令未定義時產(chǎn)生,故而可以根據(jù)該異常中斷機制仿真浮點向量運算。快速中斷和外部中斷都是在對應(yīng)的中斷請求引腳有效,且狀態(tài)寄存器中的相應(yīng)中斷禁止標(biāo)志位清零時產(chǎn)生。其中的外部中斷還可以用來進行各系統(tǒng)進程的切換;軟中斷由用戶定義,在程序運行時由SWI指令調(diào)用,可用于用戶模式下的程序調(diào)用特權(quán)模式指令。在RTOS系統(tǒng)中可以通過該中斷機制實現(xiàn)系統(tǒng)功能調(diào)用。

1.3 S3C4510B系統(tǒng)對異常中斷的響應(yīng)

S3C4510B系統(tǒng)對異常中斷的響應(yīng)流程如下:

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

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

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

(4) 處理程序計數(shù)器PC。將PC值設(shè)為相應(yīng)的中斷向量的地址,從而實現(xiàn)跳轉(zhuǎn)以執(zhí)行中斷程序。

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

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

(2) 將返回地址復(fù)制到程序計數(shù)器。這樣程序?qū)⒎祷氐疆惓V袛喈a(chǎn)生的下一條指令或出現(xiàn)問題的指令處執(zhí)行。

整個響應(yīng)與返回的過程如圖1所示。

39.jpg

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

2 S3C4510B系統(tǒng)中的異常中斷處理程序的安裝

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

2.1 利用跳轉(zhuǎn)指令實現(xiàn)異常中斷的安裝

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

2.2 利用ldr指令實現(xiàn)異常中斷的安裝

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

ldr pc,SWI_ADDR
……
SWI_ADDR dcd SWI_Handler

以上兩種安裝方法各有優(yōu)缺點,需要根據(jù)實際情況來選擇。 電子技術(shù)書籍網(wǎng)

3 S3C4510B系統(tǒng)中SWI異常中斷實例

S3C4510B中的SWI指令可以用來實現(xiàn)RTOS中的系統(tǒng)功能調(diào)用。它由用戶模式下當(dāng)前執(zhí)行的指令引發(fā),通過一個24位的立即數(shù)來指代SWI需要調(diào)用的系統(tǒng)功能,調(diào)用執(zhí)行的過程在特權(quán)模式中進行。

3.1 SWI異常中斷的處理程序

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

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

3.2 SWI異常中斷的調(diào)用與返回

對于SWI異常中斷的調(diào)用要根據(jù)中斷現(xiàn)場所處的處理器模式進行調(diào)用。通常用戶模式下調(diào)用SWI功能只需將處理器所需要的參數(shù)存放于寄存器中,然后調(diào)用相應(yīng)功能號的系統(tǒng)功能。

Mov r0,#80
假設(shè)參數(shù)為#80
swi 0X1
SWI中斷立即數(shù)1

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

4 S3C4510B系統(tǒng)中的IRQ異常中斷實例

4.1 IRQ異常中斷的產(chǎn)生

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

4.2 IRQ異常中斷的處理程序

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

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

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

4.3 IRQ異常中斷在進程控制中的應(yīng)用

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

5 結(jié)束語

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

參考文獻

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国产精品99免费看 | 久久综合给合| 午夜精品成人在线| 亚洲视频axxx| 一本色道久久精品| 亚洲精品在线免费观看视频| 亚洲国产三级在线| 久久成人综合视频| 亚洲免费中文字幕| 亚洲欧美精品一区| 亚洲女人天堂av| 亚洲欧美日韩国产综合在线 | 亚洲激情亚洲| 亚洲国产欧美不卡在线观看| 亚洲国产精品久久人人爱蜜臀| 欧美中文在线观看| 久久精品国产清高在天天线| 亚洲第一成人在线| 亚洲激情社区| 亚洲美女色禁图| 日韩系列欧美系列| 亚洲特色特黄| 亚洲欧美日本视频在线观看| 性色av一区二区三区在线观看| 欧美一级大片在线观看| 久久国产毛片| 美女诱惑黄网站一区| 欧美大片在线观看一区二区| 欧美激情精品久久久久久大尺度 | 韩日欧美一区二区三区| 激情91久久| 亚洲一区免费网站| 一区二区三区 在线观看视频| 日韩一二三区视频| 在线视频你懂得一区| 亚洲免费视频观看| 欧美伊久线香蕉线新在线| 久久久福利视频| 欧美成人资源| 欧美视频一区二区三区…| 国产精品毛片a∨一区二区三区|国| 国产精品自拍小视频| 激情综合色丁香一区二区| 亚洲大胆美女视频| 99re热这里只有精品视频| 亚洲一区二区三区在线播放| 久久精品国产免费观看| 日韩一级大片| 欧美一区二区黄| 美腿丝袜亚洲色图| 欧美日韩亚洲综合| 国产日韩久久| 91久久综合亚洲鲁鲁五月天| 亚洲图片欧洲图片av| 久久精品国产成人| 亚洲一区3d动漫同人无遮挡| 久久久久国产精品人| 欧美a级大片| 国产精品美女黄网| 在线观看av不卡| 一区二区三区产品免费精品久久75| 先锋a资源在线看亚洲| 亚洲精品一区二区三区av| 午夜精品久久久久久久蜜桃app| 久久中文字幕一区| 欧美性做爰猛烈叫床潮| 在线观看av不卡| 亚洲综合首页| 日韩视频一区二区三区在线播放免费观看 | 亚洲黄页一区| 亚洲欧美日韩综合一区| 亚洲卡通欧美制服中文| 欧美一区二区在线| 欧美日韩国产综合新一区| 国产亚洲欧美一区在线观看| 99热这里只有成人精品国产| 久久精品人人爽| 午夜精品三级视频福利| 欧美激情a∨在线视频播放| 加勒比av一区二区| 欧美国产国产综合| 国产日韩一区二区三区在线| 亚洲精选视频免费看| 久久精品视频在线播放| 亚洲欧美日韩国产中文| 欧美黄色精品| 黄色工厂这里只有精品| 亚洲一区久久久| 一区二区三区视频在线播放| 裸体歌舞表演一区二区| 国产精品一区二区久久| 亚洲九九九在线观看| 亚洲国产高清在线| 久久精品2019中文字幕| 欧美性猛交xxxx乱大交蜜桃| 亚洲二区在线| 亚洲第一狼人社区| 久久国产精品久久久久久| 国产精品久久久久久久久免费 | 欧美在线观看网址综合| 欧美亚日韩国产aⅴ精品中极品| 亚洲日韩成人| 亚洲精品乱码久久久久久蜜桃麻豆 | 国产日韩av在线播放| 一区二区三区精品视频| 一本色道久久综合狠狠躁篇怎么玩| 蜜臀av一级做a爰片久久| 国模吧视频一区| 午夜一级在线看亚洲| 午夜欧美视频| 国产精品美女久久久久久2018 | 亚洲精品国产系列| 亚洲高清不卡在线| 久久精品中文字幕免费mv| 国产乱码精品| 亚洲永久在线| 午夜亚洲性色福利视频| 国产精品美女久久久免费| 一区二区三区免费看| 亚洲一区二区三区中文字幕在线| 欧美日韩精品免费观看视频完整| 亚洲精品日韩综合观看成人91| 日韩亚洲欧美一区| 欧美欧美全黄| 一区二区精品在线| 亚洲一区免费视频| 国产精品久久久久久久午夜| 亚洲图片在线观看| 午夜精品亚洲一区二区三区嫩草| 国产偷自视频区视频一区二区| 亚洲乱码国产乱码精品精天堂| 久久一区中文字幕| 激情视频一区二区| 亚洲激情在线视频| 欧美成人精品福利| 亚洲激情影院| 亚洲天堂黄色| 国产精品美女黄网| 欧美亚洲尤物久久| 久久在线视频| 亚洲黄色片网站| 一本一道久久综合狠狠老精东影业| 欧美日韩另类视频| 亚洲午夜一区| 久久国产精品久久久| 精品不卡视频| 亚洲狼人综合| 国产精品成人观看视频免费 | 免费不卡中文字幕视频| 最近看过的日韩成人| 中日韩美女免费视频网站在线观看| 欧美日韩精品一本二本三本| 亚洲视频图片小说| 久久久久久高潮国产精品视| 在线观看视频亚洲| 99re热精品| 国产精品久久久久久福利一牛影视| 亚洲婷婷综合久久一本伊一区| 久久成人免费电影| 亚洲第一区在线| 亚洲视频999| 国产一区二区按摩在线观看| 亚洲级视频在线观看免费1级| 欧美日本网站| 亚洲在线观看视频| 久久久久久免费| 亚洲欧洲一区二区三区在线观看| 亚洲一区免费| 国语对白精品一区二区| 日韩视频―中文字幕| 国产精品久久久久秋霞鲁丝| 欧美伊人久久| 欧美日韩国产精品| 欧美一区二区三区免费观看| 欧美激情一二区| 亚洲欧美日韩国产中文在线| 欧美福利在线观看| 亚洲免费影视| 欧美风情在线观看| 午夜伦理片一区| 欧美成人一区二区三区| 亚洲午夜一区| 欧美精品一区二区三区在线播放| 亚洲在线观看免费视频| 欧美国产亚洲精品久久久8v| 亚洲欧美一区二区原创| 欧美极品一区二区三区| 欧美一级大片在线观看| 欧美日本亚洲| 久久成人综合网| 欧美午夜一区二区福利视频| 91久久精品一区二区别| 国产欧美日韩91| 一区二区三区视频在线| 影音先锋在线一区| 性欧美办公室18xxxxhd| 亚洲成色www久久网站| 亚洲一级黄色| 欧美激情视频一区二区三区不卡| 亚洲欧美在线视频观看|