專利名稱:載掛中斷服務(wù)方法
技術(shù)領(lǐng)域:
本發(fā)明是關(guān)于一種中斷服務(wù)方法,尤其是指一種適用于嵌入式系統(tǒng)的載掛中斷服務(wù)方法。
背景技術(shù):
在嵌入式系統(tǒng)的設(shè)計上,通常是以一單晶片來提供系統(tǒng)所需的功能,而在此單晶片的架構(gòu)中,一般提供有中斷(Interrupt)的機制,以當在系統(tǒng)中有特定的事件發(fā)生時,單晶片將停止目前的處理而執(zhí)行中斷事件所對應(yīng)的中斷服務(wù)程序(Interrupt Service Routine,ISR),以服務(wù)該中斷,如此,系統(tǒng)可在適當?shù)臅r間控制單晶片處理目前需要處理的程式,以便有效運用硬體資源。
圖1顯示中斷機制的架構(gòu)圖,其中,中斷控制器12則規(guī)劃有每一中斷源所對應(yīng)的中斷向量,在中斷源11發(fā)出一中斷時,系統(tǒng)將執(zhí)行中斷向量所指向的中斷服務(wù)程序,然而,在單晶片的設(shè)計上,一中斷源11發(fā)出中斷時,尚需視中斷發(fā)生的條件(例如發(fā)生的時間、發(fā)生的原因等)而區(qū)別出不同的中斷事件,并執(zhí)行中斷服務(wù)程序中不同的服務(wù)程序,因此在中斷發(fā)生而要執(zhí)行中斷服務(wù)程序時,由于要判定需執(zhí)行哪一個服務(wù)程序,故必需使用全域變數(shù)(global variable)來記錄中斷源所產(chǎn)生的中斷事件,如此才能正確地執(zhí)行中斷服務(wù)程序。
由上述可知,習(xí)知的中斷機制需使用全域變數(shù)且要進行判斷以決定所要執(zhí)行的服務(wù)程序,因此,效率不佳,且服務(wù)程序在編譯時即已決定,無法在執(zhí)行時更動,亦缺乏彈性。因此,如何能夠避免前述的缺失而提供一有效且具彈性的中斷機制,遂成為一亟待解決的課題。
發(fā)明內(nèi)容
本發(fā)明的目的是在提供一種載掛中斷服務(wù)方法,能動態(tài)地產(chǎn)生所需的中斷,并在不需中斷時可完全不執(zhí)行多余的判斷,省去不必要的全域變數(shù),且服務(wù)程序可在編譯后再更新,而可簡化來源碼的維護。
為達成上述目的,本發(fā)明的提供的一種載掛中斷服務(wù)方法,包括步驟(A)注冊相應(yīng)于一中斷源的至少一中斷事件,以于該中斷源的中斷服務(wù)程序中的呼叫指令插入一功能指標,該功能指標指向一對應(yīng)的服務(wù)程序;(B)當該中斷源產(chǎn)生中斷時,執(zhí)行中斷服務(wù)程序的呼叫指令中所有功能指標所指向的服務(wù)程序;(C)反注冊至少一已注冊的中斷事件,以自該中斷服務(wù)程序的呼叫指令中移除該中斷事件的功能指標。
所述的載掛中斷服務(wù)方法,其中于步驟(A)中,中斷事件是以注冊命令REG,fp注冊,于步驟(C)中,中斷事件是以反注冊命令UNREG,fp移除,其中,fp為一指向?qū)?yīng)此欲注冊中斷的服務(wù)程序的功能指標。
所述的載掛中斷服務(wù)方法,其中當有多個中斷事件注冊時,該多個中斷事件的功能指標是以鏈結(jié)串列方式串在一起,以當中斷發(fā)生時,執(zhí)行所有功能指標所指向的服務(wù)程序。
由以上的說明可知,本發(fā)明藉由提供注冊及反注冊中斷,可動態(tài)地產(chǎn)生所需的中斷,在不需中斷時可完全不執(zhí)行多余的判斷,省去不必要的全域變數(shù),且服務(wù)程序可在編譯后再更新,而可簡化來源碼的維護。
圖1是公知的中斷機制示意圖;圖2是本發(fā)明的載掛中斷服務(wù)方法的應(yīng)用環(huán)境圖;圖3是顯示本發(fā)明的載掛中斷服務(wù)方法的一范例。
具體實施例方式
為能讓貴審查委員能更了解本發(fā)明的技術(shù)內(nèi)容,特舉一較佳具體有關(guān)本發(fā)明的載掛中斷服務(wù)方法,請先參照圖2所示的應(yīng)用環(huán)境圖,其中,中斷控制器22中規(guī)劃有一中斷源21所對應(yīng)的中斷向量,以在中斷源21產(chǎn)生中斷時,啟動該中斷向量,其中,該中斷源21產(chǎn)生的中斷可為不同的中斷事件。而一注冊/反注冊程序23則是用以動態(tài)地注冊一中斷、或反注冊此中斷。
前述注冊/反注冊程序23所提供的中斷注冊/反注冊命令參數(shù)包括fp、REGCtrl、Mode及interval,其中,fp為一指向?qū)?yīng)此欲注冊中斷的服務(wù)程序的功能指標;REGCtrl可填入REG或UNREG表示注冊或反注冊命令;Mode可填入CONTINUOUS或ONE SHOT,以表示注冊的中斷發(fā)生行為為連續(xù)發(fā)生或僅單次發(fā)生,若連續(xù)發(fā)生,則interval表示發(fā)生間隔時間,若單次發(fā)生,interval表示注冊后發(fā)生時間。
如圖所示,由使用注冊及反注冊計時中斷,可動態(tài)地產(chǎn)生所需的中斷事件,例如,當中斷發(fā)生時需要執(zhí)行服務(wù)程序A,便可以注冊命令REG,fpA來向系統(tǒng)注冊,系統(tǒng)將于中斷向量指向的中斷服務(wù)程序中填入呼叫fpA(call fpA)的指令,其中,fpA是指向服務(wù)程序A,之后,如果決定中斷發(fā)生時還需要執(zhí)行服務(wù)程序B,可再以注冊命令REG,fpB來向系統(tǒng)注冊,此時若有閑置中斷,則載入閑置中斷中,若無閑置中斷,則取interval最小的中斷來運算最大公因數(shù)做為interval,而系統(tǒng)將以鏈結(jié)串列(link list)的方式在呼叫fpA之后串上fpB,并進一步算出兩個的執(zhí)行周期,以區(qū)域變數(shù)加以區(qū)隔,待周期發(fā)生則加以執(zhí)行。其中,fpB是指向服務(wù)程序B,因此,在中斷發(fā)生時將執(zhí)行服務(wù)程序A及服務(wù)程序B,以此方式,呼叫指令可串接許多功能指標,以執(zhí)行該等功能指標所對應(yīng)的服務(wù)程序。而如果決定中斷發(fā)生時已不需要執(zhí)行服務(wù)程序B,則可以反注冊命令UNREG,fpB來向系統(tǒng)取消服務(wù)程序B,系統(tǒng)將于呼叫指令的鏈結(jié)串列中移除fpB,并再次更新interval值,而有關(guān)在鏈結(jié)串列中新增或移除功能指標的操作是為一般資料結(jié)構(gòu)的技術(shù),在此不再詳述。
圖3顯示一范例,其中在t1時以注冊命令REG,fpA及REG,fpB來向系統(tǒng)注冊,故中斷發(fā)生時執(zhí)行服務(wù)程序A及B,在t2時以注冊命令REG,fpC及REG,fpD來向系統(tǒng)注冊,故中斷發(fā)生時執(zhí)行服務(wù)程序A、B、C及D、在t3時以反注冊命令UNREG,fpC來向系統(tǒng)反注冊,故中斷發(fā)生時執(zhí)行服務(wù)程序A、B及D。
上述實施例僅是為了方便說明而舉例而已,本發(fā)明所主張的權(quán)利范圍自應(yīng)以申請專利范圍所述為準,而非僅限于上述實施例。
權(quán)利要求
1.一種載掛中斷服務(wù)方法,其特征在于,包括步驟(A)注冊相應(yīng)于一中斷源的至少一中斷事件,以于該中斷源的中斷服務(wù)程序中的呼叫指令插入一功能指標,該功能指標指向一對應(yīng)的服務(wù)程序;(B)當該中斷源產(chǎn)生中斷時,執(zhí)行中斷服務(wù)程序的呼叫指令中所有功能指標所指向的服務(wù)程序;(C)反注冊至少一已注冊的中斷事件,以自該中斷服務(wù)程序的呼叫指令中移除該中斷事件的功能指標。
2.根據(jù)權(quán)利要求1所述的載掛中斷服務(wù)方法,其特征在于,其中于步驟(A)中,中斷事件是以注冊命令REG,fp注冊,于步驟(C)中,中斷事件是以反注冊命令UNREG,fp移除,其中,fp為一指向?qū)?yīng)此欲注冊中斷的服務(wù)程序的功能指標。
3.根據(jù)權(quán)利要求2所述的載掛中斷服務(wù)方法,其特征在于,其中當有多個中斷事件注冊時,該多個中斷事件的功能指標是以鏈結(jié)串列方式串在一起,以當中斷發(fā)生時,執(zhí)行所有功能指標所指向的服務(wù)程序。
全文摘要
本發(fā)明是有關(guān)于一種載掛中斷服務(wù)方法,其首先注冊相應(yīng)于一中斷源的至少一中斷事件,以于該中斷源的中斷服務(wù)程序中的呼叫指令插入一功能指標,該功能指標指向一對應(yīng)的服務(wù)程序;當該中斷源產(chǎn)生中斷時,執(zhí)行中斷服務(wù)程序的呼叫指令中所有功能指標所指向的服務(wù)程序;當不需要執(zhí)行一中斷事件的服務(wù)程序時,反注冊該已注冊的中斷事件,以自該中斷服務(wù)程序的呼叫指令中移除該中斷事件的功能指標。
文檔編號G06F9/48GK1635476SQ20031011304
公開日2005年7月6日 申請日期2003年12月25日 優(yōu)先權(quán)日2003年12月25日
發(fā)明者劉權(quán)輝 申請人:金寶電子工業(yè)股份有限公司