專利名稱:暫存器數據擷取方法與裝置的制作方法
技術領域:
本發明為一種暫存器數據擷取方法與裝置,尤指應用于計算機系統上的暫存器數據擷取方法與裝置。
背景技術:
除錯(debug)是計算機系統軟件/硬件/固件在設計過程中一項重要的操作,而除錯程序中有一主要操作就是讀取計算機系統中各類暫存器中的數值來供除錯人員檢視。而現今用以檢查計算機系統中各類暫存器的除錯工具軟件都是執行于操作系統已正常運作的環境下的應用程序,例如常見的kerne ldebugger of Microsoft。但如此一來,在操作系統完成加載且正常運作前所發生的問題并無法通過此類除錯工具軟件來完成查核。且當操作系統發生不正常狀況時(例如操作系統當機),已知的除錯工具軟件也將隨之停止運作而無法正常發揮功能。
舉例來說,在操作系統加載前,計算機系統的基本輸入輸出系統(BIOS)會進行開機自我測試(POST)程序,用以適當地對計算機系統中包含中央處理單元、芯片組等的邏輯元件進行初始化的操作,而開機自我測試(POST)的程序是由多個步驟所組成。但在開機自我測試(POST)的程序中產生當機的現象,現存已知的除錯工具軟件并無法讀取計算機系統中各類暫存器的數值,所以無法對導致錯誤發生的原因進行分析,而只能檢視基本輸入輸出系統(BIOS)的原始碼內容來尋找錯誤。
另外,即使在操作系統已完成加載但后來發生當機現象時,運作在操作系統環境下的已知除錯工具軟件也將隨之停止運作而無法讀取計算機系統中各類暫存器的數值。因此如何改善上述已知手段缺失,為開發本發明的主要目的。
發明內容
本發明為一種暫存器數據擷取方法,應用于計算機系統之上,該計算機系統包含有中央處理單元與芯片組,其包含下列步驟因應事件發生而發出觸發信號至該芯片組;該芯片組發出中斷信號至該中央處理單元,使該中央處理單元執行處理例程;該處理例程根據地址數據去該地址數據所指向的該計算機系統的特定暫存器中讀取數據并轉存于數據轉移暫存器;以及提供使用者接口來讀取該數據轉移暫存器中的數據。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該觸發信號的規格可為SERIRQ信號、GPI信號或EXTSMI#信號。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該特定暫存器可以是該中央處理單元的內部暫存器、PCI配置暫存器或是定義于存儲器空間地址或輸入輸出空間地址上的暫存器。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該地址數據存放于使用者地址暫存器中,而該使用者地址暫存器中的該地址數據可以利用該使用者接口來進行設定。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該使用者接口可為指撥開關及/或具有顯示器的主機計算機。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該事件可以是該計算機系統的開機自我測試程序中的某一步驟結束時、某一預定周期時間到達時、或是使用者觸發。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該芯片組發出的該中斷信號為系統管理中斷信號,而該中央處理單元便進入系統管理模式并呼叫位于基本輸入輸出系統芯片中的該處理例程。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該處理例程是從地址數據暫存器中讀取該地址數據。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該處理例程是根據交握暫存器中所存放的服務完成旗標與交易請求狀態旗標來進行數據讀取操作,而該數據讀取操作包含下列步驟判斷該交易請求狀態旗標是否被設定成“1”,若是,便根據該地址數據指向的該特定暫存器中讀取數據并儲存至該數據轉移暫存器,然后將交易請求狀態旗標清除為“0”,然后判斷該服務完成旗標是否被設定成“1”,若是,將服務完成的旗標清除為“0”并跳出該處理例程及該系統管理模式;以及若判斷該服務完成旗標為“0”則回到上一步驟。
根據上述構想,本發明所述的暫存器數據擷取方法,其中該交握暫存器為讀/寫一次清除式暫存器,當處理例程向該交握暫存器的相對位置寫入“1”時,便可將該清除交易請求狀態旗標或該服務完成旗標清除為“0”。
本發明的另一方面為一種暫存器數據擷取裝置,應用于計算機系統之上,該計算機系統包含有中央處理單元與芯片組,該暫存器數據擷取裝置包含觸發信號產生器,其是因應事件發生而發出觸發信號至該芯片組,用以觸發該芯片組發出中斷信號至該中央處理單元,而使該中央處理單元執行處理例程;使用者地址暫存器,該處理例程是根據該使用者地址暫存器中的地址數據去該地址數據所指向的該計算機系統的特定暫存器中讀取數據;數據轉移暫存器,供該處理例程從該特定暫存器中讀出的數據進行儲存;以及使用者接口,信號連接至該數據轉移暫存器、該使用者地址暫存器以及該觸發信號產生器,其是用來讀取該數據轉移暫存器中的數據并對該使用者地址暫存器以及該觸發信號產生器輸入數據。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中該觸發信號的規格可為SERIRQ信號、GPI信號或EXTSMI#信號。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中該特定暫存器可以是該中央處理單元的內部暫存器、PCI配置暫存器或是定義于存儲器空間地址或輸入輸出空間地址上的暫存器。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中該使用者地址暫存器中的該地址數據可以利用該使用者接口來進行設定。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中該使用者接口可為指撥開關及/或具有顯示器的主機計算機。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中該事件可以是該計算機系統的開機自我測試程序中的某一步驟結束時、某一預定周期時間到達時、或是使用者觸發。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中該芯片組發出的該中斷信號為系統管理中斷信號,而該中央處理單元便進入系統管理模式并呼叫位于基本輸入輸出系統芯片中的該處理例程。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中還包含交握暫存器,該交握暫存器存放有服務完成旗標與交易請求狀態旗標,而該處理例程是根據該服務完成旗標與該交易請求狀態旗標來進行數據讀取操作,而該數據讀取操作包含下列步驟判斷該交易請求狀態旗標是否被設定成“1”,若是,便根據該地址數據指向的該特定暫存器中讀取數據并儲存至該數據轉移暫存器,然后將交易請求狀態旗標清除為“0”,然后判斷該服務完成旗標是否被設定成“1”,若是,將服務完成的旗標清除為“0”并跳出該處理例程及該系統管理模式;以及若判斷該服務完成旗標為“0”則回到上一步驟。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中該交握暫存器為讀/寫一次清除式暫存器,當處理例程向該交握暫存器的相對位置寫入“1”時,便可將該清除交易請求狀態旗標或該服務完成旗標清除為“0”。
根據上述構想,本發明所述的暫存器數據擷取裝置,其中該觸發信號產生器、該使用者地址暫存器、該數據轉移暫存器、該交握暫存器的電路是可集成于該芯片組中。
本發明得通過下列圖式及說明,俾得更深入的了解圖1,其是本發明為改善已知手段所開發出來的除錯系統應用于計算機系統中的功能方塊示意圖。
圖2,其是本發明除錯硬件單元內部功能方塊示意圖。
圖3,其是內建于基本輸入輸出系統芯片的處理例程執行時的工作步驟流程圖。
圖4,其是將本發明軟硬件兩部分集成后進行的工作步驟流程示意圖。
本發明圖式中所包含的各元件列式如下中央處理單元10 芯片組11基本輸入輸出系統芯片12 除錯系統13除錯硬件單元131處理例程132總線110除錯硬件單元131開機自我測試碼暫存器1310 觸發信號產生器1311使用者地址暫存器1312 數據轉移暫存器1313交握暫存器1314 使用者接口131具體實施方式
請參見圖1,其是本發明為改善已知手段所開發出來的除錯系統應用于計算機系統中的功能方塊示意圖,其中中央處理單元10、芯片組11以及基本輸入輸出系統芯片12是計算機系統不可或缺的硬件與固件,而本發明所開發的除錯系統13則包含兩個部分的開發,第一部分是除錯硬件單元131,其是通過總線110來與芯片組11進行信號傳輸,而第二部分則是可內建于基本輸入輸出系統芯片12的處理例程(handler routine)132。以下對兩者的細節與運作進行詳細說明。
首先,除錯硬件單元131可以用PCI總線元件或LPC總線元件的形式完成,意即總線110可用PCI總線或LPC總線來完成。而除錯硬件單元131內部功能方塊示意圖則如圖2的所示,其包含有開機自我測試碼暫存器(POSTcode register)1310、觸發信號產生器1311、使用者地址暫存器1312、數據轉移(dump)暫存器1313、交握(hand shake)暫存器1314以及使用者接口1315,其中開機自我測試碼暫存器(POST code register)1310用來擷取總線110上所傳送的開機自我測試碼(POST code),開機自我測試碼(POST code)代表開機自我測試程序完成到那一個步驟的代碼,而開機自我測試碼暫存器(POSTcode register)1310中的開機自我測試碼(POST code)可被使用者接口1315來讀取。
至于觸發信號產生器1311則是因應事件發生而發出系統管理中斷(System Management Interrupt,簡稱SMI)的觸發信號到芯片組11,進而使芯片組11發出該系統管理中斷(SMI)至中央處理單元10,讓中央處理單元10進入系統管理模式(System Management Mode,簡稱SMM)而呼叫位于基本輸入輸出系統芯片12中的處理例程132。而該觸發信號的實現方式基本上需因應芯片組11可支持的規格,而可以是GPI信號、EXTSMI#信號或SERIRQ信號等,至于上述事件可以是開機自我測試程序中的某一步驟結束時,或是某一預定周期時間到達時,或是使用者觸發時等等。
而使用者地址暫存器1312則是提供給使用者填入地址數據,該地址數據是指向特定暫存器,而該特定暫存器可以是中央處理單元10的內部暫存器、PCI配置暫存器、或是定義于某一個存儲器空間地址(memory space address)或輸入輸出空間地址(IO space address)上的暫存器。所以根據地址數據所指向的計算機系統的特定暫存器,該處理例程(handler routine)132得以從特定暫存器中讀取數據,而從處理例程的角度看過來,使用者地址暫存器1312則是一個只讀暫存器(read-only register)。
而數據轉移暫存器(dump register)1313則提供處理例程(handlerroutine)132轉存從特定暫存器中所讀取到的數據。至于交握暫存器1314則用以存放兩個旗標值,一個為服務完成(service_complete)旗標,另一個為交易請求狀態(Transaction_Request)旗標,而該交握暫存器1314較佳可為讀/寫一次清除(read/write-one-clear)式暫存器來完成。
至于使用者接口1315則是提供使用者對上述各類暫存器進行數值輸入或是觀察其中存放的數值,其可用指撥開關(DIP SWITCH)所完成的使用者接口1315來進行數值輸入的工作,而通過一臺具有顯示器的主機計算機所完成的使用者接口1315,便可對除錯硬件單元131所讀出的數值進行觀察。而上述的開機自我測試碼暫存器(POST code register)1310、觸發信號產生器1311、使用者地址暫存器1312、數據轉移(dump)暫存器1313以及交握(handshake)暫存器1314皆可集成于芯片組中,或是一起與使用者接口1315一起完成于獨立于計算機系統外的裝置中。
再請參見圖3,其是內建于基本輸入輸出系統芯片12的處理例程132執行時的工作步驟流程圖,首先,步驟31為先判斷交易請求狀態(Transaction_Request)旗標是否設定成“1”,若是,便進入步驟32而根據地址暫存器1312中的地址數據指向的暫存器中讀取數據,進入步驟33后便將讀取到的數據儲存至數據轉移暫存器(dump register),而步驟34則是清除交易請求狀態旗標為“0”,然后進入服務是否結束的判斷(步驟35),若“是”(即服務完成的旗標已設為“1”)則進入步驟36來清除服務完成的旗標并跳出處理例程132及系統管理模式,若“否”則回到步驟31。如此一來,本發明處理例程132在被呼叫后便可執行讀取地址數據所指向的暫存器中數據的操作。而當交握暫存器1314為讀/寫一次清除(read/write-one-clear)式暫存器時,處理例程132只需向該交握暫存器1314的相對位置寫入“1”,便可將清除交易請求狀態旗標或服務完成的旗標清除為“0”,可簡化軟件程序代碼的復雜度。
而將上述軟硬件兩部分集成后進行的工作步驟流程示意圖則如圖4所示,首先,步驟41為讓使用者利用使用者接口1315來設定該使用者地址暫存器1312中的地址數據(同時交易請求狀態旗標亦需被設定為1),然后步驟42為由觸發信號產生器1311發出觸發信號至芯片組11,而芯片組便發出該系統管理中斷(SMI)至中央處理單元10,讓中央處理單元10進入系統管理模式(SMM)并呼叫處理例程132進行上述圖3的操作。接著進入步驟43,使用者決定是否已是最后一個暫存器讀取服務,若“是”則可通過使用者接口1315來將服務完成(service_complete)的旗標設為“1”(步驟44)后再至步驟45中進行交易請求狀態(Transaction_Request)旗標的設立,若“否”則直接跳至步驟45進行交易請求狀態(Transaction_Request)旗標的設立。至于步驟46則是判斷交易請求狀態(Transaction_Request)旗標是否被處理例程132清除,若“是”便從數據轉移暫存器(dump register)1313中取走數據(步驟47),然后在步驟48則再判斷服務完成(service_complete)的旗標是否為“1”,若“是”便結束整個操作并跳出處理例程132及系統管理模式,若“否”則再跳回步驟42。
如此一來,使用者通過使用者接口1315對交握暫存器1314及使用者地址暫存器1312的輸入,便可決定是否要進入系統管理模式及處理例程132中,以及要進行那一個地址上暫存器內容的擷取,還有是否要跳出系統管理模式及處理例程132的決定。而由于系統管理模式可于獨立于操作系統之外來運行,而本發明硬件也可獨立于計算機系統之外還獨立操作,因此本發明確實可改善已知手段缺失,即使在操作系統尚未加載或計算機當機時都可正常運作,故可達成開發本發明的主要目的。而本發明可廣泛應用至各式計算機系統中,因此本發明得由本領域技術人員任施匠思而為諸般修飾,然皆不脫如附權利要求范圍所欲保護者。
權利要求
1.一種暫存器數據擷取方法,應用于計算機系統之上,該計算機系統包含有中央處理單元與芯片組,其包含下列步驟因應事件發生而發出觸發信號至該芯片組;該芯片組發出中斷信號至該中央處理單元,使該中央處理單元呼叫處理例程;根據地址數據所指向的該計算機系統的特定暫存器,該處理例程從該特定暫存器中讀取數據并轉存于數據轉移暫存器;以及提供使用者接口來讀取該數據轉移暫存器中的數據。
2.根據權利要求1所述的暫存器數據擷取方法,其中該地址數據存放于使用者地址暫存器中,而該使用者地址暫存器中的該地址數據可以利用該使用者接口來進行設定。
3.根據權利要求1所述的暫存器數據擷取方法,其中該事件可以是該計算機系統的開機自我測試程序中的某一步驟結束時、某一預定周期時間到達時、或是使用者觸發。
4.根據權利要求1所述的暫存器數據擷取方法,其中該芯片組發出的該中斷信號為系統管理中斷信號,而該中央處理單元便進入系統管理模式并呼叫位于基本輸入輸出系統芯片中的該處理例程以從地址數據暫存器中讀取該地址數據。
5.根據權利要求1所述的暫存器數據擷取方法,其中該處理例程是根據交握暫存器中所存放的服務完成旗標與交易請求狀態旗標來進行數據讀取操作,而該數據讀取操作包含下列步驟判斷該交易請求狀態旗標是否被設定成“1”,若是,便根據該地址數據指向的該特定暫存器中讀取數據并儲存至該數據轉移暫存器,然后將交易請求狀態旗標清除為“0”,然后判斷該服務完成旗標是否被設定成“1”,若是,將服務完成的旗標清除為“0”并跳出該處理例程及該系統管理模式;以及若判斷該服務完成旗標為“0”則回到上一步驟;其中該交握暫存器為讀/寫一次清除式暫存器,當處理例程向該交握暫存器的相對位置寫入“1”時,便可將該清除交易請求狀態旗標或該服務完成旗標清除為“0”。
6.一種暫存器數據擷取裝置,應用于計算機系統之上,該計算機系統包含有中央處理單元與芯片組,該暫存器數據擷取裝置包含觸發信號產生器,其是因應事件發生而發出觸發信號至該芯片組,用以觸發該芯片組發出中斷信號至該中央處理單元,而使該中央處理單元呼叫處理例程;使用者地址暫存器,提供該處理例程根據該使用者地址暫存器中的地址數據去該地址數據所指向的該計算機系統的特定暫存器中讀取數據;數據轉移暫存器,供該處理例程從該特定暫存器中讀出的數據進行儲存;以及使用者接口,信號連接至該數據轉移暫存器、該使用者地址暫存器以及該觸發信號產生器,其是用來讀取該數據轉移暫存器中的數據并對該使用者地址暫存器以及該觸發信號產生器輸入數據。
7.根據權利要求6所述的暫存器數據擷取裝置,其中該特定暫存器可以是該中央處理單元的內部暫存器、PCI配置暫存器或是定義于存儲器空間地址或輸入輸出空間地址上的暫存器。
8.根據權利要求6所述的暫存器數據擷取裝置,其中該使用者地址暫存器中的該地址數據可以利用該使用者接口來進行設定。
9.根據權利要求6所述的暫存器數據擷取裝置,其中該事件可以是該計算機系統的開機自我測試程序中的某一步驟結束時、某一預定周期時間到達時、或是使用者觸發。
10.根據權利要求6所述的暫存器數據擷取裝置,其中該芯片組發出的該中斷信號為系統管理中斷信號,而該中央處理單元便進入系統管理模式并呼叫位于基本輸入輸出系統芯片中的該處理例程。
11.根據權利要求6所述的暫存器數據擷取裝置,其中還包含交握暫存器,該交握暫存器存放有服務完成旗標與交易請求狀態旗標,而該處理例程根據該服務完成旗標與該交易請求狀態旗標來進行數據讀取操作,而該數據讀取操作包含下列步驟判斷該交易請求狀態旗標是否被設定成“1”,若是,便根據該地址數據指向的該特定暫存器中讀取數據并儲存至該數據轉移暫存器,然后將交易請求狀態旗標清除為“0”,然后判斷該服務完成旗標是否被設定成“1”,若是,將服務完成的旗標清除為“0”并跳出該處理例程及該系統管理模式;以及若判斷該服務完成旗標為“0”則回到上一步驟;其中該交握暫存器為讀/寫一次清除式暫存器,當處理例程向該交握暫存器的相對位置寫入“1”時,便可將該清除交易請求狀態旗標或該服務完成旗標清除為“0”。
全文摘要
本發明為一種暫存器數據擷取方法與裝置,應用于計算機系統之上,該計算機系統包含有中央處理單元與芯片組,該裝置包含觸發信號產生器;使用者地址暫存器;數據轉移暫存器以及使用者接口,而該方法包含下列步驟首先因應事件發生而發出觸發信號至該芯片組;其次發出中斷信號至該中央處理單元,使該中央處理單元呼叫處理例程;接著該處理例程根據地址數據去該地址數據所指向的該計算機系統的特定暫存器中讀取數據并轉存于該數據轉移暫存器;最后提供該使用者接口來讀取該數據轉移暫存器中的數據。
文檔編號G06F11/36GK101082879SQ20071013737
公開日2007年12月5日 申請日期2007年7月25日 優先權日2007年7月25日
發明者謝正立, 楊正國 申請人:威盛電子股份有限公司