本文介紹A了RM S3C4510B系統(tǒng)的異常中斷機制,包括異常中斷的分類,響應與返回;中斷處理程序的安裝與調用;SWI,IRQ中斷的實例與關鍵代碼。
引言
隨著人們對于電子產(chǎn)品的要求越來越高,以80C51系列為代表的8位處理器系統(tǒng)開始面臨越來越多的局限和挑戰(zhàn),人們對于高性能芯片和嵌入式功能的呼聲也越來越高。16/32 位的處理器系統(tǒng)得到了前所未有的關注和重視。32位ARM體系系列處理器便是其中的代表。S3C4510B處理器是基于ARM7體系16/32位RISC處理器,內部集成了8KB的CACHE/SDRAM,內嵌EARTHNET控制器,擁有7種處理器模式和內部多線程和外部多處理器的處理器結構。在嵌入式系統(tǒng)中具有重要意義的異常中斷技術在S3C4510B系統(tǒng)中也體現(xiàn)了ARM體系獨有的一些的特點。本文根據(jù)S3C4510B系統(tǒng)的特點,分析了該系統(tǒng)中七種異常中斷的功能及特點。并給出了SWI異常中斷(外部中斷)和IRQ異常中斷(軟件中斷)的應用實例代碼。
1 S3C4510B系統(tǒng)中的異常中斷
1.1 S3C4510B系統(tǒng)異常中斷的特點
S3C4510B系統(tǒng)中控制程序執(zhí)行流程的方式通常有三種,一是正常程序執(zhí)行過程,即根據(jù)指令類型增加程序計數(shù)器PC使程序順序執(zhí)行;二是通過跳轉的方式來控制程序的執(zhí)行,可以利用跳轉的命令執(zhí)行跳轉操作,也可以通過直接修改程序計數(shù)器來達到跳轉的目的;三是異常中斷的方式,可以根據(jù)軟件的執(zhí)行情況,外部設備的異常請求等實現(xiàn)內部、外部異常的處理,系統(tǒng)功能的調用和程序進程的控制等功能。
S3C4510B系統(tǒng)的異常中斷具有以下幾個特點。首先,作為ARM體系RTOS(實時操作系統(tǒng))組成部分,程序中的異常中斷必須按照ARM體系的要求進行處理器模式的轉換。其次,如果對系統(tǒng)的優(yōu)化有需求時,可以進行32位的ARM處理指令和16位的THUMB指令的轉換。另外,S3C4510B處理器正常運行時,保存的返回地址是通過將PC存入LR寄存器完成的,由于中斷產(chǎn)生時的計數(shù)器PC的值有時已經(jīng)更新,如產(chǎn)生了外部中斷和快速中斷等;有時可能尚未更新,如軟件中斷和未定義指令中止等,故必須根據(jù)實際情況對返回地址進行軟件修正之后才能正確返回。最后還要注意,ARM體系支持c語言和匯編語言程序的相互之間的調用,并有ATPCS規(guī)則進行協(xié)調,所以異常中斷處理程序必需按照ATPCS規(guī)則進行寄存器處理。
1.2 S3C4510B系統(tǒng)中的異常中斷的類型
S3C4510B擁有七種不同的異常中斷類型,分別適應于不同的中斷需要。根據(jù)ARM系列處理器的特點,各種異常中斷對應于ARM系列的不同工作模式。其種類和對應關系如表1所示。
其中,復位中斷是優(yōu)先級最高的中斷。在復位引腳有效的前提下,系統(tǒng)加電或系統(tǒng)復位時都會引起復位中斷。數(shù)據(jù)訪問中止是在數(shù)據(jù)訪問指令的目標地址不存在或者該地址不允許當前指令訪問的情況下產(chǎn)生的。指令預取中止中斷是處理器或系統(tǒng)協(xié)處理器認為當前指令未定義,當系統(tǒng)預取該指令時,本中斷執(zhí)行。未定義中止在處理器或系統(tǒng)協(xié)處理器認為當前指令未定義時產(chǎn)生,故而可以根據(jù)該異常中斷機制仿真浮點向量運算。快速中斷和外部中斷都是在對應的中斷請求引腳有效,且狀態(tài)寄存器中的相應中斷禁止標志位清零時產(chǎn)生。其中的外部中斷還可以用來進行各系統(tǒng)進程的切換;軟中斷由用戶定義,在程序運行時由SWI指令調用,可用于用戶模式下的程序調用特權模式指令。在RTOS系統(tǒng)中可以通過該中斷機制實現(xiàn)系統(tǒng)功能調用。