歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> S3C2440中斷控制系統

S3C2440中斷控制系統

日期:2017/3/1 10:27:30   编辑:Linux編程

1.1 S3C2440系統中斷

CPU和外設構成了計算機系統,CPU和外設之間通過總線進行連接,用於數據通信和控制,CPU管理監視計算機系統中所有硬件,通常以兩種方式來對硬件進行管理監視:

l 查詢方式:CPU不停的去查詢每一個硬件的當前狀態,根據硬件的狀態決定處理與否。好比是工廠裡的檢查員,不停的檢查各個崗位工作狀態,發現情況及時處理。這種方式實現起來簡單,通常用在只有少量外設硬件的系統中,如果一個計算機系統中有很多硬件,這種方式無疑是耗時,低效的,同時還大量占用CPU資源,並且對多任務系統反應遲鈍。

l 中斷方式:當某個硬件產生需要CPU處理的事件時,主動通過一根信號線“告知”CPU,同時設置某個寄存器裡對應的位,CPU一旦發現這根信號線上的電平有變化,就會中斷當前程序,然後去處理發出該中斷請求。這就像是醫院重危病房,病房每張病床床頭有一個應急按鈕,該按鈕連接到病房監控室裡控制台一盞指示燈,只要該張病床出現緊急情況病人按下按鈕,病房監控室裡電鈴會響起,通知醫護人員有緊急情況,醫護人員這時查看控制台上的指示燈,找出具體病房,病床號,直接過去處理緊急情況。中斷處理方式相對查詢方式要復雜的多,並且需要硬件的支持,但是它處理的實時性更高,嵌入式系統裡基本上都使用這種方式來處理。

系統中斷是嵌入式硬件實時地處理內部或外部事件的一種機制。對於不同CPU而言,中斷的處理只是細節不同,大體處理流程都一樣,S3C2440A的中斷控制器結構如下圖所示:

圖3-3 S3C2440中斷控制器

中斷請求由硬件產生,根據中斷源類型分別將中斷信號送到SUBSRCPND(SubSourcePending)和SRCPND(SourcePending)寄存器,SUBSRCPND是子中斷源暫存寄存器,用來保存子中斷源信號,SRCPND是中斷源暫存寄存器,用來保存中斷源信號。中斷信號可通過編程方式屏蔽掉,SUBMASK是子中斷源屏蔽寄存器,可以屏蔽指定的子中斷信號, MASK功能同SUBMASK用來屏蔽中斷源信號。中斷分為兩種模式:一般中斷的和快速中斷,MODE是中斷模式判斷寄存器,用來判斷當前中斷是否為快速中斷,如果為快速中斷直接將快速中斷信號送給ARM內核,如果不是快速中斷,還要將中斷信號進行仲裁選擇。S3C2440A支持多達60種中斷,很有可能多個硬件同時產生中斷請求,這時要求中斷控制器做出裁決,Priority是中斷源優先級仲裁選擇器,當多個中斷產生時,選擇出優先級最高的中斷源進行處理,INTPND是中斷源結果寄存器,裡面存放優先級仲裁出的唯一中斷源。

Copyright © Linux教程網 All Rights Reserved