在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      新聞中心

      EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM S3C2410X系統(tǒng)中斷編程機制的研究與應用

      ARM S3C2410X系統(tǒng)中斷編程機制的研究與應用

      作者: 時間:2007-09-10 來源:網絡 收藏

      要:本文介紹了 的異常響應和返回過程,重點討論了 中采用IRQ響應外設向CPU請求服務的,并用一個實例展示這種。
      關鍵詞:;IRQ;中斷

      0 引言

      在嵌入式中外部設備的功能實現(xiàn)主要是靠中斷機制來實現(xiàn)的,即將設備功能程序的實現(xiàn)以中斷服務子程序的形式進行組織。中斷功能可以解決CPU內部運行速度遠遠快于外部總線速度而產生的等待延時問題。因此實現(xiàn)中斷的響應,解析中斷源跳轉和中斷返回等操作成為編程的關鍵。這也是困擾初學者的一個難題。中斷處理的編程實現(xiàn)需要深入了解ARM內核和處理器本身的中斷特征,從而設計一種快速簡便的中斷編程機制。

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

      S3C2410X是基于ARM920T內核處理器。該系統(tǒng)提供的FIQ和IRQ異常中斷用于外部設備向CPU請求服務,一般情況下都是采用IRQ。S3C2410X系統(tǒng)中通常在存儲區(qū)的低端固化了一個32字節(jié)的硬件中斷向量表,用來指定各異常中斷及其處理程序的對應關系。

      當一個異常出現(xiàn)后, S3C2410X系統(tǒng)中ARM處理器對異常中斷的響應過程如下:

      (1) 保存處理器當前狀態(tài)、中斷屏蔽位以及各條件標志位。將當前程序狀態(tài)寄存器CPSR的內容保存到將要執(zhí)行的異常中斷對應的SPSR寄存器中。

      (2) 設置當前程序狀態(tài)寄存器CPSR中相應的位。包括設置CPSR中的位,使處理器進入相應的執(zhí)行模式;設置CPSR中的位,禁止IRQ中斷,當進入FIQ模式時,禁止FIQ中斷。

      (3) 將寄存器lr_mode設置成返回地址。

      (4) 將程序計數(shù)器值(PC),設置成該異常中斷的中斷向量地址,從而跳轉到相應的異常中斷處理程序執(zhí)行。

      從異常中斷處理程序中返回包括下面兩個基本操作:

      (1) 恢復被中斷的程序的處理器狀態(tài),即將SPSR_mode寄存器內容復制到當前程序狀態(tài)寄存器CPSR中。

      (2) 返回到發(fā)生異常中斷的指令的下一條指令處繼續(xù)執(zhí)行,即將lr_mode寄存器的內容復制到程序計數(shù)器PC中。

      當異常中斷發(fā)生時,程序計數(shù)器PC所指的位置對于各種不同的異常中斷是不同的,同樣,返回地址對于各種不同的異常中斷也是不同的。例外的是復位異常中斷處理程序不需要返回,因為整個系統(tǒng)是從復位異常中斷處理程序開始執(zhí)行的。

      2 S3C2410X系統(tǒng)的中斷編程機制

      如前所述,S3C2410X系統(tǒng)一般采用IRQ異常中斷來幫助外部設備向CPU請求服務。S3C2410X系統(tǒng)可接受32個異常中斷源,同時也構成了一個IRQ中斷向量表。在該表中可以放置自己編寫的對應中斷源的中斷服務程序入口地址。S3C2410X系統(tǒng)的中斷編程就是基于這張IRQ中斷向量表來進行。具體步驟是:

      (1)在S3C2410X系統(tǒng)初始化程序中放置IRQ異常中斷解析程序的入口地址。通過ARM兩條微指令來實現(xiàn):

      LDR PC, IRQ_Addr

      IRQ_Addr DCD INT_IRQ

      上面代碼中的INT_IRQ是該系統(tǒng)中IRQ解析程序的入口地址。只要有一個IRQ中斷請求,系統(tǒng)就會自動的跳轉到IRQ異常中斷解析程序。

      (2)編寫IRQ中斷解析程序。中斷服務程序通常是由高級語言編寫,不好控制固定地址開始的跳轉流程。然而ARM處理器響應中斷的時候,總是從固定的地址開始的。為了使得上層程序與硬件中斷跳轉聯(lián)系起來,需要編寫一段中間的服務程序來進行連接。這樣的服務程序常被稱作中斷解析程序,通常用ARM匯編指令編寫。IRQ中斷解析程序要做的工作主要是:將相關工作寄存器中的數(shù)據(jù)壓棧保存;查寄存器INTOFFSET找出對應的中斷源,根據(jù)IRQ中斷向量表將該中斷源對應的中斷服務程序的入口地址裝入程序計數(shù)器PC中執(zhí)行。

      (3)編寫對應中斷源的中斷服務程序。流程圖如圖1所示:

      圖1 中斷服務程序流程圖

      其中,中斷現(xiàn)場保存的工作是:切換到System模式,關閉中斷,將中斷返回地址壓棧。中斷返回的工作是:返回到IRQ模式,開中斷,從堆棧中取出返回地址和中斷之前相關工作寄存器中的內容,重新執(zhí)行主程序。中斷服務的工作是具體實現(xiàn)外部設備向CPU請求的中斷服務。

      基于上述三個步驟,總結出S3C2410X系統(tǒng)中斷編程機制圖如圖2所示:

      圖2 S3C2410X系統(tǒng)中斷編程機制圖

      3 S3C2410X系統(tǒng)中斷編程機制的應用實例

      圖2所示的中斷編程機制可以很好的實現(xiàn)S3C2410X系統(tǒng)中任何外設向CPU請求的服務。下面通過一個實例討論這種中斷編程機制:S3C2410X系統(tǒng)中提供了五個16位定時器Timer0、Timer1、Timer2、Timer3、Timer4?,F(xiàn)利用定時器Timer0計數(shù),計數(shù)完畢后產生中斷,向CPU請求的中斷服務是使系統(tǒng)中的二極管Led4點亮一段時間再熄滅。

      依據(jù)上述要求,按照S3C2410X系統(tǒng)中斷編程架構圖編寫了系統(tǒng)初始化程序(startup.s)、應用主程序(main.c)、IRQ中斷解析程序(INT.S)、定時器中斷服務程序(INT_Timer0_shell.s)、點亮二極管Led4程序(Timer0_LISR.c)。這五個程序的流程圖如圖3所示:

      圖3 實例程序流程圖

      值得注意的是在IRQ中斷解析程序INT.s中要定義IRQ32個中斷源向量表。同時將定時器中斷服務程序INT_Timer0_shell.s的入口地址加到向量表中。依據(jù)這個IRQ中斷向量表,IRQ解析程序可以找到定時器0的中斷服務程序的物理地址。代碼如下所示:

      INT_IRQ_Vectors ;// IRQ32個中斷源向量表

      DCD 0 ;// Vector 00

      DCD 0 ;// Vector 01

      DCD 0 ;// Vector 02

      ……

      DCD INT_Timer0_Shell ;// Timer0是10號中斷,INT_Timer0_Shell為定時器0

      的中斷服務程序入口地址

      ………

      DCD 0 ;// Vector 31

      從此例中可以看出,這種中斷編程機制不但可以滿足外設所需要的服務,而且結構流程非常的清晰簡便。

      4 結束語

      本文作者創(chuàng)新點:介紹的中斷編程機制是嵌入式編程中實用的方法,其原理是通用的。當然,在實際開發(fā)中,需要根據(jù)系統(tǒng)處理器ARM內核的中斷特征、處理器自身的中斷控制器特點和實際要求具體細化流程圖中的各個步驟和改寫參考代碼。

      參考文獻:

      [1] 杜春雷 . ARM體系結構與編程[M].清華大學出版社 ,2003
      [2] 龐繼勇,唐婷 .ARM處理器中斷處理的編程實現(xiàn)[J] .電子產品世界 ,2005,2
      [3] 旋極科技 .嵌入式實驗教程[M] .深圳旋極歷通科技有限公司 ,2005
      [4] 王波 .ARM的三種中斷調試方法的探討. 微計算機信息,2006年第1-2期,P130-131、P269
      [5] 季振華 . 基于ARM7TDMI內核的S3C44B0異常處理分析 .微計算機信息,2006年第2-2期,P137-139



      評論


      相關推薦

      技術專區(qū)

      關閉