專利名稱:中斷處理方法及中斷處理裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及中斷處理技術(shù)領(lǐng)域,特別是一種中斷處理方法及中斷處理裝置。
背景技術(shù):
一般情況下,中央處理器(CPU)內(nèi)核都提供一些中斷申請信號,比如業(yè)內(nèi)流行的ARM內(nèi)核提供兩種硬件中斷申請信號普通中斷申請(IRQ)和快速中斷申請(FIQ)。在集成CPU內(nèi)核的系統(tǒng)芯片(SOC)中,通常需要處理不止一個用戶中斷,因此需要由一個中斷控制器來完成中斷信號的管理工作,比如中斷允許、中斷屏蔽、中斷仲裁等功能。中斷控制器根據(jù)用戶的需求選擇最高優(yōu)先級的中斷信號交給CPU內(nèi)核進(jìn)行處理。
參照圖1,系統(tǒng)中涉及到中斷處理的部分通常包括CPU內(nèi)核、中斷控制器,作為中斷源(也稱為中斷用戶)的其它硬件模塊。中斷源向中斷控制器提出中斷申請,中斷控制器完成中斷信號的管理工作,并根據(jù)用戶的需求選擇最高優(yōu)先級的中斷申請交給CPU內(nèi)核進(jìn)行處理。CPU內(nèi)核、中斷源和中斷控制器還通過寄存器接口與系統(tǒng)總線相連,CPU通過該系統(tǒng)總線控制中斷控制器和中斷源對應(yīng)的硬件模塊。
一般的SOC芯片,比如三星公司基于ARM7TDMI內(nèi)核的S3C44B0X,對中斷的處理流程如下如果有中斷發(fā)生,則CPU內(nèi)核進(jìn)入系統(tǒng)中斷處理程序,此時CPU內(nèi)核不知道需要處理哪一個具體的中斷申請,所以CPU內(nèi)核首先去讀取中斷控制器的一個中斷掛號狀態(tài)寄存器(IRQ Interrupt PendingStatus,I_ISPR),然后系統(tǒng)中斷處理程序從該寄存器的第0位開始判斷當(dāng)前狀態(tài)位的值是否為有效值1,如果查到了一個有效的狀態(tài)位,則給出該狀態(tài)位的序號,例如第8位為1則序號為8,第20位為1則給出序號為20,將該系號乘以每個中斷向量表的大小再加上中斷向量表的基地址就得到了該中斷向量的地址,從該地址可以讀出實際的用戶中斷服務(wù)程序的地址,然后CPU內(nèi)核執(zhí)行該用戶中斷服務(wù)程序;如果判斷得到當(dāng)前狀態(tài)位的值不是有效值,則跳轉(zhuǎn)到下一個狀態(tài)位繼續(xù)判斷。
在上述CPU內(nèi)核查詢有效的中斷申請的過程中,需要用到比較和跳轉(zhuǎn)操作,跳轉(zhuǎn)操作會降低指令流水線的執(zhí)行效率。因此,上述方法造成了從進(jìn)入系統(tǒng)中斷處理程序到開始執(zhí)行真正的用戶中斷處理程序的時間很長,導(dǎo)致CPU內(nèi)核處理中斷申請的效率低下。并且,從系統(tǒng)中斷處理程序的入口到各個用戶中斷處理程序的入口的執(zhí)行時間是不相同的,亦即不同中斷申請的處理時間相差非常大。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提出了一種中斷處理方法,用以提高CPU內(nèi)核處理中斷申請的效率。本發(fā)明的另一個目的是提供一種中斷處理裝置,用以提高CPU內(nèi)核處理中斷申請的效率。
根據(jù)上述目的,本發(fā)明提供了一種中斷處理方法,該方法在中斷控制器中設(shè)置中斷地址寄存器,該方法還包括以下步驟A.將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址寫入中斷地址寄存器,并將該最高優(yōu)先級中斷申請發(fā)送給CPU內(nèi)核;B.CPU內(nèi)核讀取所述中斷地址寄存器中的地址,并根據(jù)該地址執(zhí)行所述用戶中斷處理程序。
該方法進(jìn)一步預(yù)先在中斷控制器中設(shè)置與中斷申請對應(yīng)的中斷使能寄存器、中斷申請寄存器和用戶中斷地址存儲單元,并且預(yù)先將中斷申請的用戶中斷處理程序的起始地址寫入對應(yīng)的用戶中斷地址存儲單元。步驟A之前進(jìn)一步包括中斷控制器接收到來自中斷源的中斷申請,判斷得出對應(yīng)的中斷使能寄存器為有效時,設(shè)置對應(yīng)的中斷申請寄存器為有效。步驟A中所述將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址寫入中斷地址寄存器的步驟包括在當(dāng)前中斷申請寄存器有效的中斷申請中選擇最高優(yōu)先級的中斷申請;將該最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址從對應(yīng)的用戶中斷地址存儲單元寫入中斷地址寄存器。
該方法進(jìn)一步預(yù)先在中斷控制器中設(shè)置中斷序號寄存器。步驟A中所述將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址從對應(yīng)的用戶中斷地址存儲單元寫入中斷地址寄存器的步驟包括將最高優(yōu)先級中斷申請的序號寫入中斷序號寄存器,根據(jù)該序號將所述地址從對應(yīng)的用戶中斷地址存儲單元寫入中斷地址寄存器。
所述用戶中斷地址存儲單元為用戶中斷地址寄存器或SRAM。
所述用戶中斷地址存儲單元為SRAM。步驟A中所述將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址從SRAM寫入中斷地址寄存器的步驟包括將當(dāng)前最高優(yōu)先級中斷申請的序號寫入中斷序號寄存器,根據(jù)該序號計算得到對應(yīng)的SRAM地址,根據(jù)該SRAM地址將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址從SRAM寫入中斷地址寄存器。
步驟B之后進(jìn)一步包括清除與中斷序號對應(yīng)的中斷申請寄存器的步驟。
步驟B之后進(jìn)一步包括判斷中斷申請寄存器是否有效,并在有效的時候再次執(zhí)行步驟A和B。
本發(fā)明還提供了一種中斷處理裝置,該中斷控制裝置包括包括中斷地址寄存器的中斷控制器,用于將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址寫入中斷地址寄存器,并將該最高優(yōu)先級中斷申請發(fā)送給CPU內(nèi)核;CPU內(nèi)核,用于根據(jù)所述最高優(yōu)先級中斷申請,從中斷地址寄存器中讀取所述地址,并根據(jù)該地址執(zhí)行所述用戶中斷處理程序。
該裝置進(jìn)一步包括向中斷控制器提出中斷申請的中斷源。
所述中斷控制器包括對應(yīng)于每個中斷申請的中斷使能寄存器、中斷申請寄存器、用戶中斷地址存儲單元,其中中斷使能寄存器用于控制在接收到中斷源的中斷申請后是否將對應(yīng)的中斷申請寄存器設(shè)置為有效,中斷申請寄存器用于存儲對應(yīng)的中斷申請是否確效,用戶中斷地址存儲單元用于存儲對應(yīng)的中斷申請的用戶中斷處理程序的起始地址;中斷仲裁器,用于在中斷申請寄存器表示有效的中斷申請中選擇當(dāng)前最高優(yōu)先級的中斷申請,將該最高優(yōu)先級中斷申請的序號寫入中斷序號寄存器,并將該最高優(yōu)先級中斷申請發(fā)送給CPU內(nèi)核;中斷序號寄存器,用于存儲所述最高優(yōu)先級中斷申請的序號。
所述用戶中斷地址存儲單元為用戶中斷地址寄存器或SRAM。
從上述方案中可以看出,由于本發(fā)明中中斷控制器將發(fā)送給CPU內(nèi)核處理的最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址存入了中斷地址寄存器,CPU內(nèi)核直接讀取中斷地址寄存器中的地址并根據(jù)該地址執(zhí)行用戶中斷處理程序,不需要CPU內(nèi)核再執(zhí)行判斷和跳轉(zhuǎn)操作,而是用硬件實現(xiàn)了原來由軟件來完成的冗長的中斷源選擇過程,大大縮短了CPU內(nèi)核開始執(zhí)行用戶中斷處理程序的時間,提高了CPU內(nèi)核處理中斷申請的效率,從而提高了SOC的整體性能。另外,使用本發(fā)明的技術(shù)方案后,從系統(tǒng)中斷處理程序的入口到各個用戶中斷處理程序的入口的執(zhí)行時間是相同的。由于本發(fā)明不需要依次對用戶中斷申請的有效性進(jìn)行判斷,因此SOC中用戶中斷申請的數(shù)目越多,本發(fā)明對SOC性能的改善越大。另外,本發(fā)明可以應(yīng)用到一般的CPU內(nèi)核和SOC中,具有一定的普遍性。
圖1為一般的中斷處理系統(tǒng)的結(jié)構(gòu)示意圖。
圖2為本發(fā)明第一實施例的流程示意圖。
圖3為本發(fā)明第一實施例中中斷控制器的結(jié)構(gòu)示意圖。
圖4為本發(fā)明第二實施例中中斷控制器的結(jié)構(gòu)示意圖。
圖5為本發(fā)明第二實施例的流程示意圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,以下舉實施例對本發(fā)明進(jìn)一步詳細(xì)說明。
參照圖2,本發(fā)明的第一實施例包括以下步驟步驟101,在中斷控制器中預(yù)先為每個中斷申請設(shè)置對應(yīng)的一位中斷使能寄存器、一位中斷申請寄存器和一個用戶中斷地址寄存器,在中斷控制器中還預(yù)先設(shè)置中斷序號寄存器和中斷地址寄存器。
根據(jù)上述設(shè)置的中斷控制器如圖3所示。參照圖3,中斷控制器包括中斷使能寄存器、中斷申請寄存器、用戶中斷地址寄存器、中斷序號寄存器、中斷地址寄存器以及中斷仲裁器。正如本領(lǐng)域技術(shù)人員所公知的,寄存器中通常都有自身的控制邏輯,以完成讀、寫、判斷等控制操作,在本發(fā)明實施例中,各寄存器的控制操作都由自身的控制邏輯完成,在具體描述時不再贅述。
其中,中斷使能寄存器控制在接收到中斷源的中斷申請后是否允許將對應(yīng)的中斷申請寄存器設(shè)置為有效,即是否允許對應(yīng)的中斷申請有效,如果中斷使能寄存器無效,則中斷控制器將不會設(shè)置對應(yīng)的中斷申請寄存器為有效,如果中斷使能寄存器有效,則中斷控制器接收到對應(yīng)的中斷申請后設(shè)置對應(yīng)的中斷申請寄存器有效,以便后續(xù)將該中斷申請發(fā)送給CPU內(nèi)核。中斷申請寄存器用來存儲對應(yīng)的中斷申請是否有效。一般來自中斷源的中斷申請信號維持的時間不會太長,所以中斷控制器需要把對應(yīng)的中斷申請給存儲下來,以便中斷控制器和CPU內(nèi)核進(jìn)行后續(xù)的處理。用戶中斷地址寄存器用于存儲對應(yīng)的中斷申請的用戶中斷處理程序的起始地址。舉例來說,對于可以處理256個中斷申請的中斷控制器而言,一共需要設(shè)置256位中斷使能寄存器,如果CPU內(nèi)核的數(shù)據(jù)寬度為32位,則需要把這些寄存器分拆為8個32位寄存器,另外需要設(shè)置256位中斷申請寄存器,同樣需要把這些寄存器分拆為8個32位寄存器,還需要設(shè)置256個32位的用戶中斷地址寄存器。
中斷序號寄存器用來存儲當(dāng)前最高優(yōu)先級中斷申請的序號。中斷地址寄存器用來存儲當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的初始地址,該地址來自與最高優(yōu)先級中斷申請對應(yīng)的用戶中斷地址寄存器。對于可以處理256個中斷申請的中斷控制器而言,中斷序號寄存器為8位寄存器,中斷地址寄存器是32位寄存器。
另外,中斷控制器中的中斷仲裁器用于在中斷申請寄存器表示有效的中斷申請中選擇最高優(yōu)先級的中斷申請,將該最高優(yōu)先級中斷申請的序號寫入中斷序號寄存器,并向CPU內(nèi)核發(fā)送該中斷申請。
步驟102,在SOC芯片復(fù)位時,初始化步驟101中設(shè)置的寄存器,例如將所有寄存器初始化為無效。其中,如果所有的中斷使能寄存器都處于無效狀態(tài),那么中斷申請寄存器會忽略所有的中斷申請??梢詫⑺械挠脩糁袛嗟刂芳拇嫫鞫汲跏蓟赶驘o效的地址。
步驟103,CPU內(nèi)核配置中斷控制器中各個中斷申請對應(yīng)的用戶中斷地址寄存器,即將各個中斷申請的用戶中斷處理程序的起始位置寫入對應(yīng)的用戶中斷地址寄存器。如果CPU內(nèi)核不使用某中斷,可以不配置對應(yīng)的用戶中斷地址寄存器。
CPU內(nèi)核還配置中斷控制器中各個中斷申請對應(yīng)的中斷使能寄存器有效,允許對應(yīng)的中斷用戶向CPU內(nèi)核發(fā)出中斷申請。如果CPU內(nèi)核不使用某中斷,可以不配置對應(yīng)的中斷使能寄存器。
CPU內(nèi)核配置完中斷控制器以后,可以運行其正常的應(yīng)用程序。
步驟104至步驟106,中斷控制器接收到某個中斷源的中斷申請,中斷申請寄存器控制邏輯判斷與該中斷申請對應(yīng)的中斷使能寄存器是否有效,如果是,則設(shè)置對應(yīng)的中斷申請寄存器為有效,否則執(zhí)行步驟104,等待接收下一個中斷申請。
另外,在步驟104中如果同時接收到多個中斷申請時,分別判斷各中斷申請對應(yīng)的中斷使能寄存器是否有效,如果有效,則設(shè)置對應(yīng)的中斷申請寄存器為有效,否則執(zhí)行步驟104,等待接收下一個中斷申請。
步驟107,在中斷控制器處于“非中斷”狀態(tài)且中斷申請寄存器至少有一位有效時,中斷仲裁器對所有有效的中斷申請進(jìn)行仲裁,選擇得到當(dāng)前最高優(yōu)先級的中斷申請,以作為向CPU內(nèi)核發(fā)送的系統(tǒng)中斷申請。
可以通過判斷中斷仲裁器輸出的系統(tǒng)中斷申請信號是否有效來判斷中斷控制器是否處于“非中斷”狀態(tài),例如系統(tǒng)中斷申請信號低電平有效,那么在該信號為高電平時,中斷控制器處于“非中斷”狀態(tài),即中斷控制器可以向CPU內(nèi)核輸出中斷申請;如果該信號為低電平時,中斷控制器處于“中斷”狀態(tài),處于“中斷”狀態(tài)的中斷控制器將不會對其它的中斷申請進(jìn)行仲裁,即使有更高優(yōu)先級的中斷申請,也不再進(jìn)行重新仲裁,直到中斷控制器回到“非中斷”狀態(tài)為止。也可以設(shè)置一狀態(tài)寄存器來表示當(dāng)前中斷控制器處于“中斷”狀態(tài)或“非中斷”狀態(tài)。
步驟108,中斷仲裁器將所述最高優(yōu)先級中斷申請的序號存入中斷序號寄存器,并向CPU內(nèi)核發(fā)送該最高優(yōu)先級中斷申請。例如,如果中斷0為最高優(yōu)先級中斷,則中斷序號寄存器為0;如果中斷31為最高優(yōu)先級中斷,則中斷序號寄存器為31;如果中斷255為最高優(yōu)先級中斷,則中斷序號寄存器為255。同時中斷地址寄存器控制邏輯根據(jù)中斷序號寄存器中的中斷申請序號,將當(dāng)前最高優(yōu)先級中斷申請對應(yīng)的用戶中斷地址寄存器中的地址寫入到中斷地址寄存器中,該地址代表了該中斷申請的用戶中斷處理程序的初始地址。
步驟109,CPU內(nèi)核如果允許中斷,則轉(zhuǎn)入執(zhí)行系統(tǒng)中斷處理程序,讀取中斷地址寄存器中的地址,轉(zhuǎn)入該地址執(zhí)行對應(yīng)的用戶中斷處理程序代碼,該用戶中斷處理程序執(zhí)行結(jié)束后返回系統(tǒng)中斷處理程序中。
步驟110,CPU內(nèi)核讀取中斷序號寄存器,并把中斷序號寄存器的值寫回到中斷序號寄存器中,以便清除對應(yīng)的中斷申請寄存器的值。
步驟111,清除對應(yīng)的中斷申請寄存器后,中斷控制器進(jìn)入“非中斷”狀態(tài)。判斷中斷申請寄存器是否有效,如果有效,則表示當(dāng)前還有其他的中斷在等待CPU內(nèi)核處理,執(zhí)行步驟107;否則執(zhí)行步驟104等待接收新的中斷申請。
在本發(fā)明的第一實施例中,采用用戶中斷地址寄存器作為用戶中斷地址存儲單元,來存儲各中斷申請的用戶中斷處理程序的起始地址。如果中斷申請的數(shù)量比較多,例如有256個,則需要256×32位=8K大小的寄存器來存儲這些地址,8K位的寄存器需要占用比較大的面積,而且導(dǎo)致芯片成本比較高。因此,為了減少中斷控制器所占的面積以及降低芯片的成本,本發(fā)明進(jìn)一步提出了第二實施例。在第二實施例中,采用靜態(tài)隨即存取存儲器(SRAM)來代替第一實施例中的多個用戶中斷地址寄存器形成的寄存器陣列。例如,如果第一實施例中使用256×32位的寄存器陣列來存儲用戶中斷處理程序的起始地址,則第二實施例中采用一個256×32位的SRAM來存儲用戶中斷處理程序的起始地址。
本發(fā)明第二實施例的中斷控制器如圖4所示。參照圖4,該中斷控制器包括中斷使能寄存器、中斷申請寄存器、SRAM、中斷序號寄存器、中斷地址寄存器以及中斷仲裁器。如前所述,與第一實施例不同的是,第二實施例采用SRAM存儲中斷申請的用戶中斷處理程序的起始地址;其余部分與第一實施例相同,這里不再贅述。舉例來說,對于可以處理256個中斷申請的中斷控制器而言,如果CPU內(nèi)核的數(shù)據(jù)寬度為32位,則需要設(shè)置256×32位的SRAM。
在配置該SRAM時,即CPU寫入各個中斷的用戶中斷處理程序起始地址時,SRAM控制邏輯根據(jù)CPU給出的寄存器地址計算出對應(yīng)的SRAM地址,并且按照對應(yīng)的SRAM地址把CPU給出的用戶中斷處理程序起始地址寫入SRAM中。在向CPU內(nèi)核發(fā)送當(dāng)前最高優(yōu)先級中斷申請時,SRAM控制邏輯根據(jù)中斷序號寄存器中的序號計算出SRAM的地址,把從SRAM中讀出來數(shù)據(jù),作為相應(yīng)的用戶中斷處理程序起始地址寫入中斷地址寄存器。
參照圖5,以具有256個中斷申請為例,本發(fā)明第二實施例的流程包括以下步驟步驟201,在中斷控制器中預(yù)先為每個中斷申請設(shè)置對應(yīng)的一位中斷使能寄存器和一位中斷申請寄存器。中斷控制器中同時用一個256×32位的SRAM來存儲256個用戶中斷處理程序的起始地址。該SRAM直接映射到中斷控制器的寄存器的CPU接口上,根據(jù)CPU讀寫用戶中斷處理程序起始地址的CPU命令生成SRAM的讀寫控制信號和數(shù)據(jù)。
在中斷控制器中還預(yù)先設(shè)置中斷序號寄存器和中斷地址寄存器。
步驟202,在SOC芯片復(fù)位時,初始化步驟201中設(shè)置的寄存器和SRAM。例如將所有寄存器初始化為無效。
步驟203,在配置該SRAM時,即CPU寫入各個中斷的用戶中斷處理程序起始時,中斷控制器收到CPU內(nèi)核配置用戶中斷處理程序起始地址的CPU命令時,SRAM的寫信號有效,SRAM的地址為CPU接口地址線的9:2位,這是因為CPU給出的地址是字節(jié)地址,而SRAM中一個地址存儲4個字節(jié)的數(shù)據(jù),所以要忽略CPU接口地址線的低2位用9:2位尋址256個SRAM的存儲單元;SRAM的寫數(shù)據(jù)為CPU接口寫數(shù)據(jù)線上的內(nèi)容。
CPU內(nèi)核還配置中斷控制器中各個中斷申請對應(yīng)的中斷使能寄存器有效,允許對應(yīng)的中斷用戶向CPU內(nèi)核發(fā)出中斷申請。如果CPU內(nèi)核不使用某中斷,可以不配置對應(yīng)的中斷使能寄存器。
CPU內(nèi)核配置完中斷控制器以后,可以運行其正常的應(yīng)用程序。
步驟204至步驟206,中斷控制器接收到某個中斷源的中斷申請,中斷申請寄存器控制邏輯判斷與該中斷申請對應(yīng)的中斷使能寄存器是否有效,如果是,則設(shè)置對應(yīng)的中斷申請寄存器為有效,否則執(zhí)行步驟204,等待接收下一個中斷申請。
另外,在步驟204中如果同時接收到多個中斷申請時,分別判斷各中斷申請對應(yīng)的中斷使能寄存器是否有效,如果有效,則設(shè)置對應(yīng)的中斷申請寄存器為有效,否則執(zhí)行步驟204,等待接收下一個中斷申請。
步驟207,在中斷控制器處于“非中斷”狀態(tài)且中斷申請寄存器至少有一位有效時,中斷仲裁器對所有有效的中斷申請進(jìn)行仲裁,選擇得到當(dāng)前最高優(yōu)先級的中斷申請,以作為向CPU內(nèi)核發(fā)送的系統(tǒng)中斷申請。
步驟208,中斷仲裁器將所述最高優(yōu)先級中斷申請的序號存入中斷序號寄存器,并向CPU內(nèi)核發(fā)送該最高優(yōu)先級中斷申請。
SRAM控制邏輯根據(jù)中斷序號寄存器的值作為SRAM的地址,把從SRAM中讀取的數(shù)據(jù)作為當(dāng)前最高優(yōu)先級的中斷申請的用戶中斷處理程序起始地址寫入到中斷地址寄存器中。
步驟209,CPU內(nèi)核如果允許中斷,則轉(zhuǎn)入執(zhí)行系統(tǒng)中斷處理程序,讀取中斷地址寄存器中的地址,轉(zhuǎn)入該地址執(zhí)行對應(yīng)的用戶中斷處理程序代碼,該用戶中斷處理程序執(zhí)行結(jié)束后返回系統(tǒng)中斷處理程序中。
步驟210,CPU內(nèi)核讀取中斷序號寄存器,并把中斷序號寄存器的值寫回到中斷序號寄存器中,以便清除對應(yīng)的中斷申請寄存器的值。
步驟211,清除對應(yīng)的中斷申請寄存器后,中斷控制器進(jìn)入“非中斷”狀態(tài)。判斷中斷申請寄存器是否有效,如果有效,則表示當(dāng)前還有其他的中斷在等待CPU內(nèi)核處理,執(zhí)行步驟207;否則執(zhí)行步驟204等待接收新的中斷申請。
以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種中斷處理方法,其特征在于,該方法在中斷控制器中設(shè)置中斷地址寄存器,該方法還包括以下步驟A.將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址寫入中斷地址寄存器,并將該最高優(yōu)先級中斷申請發(fā)送給CPU內(nèi)核;B.CPU內(nèi)核讀取所述中斷地址寄存器中的地址,并根據(jù)該地址執(zhí)行所述用戶中斷處理程序。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步預(yù)先在中斷控制器中設(shè)置與中斷申請對應(yīng)的中斷使能寄存器、中斷申請寄存器和用戶中斷地址存儲單元,并且預(yù)先將中斷申請的用戶中斷處理程序的起始地址寫入對應(yīng)的用戶中斷地址存儲單元;步驟A之前進(jìn)一步包括中斷控制器接收到來自中斷源的中斷申請,判斷得出對應(yīng)的中斷使能寄存器為有效時,設(shè)置對應(yīng)的中斷申請寄存器為有效;步驟A中所述將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址寫入中斷地址寄存器的步驟包括在當(dāng)前中斷申請寄存器有效的中斷申請中選擇最高優(yōu)先級的中斷申請;將該最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址從對應(yīng)的用戶中斷地址存儲單元寫入中斷地址寄存器。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,該方法進(jìn)一步預(yù)先在中斷控制器中設(shè)置中斷序號寄存器;步驟A中所述將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址從對應(yīng)的用戶中斷地址存儲單元寫入中斷地址寄存器的步驟包括將最高優(yōu)先級中斷申請的序號寫入中斷序號寄存器,根據(jù)該序號將所述地址從對應(yīng)的用戶中斷地址存儲單元寫入中斷地址寄存器。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述用戶中斷地址存儲單元為用戶中斷地址寄存器或靜態(tài)隨機存取存儲器SRAM。
5.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述用戶中斷地址存儲單元為SRAM;步驟A中所述將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址從SRAM寫入中斷地址寄存器的步驟包括將當(dāng)前最高優(yōu)先級中斷申請的序號寫入中斷序號寄存器,根據(jù)該序號計算得到對應(yīng)的SRAM地址,根據(jù)該SRAM地址將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址從SRAM寫入中斷地址寄存器。
6.根據(jù)權(quán)利要求3、4或5所述的方法,其特征在于,步驟B之后進(jìn)一步包括清除與中斷序號對應(yīng)的中斷申請寄存器的步驟。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,步驟B之后進(jìn)一步包括判斷中斷申請寄存器是否有效,并在有效的時候再次執(zhí)行步驟A和B。
8.一種中斷處理裝置,其特征在于,該中斷控制裝置包括包括中斷地址寄存器的中斷控制器,用于將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址寫入中斷地址寄存器,并將該最高優(yōu)先級中斷申請發(fā)送給CPU內(nèi)核;CPU內(nèi)核,用于根據(jù)所述最高優(yōu)先級中斷申請,從中斷地址寄存器中讀取所述地址,并根據(jù)該地址執(zhí)行所述用戶中斷處理程序。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,該裝置進(jìn)一步包括向中斷控制器提出中斷申請的中斷源。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述中斷控制器包括對應(yīng)于每個中斷申請的中斷使能寄存器、中斷申請寄存器、用戶中斷地址存儲單元,其中中斷使能寄存器用于控制在接收到中斷源的中斷申請后是否將對應(yīng)的中斷申請寄存器設(shè)置為有效,中斷申請寄存器用于存儲對應(yīng)的中斷申請是否有效,用戶中斷地址存儲單元用于存儲對應(yīng)的中斷申請的用戶中斷處理程序的起始地址;中斷仲裁器,用于在中斷申請寄存器表示有效的中斷申請中選擇當(dāng)前最高優(yōu)先級的中斷申請,將該最高優(yōu)先級中斷申請的序號寫入中斷序號寄存器,并將該最高優(yōu)先級中斷申請發(fā)送給CPU內(nèi)核;中斷序號寄存器,用于存儲所述最高優(yōu)先級中斷申請的序號。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述用戶中斷地址存儲單元為用戶中斷地址寄存器或SRAM。
全文摘要
本發(fā)明公開了一種中斷處理方法,該方法在中斷控制器中設(shè)置中斷地址寄存器,該方法還包括以下步驟A、將當(dāng)前最高優(yōu)先級中斷申請的用戶中斷處理程序的起始地址寫入中斷地址寄存器,并將該最高優(yōu)先級中斷申請發(fā)送給CPU內(nèi)核;B、CPU內(nèi)核讀取所述中斷地址寄存器中的地址,并根據(jù)該地址執(zhí)行所述用戶中斷處理程序。本發(fā)明大大縮短了CPU內(nèi)核開始執(zhí)行用戶中斷處理程序的時間,提高了CPU內(nèi)核處理中斷申請的效率,從而提高了SOC的整體性能。并且,本發(fā)明從系統(tǒng)中斷處理程序的入口到各個用戶中斷處理程序的入口的執(zhí)行時間是相同的。另外,本發(fā)明可以應(yīng)用到一般的CPU內(nèi)核和SOC中,具有一定的普遍性。
文檔編號G06F13/20GK1845087SQ20061008133
公開日2006年10月11日 申請日期2006年5月18日 優(yōu)先權(quán)日2006年5月18日
發(fā)明者霍曉方 申請人:北京中星微電子有限公司