TWI726616B - 儲存基本輸入輸出系統之除錯訊息的方法 - Google Patents
儲存基本輸入輸出系統之除錯訊息的方法 Download PDFInfo
- Publication number
- TWI726616B TWI726616B TW109104470A TW109104470A TWI726616B TW I726616 B TWI726616 B TW I726616B TW 109104470 A TW109104470 A TW 109104470A TW 109104470 A TW109104470 A TW 109104470A TW I726616 B TWI726616 B TW I726616B
- Authority
- TW
- Taiwan
- Prior art keywords
- storage
- processing module
- basic input
- messages
- debugging
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 79
- 238000012545 processing Methods 0.000 claims description 164
- 230000006835 compression Effects 0.000 claims description 12
- 238000007906 compression Methods 0.000 claims description 12
- 230000006837 decompression Effects 0.000 description 4
- 238000012360 testing method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一種儲存基本輸入輸出系統之除錯訊息的方法,藉由一電腦裝置來實施並包含以下步驟:(A)進行一初始化BIOS例程,以建立多個儲存區塊;(B)當下一BIOS例程為該除錯訊息輸出例程,同時該BIOS處於一初始化階段時,根據一分存參數值、一儲存索引值及一輸出訊息數判定是否需將一除錯訊息儲存於該等儲存區塊;(C)當判定需儲存該除錯訊息時,儲存該除錯訊息,並更新該輸出訊息數;(D)當判定出不儲存該除錯訊息時,更新該輸出訊息數;(E)當該下一BIOS例程為驅動階段的起始例程時,將儲存於該等儲存區塊中的所有除錯訊息儲存至一第二儲存模組。
Description
本發明是有關於一種除錯方法,特別是指一種儲存基本輸入輸出系統之除錯訊息的方法。
基本輸入輸出系統(Basic Input/Output System,簡稱BIOS)是在通電啟動階段執行硬體初始化,以及為作業系統和程式提供運行時服務的韌體。若欲對BIOS之程式碼進行除錯時,現有的除錯方式通常是將BIOS的開機程序操作在一偵錯模式下,而在開機過程中,除錯訊息會經由串列埠輸出到另一台電腦,工程師即可根據這些除錯訊息,找出問題發生的原因。但現有的除錯方法存在幾個缺點:第一、 串列埠的輸出除錯訊息的速度十分緩慢,進而嚴重影響除錯的效率。第二、 串列埠傳輸速度的緩慢也會改變程式碼執行的時間序列,造成原來要除錯的問題消失或產生新的問題。第三、 需要使用一條串列線來與另一台電腦連接以收集除錯訊息,實屬不便,故現有的除錯方法仍存在許多待改善之處。
因此,本發明的一目的,即在提供一種有效、且便利並能完整地獲得所有除錯訊息的儲存基本輸入輸出系統之除錯訊息的方法。
於是,本發明儲存基本輸入輸出系統之除錯訊息的方法,藉由一電腦裝置來實施,該電腦裝置包含一第一儲存模組、一第二儲存模組及一電連接該第一儲存模組與該第二儲存模組的處理模組,該儲存基本輸入輸出系統之除錯訊息的方法包含以下步驟:
(A)藉由該處理模組進行一初始化基本輸入輸出系統例程,以在該第一儲存模組建立多個儲存區塊,且設定一指示出除錯訊息之分存次數的分存參數值及一儲存索引值,並初始化一輸出訊息數;
(B)藉由該處理模組進行下一基本輸入輸出系統例程;
(C)當該下一基本輸入輸出系統例程為一除錯訊息輸出例程,同時該基本輸入輸出系統處於一初始化階段時,藉由該處理模組根據該分存參數值、該儲存索引值及該輸出訊息數判定是否儲存該除錯訊息輸出例程所輸出的一除錯訊息;
(D)當該處理模組判定出需儲存該除錯訊息時,藉由該處理模組將該除錯訊息儲存於該等儲存區塊中,並更新該輸出訊息數,且回到步驟(B);
(E)當該處理模組判定出不需儲存該除錯訊息時,藉由該處理模組更新該輸出訊息數,並回到步驟(B);
(F)當該下一基本輸入輸出系統例程為一驅動階段的起始例程時,藉由該處理模組將儲存於該等儲存區塊中的所有除錯訊息儲存至該第二儲存模組,並回到步驟(B);
(G)當該下一基本輸入輸出系統例程為一載入作業系統例程時,藉由該處理模組判定該分存參數值是否為一;及
(H)當該處理模組判定出該分存參數值不為一時,藉由該處理模組更新該儲存索引值。
本發明的另一目的,即在提供一種有效、且便利並能完整地獲得所有除錯訊息的儲存基本輸入輸出系統之除錯訊息的方法。
於是,本發明儲存基本輸入輸出系統之除錯訊息的方法,藉由一電腦裝置來實施,該電腦裝置包含一第一儲存模組、一第二儲存模組及一電連接該第一儲存模組與該第二儲存模組的處理模組,該儲存基本輸入輸出系統之除錯訊息的方法包含以下步驟:
(A)藉由該處理模組進行一初始化基本輸入輸出系統例程,以在該第一儲存模組建立多個儲存區塊,且設定一預計的訊息總數,並初始化一輸出訊息數;
(B)藉由該處理模組進行下一基本輸入輸出系統例程;
(C)當該下一基本輸入輸出系統例程為該除錯訊息輸出例程,同時該基本輸入輸出系統處於一初始化階段時,該處理模組將該除錯訊息輸出例程所輸出的一除錯訊息儲存於該等儲存區塊中,並更新該輸出訊息數;
(D) 藉由該處理模組根據該訊息總數、該輸出訊息數及該等儲存區塊剩餘的儲存空間判定是否需壓縮該等儲存區塊所儲存之除錯訊息;
(E)當該處理模組判定出需壓縮該等儲存區塊所儲存之除錯訊息時,藉由該處理模組壓縮該等儲存區塊中所儲存之未壓縮過的除錯訊息,並記錄經壓縮後的壓縮訊息長度,且回到步驟(B);及
(F)當該下一基本輸入輸出系統例程為一驅動階段的起始例程時,藉由該處理模組將儲存於該等儲存區塊中的所有除錯訊息儲存至該第二儲存模組,並回到步驟(B)。
本發明的功效在於:藉由該電腦裝置透過建立多個儲存區塊並利用分次儲存或壓縮技術來儲存所有在該初始化階段產生的除錯訊息,並在該驅動階段的起始例程即將儲存於該等儲存區塊中的所有除錯訊息轉存至該第二儲存模組,而在該驅動階段產生的除錯訊息也儲存在該第二儲存模組中,使得不論是該初始化階段產生的除錯訊息還是該驅動階段產生的除錯訊息皆可自該第二儲存模組取得,不需經由串列埠輸出到另一台電腦,藉此,所取得的除錯訊息係為完整且真實反映的除錯訊息,此外,藉由直接將除錯訊息儲存於該等第二儲存模組,而不需透過一條串列線來輸出,可大幅提升收集除錯訊息之效率性與便利性。
在本發明被詳細描述前,應當注意在以下的說明內容中,類似的元件是以相同的編號來表示。
參閱圖1,本發明儲存基本輸入輸出系統之除錯訊息的方法的一第一實施例係藉由一電腦裝置1來實施。該電腦裝置1包含一暫存模組11、一第一儲存模組12、一第二儲存模組13、一第三儲存模組14及一電連接該暫存模組11、該第一儲存模組12、該第二儲存模組13與該第三儲存模組14的處理模組15。在本實施例中,該暫存模組11例如為一暫存器,該第一儲存模組12例如為一快取記憶體(cache),其也可被包含於該處理模組15中,該第二儲存模組13例如為一主記憶體,該第三儲存模組14例如為一快閃記憶體,該處理模組15例如為一中央處理單元。
以下將配合所附圖式來說明利用該電腦裝置1所實施的本發明儲存基本輸入輸出系統之除錯訊息的方法的一第一實施例,參閱圖1、圖2A與圖2B,本發明儲存基本輸入輸出系統之除錯訊息的方法的一第一實施例包含下列步驟。
在步驟201中,該處理模組15進行一初始化基本輸入輸出系統例程(routine),以在該第一儲存模組12建立多個儲存區塊,並將該等儲存區塊之位址儲存於該暫存模組11,且設定一指示出除錯訊息之分存次數的分存參數值及一儲存索引值,並設定一預計的訊息總數,且初始化一輸出訊息數。在本實施例中,每一儲存區塊例如為換手區塊(hand off block,HOB)
值得特別說明的是,該分存參數值可以被定義為一預設次數而由該處理模組15自動將該分存參數值設定為該預設次數,或者,也可由一管理者依先前的除錯經驗自行輸入分存次數值,而使該處理模組15依據管理者輸入的分存次數值來設定該分存參數值,但不以此為限。此外,在本實施例中,由於該第三儲存模組14為一快閃記憶體,儲存於該第三儲存模組14中之資料不會因為電源關閉而消失,因此該儲存索引值還被儲存於該第三儲存模組14中,故每次該處理模組15在進行該初始化基本輸入輸出系統例程以設定該儲存索引值時,該處理模組15會依據該第三儲存模組14所儲存之該儲存索引值來設定該儲存索引值。
在步驟202中,該處理模組15進行下一基本輸入輸出系統例程。
在步驟203中,該處理模組15判定該下一基本輸入輸出系統例程是否為一除錯訊息輸出例程。當該處理模組15判定出該下一基本輸入輸出系統例程為該除錯訊息輸出例程時,流程進行步驟204;當該處理模組15判定出該下一基本輸入輸出系統例程不為該除錯訊息輸出例程時,流程進行步驟211。
在步驟204中,該處理模組15根據該暫存模組11所儲存之資料判定該基本輸入輸出系統是否處於一初始化階段(亦即,pre-EFI階段,簡稱PEI階段,其中EFI之全名為Extensible Firmware Interface)。當該處理模組15判定出該基本輸入輸出系統處於該初始化階段時,流程進行步驟205;當該處理模組15判定出該基本輸入輸出系統不處於該初始化階段時,流程進行步驟208。其中,該處理係藉由判定該暫存模組11是否存有該等儲存區塊之位址,以判定該基本輸入輸出系統是否處於該初始化階段模組。當該處理判定出該暫存模組11儲存有該等儲存區塊之位址時,該處理模組15即判定該基本輸入輸出系統處於該初始化階段;當該處理判定出該暫存模組11不儲存有該等儲存區塊之位址時,該處理模組15即判定該基本輸入輸出系統不處於該初始化階段。
在步驟205中,該處理模組15根據該分存參數值、該儲存索引值及該輸出訊息數判定是否儲存該除錯訊息輸出例程所輸出的一除錯訊息。當該處理模組15判定出需儲存該除錯訊息時,流程進行步驟206;當該處理模組15判定出不需儲存該除錯訊息時,流程進行步驟207。其中,該處理模組15係藉由計算出該輸出訊息數除以該分存參數值的一餘數,並判定該餘數是否等於該儲存索引值以判定是否儲存該除錯訊息輸出例程所輸出的一除錯訊息,當該處理模組15判定出該餘數等於該儲存索引值時,即代表需儲存該除錯訊息;當該處理模組15判定出該餘數不等於該儲存索引值時,即代表不需儲存該除錯訊息。舉例來說,若該分存參數值為4,當前的該儲存索引值為2, 且當前輸出第19筆除錯訊息(亦即,該輸出訊息數為19),則輸出訊息數除以該分存參數值的餘數為3,由於此時該儲存索引值為2,餘數3不等於該儲存索引值2,因此此次不需儲存第19筆除錯訊息。
在步驟206中,該處理模組15將該除錯訊息儲存於該等儲存區塊中,並更新該輸出訊息數(亦即,將該輸出訊息數加上一)。值得一提的是,在本實施例中,每次在儲存該除錯訊息時,皆是將當前所儲存的該除錯訊息附加在前一筆儲存的該除錯訊息之後。每次在儲存該除錯訊息後,該處理模組15即會更新一訊息長度,使得下次下一筆除錯訊息要儲存至該等儲存區塊時,該處理模組15即將該下一筆除錯訊息儲存在一基底位址加上該訊息長度後的位址,接著將該訊息長度加上該下一筆除錯訊息的長度,以更新該訊息長度。
在步驟209中,該處理模組15根據該訊息總數、該輸出訊息數及該等儲存區塊剩餘的儲存空間判定是否需壓縮該等儲存區塊所儲存之除錯訊息。當該處理模組15判定出需壓縮該等儲存區塊所儲存之除錯訊息時,流程進行步驟210;當該處理模組15判定出不需壓縮該等儲存區塊所儲存之除錯訊息時,流程回到步驟202。
值得一提的是,步驟209包含以下子步驟(見圖5)。
在子步驟501中,該處理模組15根據該訊息總數、該輸出訊息數計算出一待存訊息比例。該處理模組15係將該訊息總數減掉該輸出訊息數以獲得一待存訊息數,接著將該待存訊息數除以該訊息總數以獲得該待存訊息比例。
在子步驟502中,該處理模組15根據該等儲存區塊剩餘的儲存空間與該等儲存區塊全部的儲存空間計算出一剩餘儲存空間比例。該處理模組15係將該等儲存區塊剩餘的儲存空間除以該等儲存區塊全部的儲存空間以獲得該剩餘儲存空間比例。
在子步驟503中,該處理模組15判定該剩餘儲存空間比例是否小於該待存訊息比例,以判定是否需壓縮該等儲存區塊所儲存之除錯訊息。其中,當判定出該剩餘儲存空間比例小於該待存訊息比例時,即代表需壓縮該等儲存區塊所儲存之除錯訊息,故流程進行步驟210;當判定出該剩餘儲存空間比例不小於該待存訊息比例時,即代表不需壓縮該等儲存區塊所儲存之除錯訊息,故流程進行步驟202。
在步驟210中,該處理模組15壓縮該等儲存區塊中所儲存之未壓縮過的除錯訊息,並記錄經壓縮後的壓縮訊息長度,且回到步驟202。
在步驟207中,該處理模組15更新該輸出訊息數(亦即,將該輸出訊息數加上一),且回到步驟202。
在步驟208中,該處理模組15將該除錯訊息輸出例程所輸出的該除錯訊息儲存於該第二儲存模組13,並回到步驟202。
在步驟211中,該處理模組15判定該下一基本輸入輸出系統例程是否為一驅動階段(亦即,DXE階段,其中DXE之全名為 Driver Execution Environment)的起始例程。當該處理模組15判定出該下一基本輸入輸出系統例程為該驅動階段的起始例程時,流程進行步驟212;當該處理模組15判定出該下一基本輸入輸出系統例程不為該驅動階段的起始例程時,流程進行步驟213。
在步驟212中,該處理模組15將儲存於該等儲存區塊中的所有除錯訊息儲存至該第二儲存模組13,並重設該暫存模組11所儲存之資料,且回到步驟202。在本實施例中,該處理模組15係將該暫存模組11所儲存之資料刪除以重設該暫存模組11所儲存之資料。值得一提的是,在該電腦裝置1進入DXE階段後,即表示該第二儲存模組13的初始化已完成而可使用,故可將儲存於該等儲存區塊中的所有除錯訊息轉存至該第二儲存模組13中。
另值得一提的是,步驟212還包含以下子步驟(見圖6)。
在子步驟601中,該處理模組15根據每次壓縮時所記錄的壓縮訊息長度,對該等儲存區塊中所儲存之經壓縮後的除錯訊息進行解壓縮。在本實施例中,該處理模組15係使用一陣列來儲存每一經壓縮後之除錯訊息的壓縮訊息長度。
在子步驟602中,該處理模組15將經解壓縮後的所有除錯訊息儲存至該第二儲存模組13,並重設該暫存模組11所儲存之資料,且回到步驟202。
值得一提的是,在本實施例中,解壓縮之流程係在步驟601進行;然而,在其他實施例中,解壓縮之流程亦可在開機後該管理者欲查看除錯訊息時才進行,如此可以省下開機過程中解壓縮的時間,此時,在步驟212中,該處理模組15係將儲存於該等儲存區塊中的所有除錯訊息及每次壓縮時所記錄的壓縮訊息長度儲存至該第二儲存模組13,以供後續解壓縮時使用。
在步驟213中,該處理模組15判定該下一基本輸入輸出系統例程是否為一載入作業系統例程。當該處理模組15判定出該下一基本輸入輸出系統例程為該載入作業系統例程時(亦即,基本輸入輸出系統例程已結束),流程進行步驟214;當該處理模組15判定出該下一基本輸入輸出系統例程不為該載入作業系統例程時,流程回到步驟202。
在步驟214中,該處理模組15判定該分存參數值是否為一。當該處理模組15判定出該分存參數值為1時,流程結束(亦即,開機自我檢測(Power-On Self-Test,簡稱POST)流程結束);當該處理模組15判定出該分存參數值不為1時,流程進行步驟215。
在步驟215中,該處理模組15還判定該儲存索引值是否等於該分存參數值減1。當該處理模組15判定出該儲存索引值等於該分存參數值減1時(此時表示,需要分次儲存的除錯訊息已經儲存完成),流程進行步驟216;當該處理模組15判定出該儲存索引值不等於該分存參數值減一時(此時表示,需要分次儲存的除錯訊息尚未儲存完成),流程進行步驟217。
在步驟216中,該處理模組15將儲存於該第三儲存模組14的該儲存索引值重設為零,並結束開機自我檢測流程。
在步驟217中,該處理模組15將儲存於該第三儲存模組14的該儲存索引值加一,以更新該儲存索引值,並結束開機自我檢測流程。
值得別說明的是,當該分存參數值不為1時,即代表在該初始化階段產生的除錯訊息需分次儲存,以確保所有在該初始化階段產生的除錯訊息皆能完整地被保留下來,由於該等儲存區塊之儲存空間有限,當在該初始化階段產生的除錯訊息過多時,即需分次儲存。舉例來說,若在初始化階段所產生的所有除錯訊息共有1000筆,且該分存參數值被設定為2,則代表要分兩次才能儲存完所有在初始化階段產生的除錯訊息,因此第一次進行本發明儲存基本輸入輸出系統之除錯訊息的方法的步驟時,該儲存索引值被設定為0,故所儲存的除錯訊息即為第2n筆被輸出的除錯訊息,n=1,2,3,…,499,500,亦即第一次進行儲存基本輸入輸出系統之除錯訊息時所儲存的除錯訊息為第2,4,6,8,…筆除錯訊息,接著,在該電腦裝置1重新開機以再次(亦即,第二次)進行本發明儲存基本輸入輸出系統之除錯訊息的方法的步驟時,該儲存索引值被設定為1,故所儲存的除錯訊息即為第2m+1筆被輸出的除錯訊息,m=0,1,2,…,498,499,亦即第二次進行儲存基本輸入輸出系統之除錯訊息時所儲存的除錯訊息為第1,3,5,7,…筆除錯訊息。在BIOS程式碼沒有經過修改的情況下,除錯訊息即具有再現性,相同的除錯訊息在下一次重新開機時還是會再度出現,故第一次進行本發明儲存基本輸入輸出系統之除錯訊息的方法僅先儲存在該初始化階段所產生之除錯訊息的一半,亦即,儲存第2,4,6,8,…筆除錯訊息,且在第一次進行儲存基本輸入輸出系統之除錯訊息的步驟215時,該分存參數值為2,且該儲存索引值為0,由於該儲存索引值等於零而不等於該分存參數值減一(2-1=1),此時表示需要分次儲存的除錯訊息尚未儲存完成,因此流程會進行步驟217,以將該儲存索引值加一(0+1=1),在下次重新開機而第二次進行本發明儲存基本輸入輸出系統之除錯訊息的方法時才將在該初始化階段所產生之除錯訊息的另一半存完,亦即,儲存第1,3,5,7,…筆除錯訊息,且在第二次進行儲存基本輸入輸出系統之除錯訊息的步驟215時,該分存參數值為2,且該儲存索引值為1,由於該儲存索引值等於一而等於該分存參數值減一(2-1=1),此時表示需要分次儲存的除錯訊息已經儲存完成,因此流程會進行步驟216,以將該儲存索引值重設為零,藉由上述分次儲存的方式即可在滿足該等儲存區塊之儲存空間的限制下完整地儲存該初始化階段所產生之所有的除錯訊息,換句話說,重複進行本發明儲存基本輸入輸出系統之除錯訊息的方法之次數達該分存參數值時,即可完整地儲存該初始化階段所產生之所有的除錯訊息。另值得一提的是,在本實施例中,該處理模組15還會進行步驟209~210以壓縮該等儲存區塊所儲存之除錯訊息;然而,在本發明之其他實施例中,該處理模組15亦可不進行步驟209~210,且在步驟201中不設定該訊息總數,而單純藉由分存方式來完整地儲存該初始化階段所產生之所有的除錯訊息。本發明的一重要目的為 「將bios程式碼在開機過程的所有除錯訊息存到該第二儲存模組13」,因此在步驟設計上,本發明包含了二大儲存程序,由於在剛開機時該第二儲存模組13(亦即,主記憶體)尚未初始化完成的階段,也就是PEI階段。在PEI階段中,本發明進行第一儲存程序,在第一儲存程序中先將除錯訊息暫存於該等儲存區塊(HOB),在該第二儲存模組13完成初始化之後的階段,也就是DXE階段,本發明即進入第二儲存程序,在進入DXE階段後即可將暫存於該等儲存區塊的除錯訊息儲存到該第二儲存模組13中。而進入到DXE階段後,由於該第二儲存模組13已經完成初始化,因此往後輸出的除錯訊息皆可儲存在該第二儲存模組13中。
參閱圖3,本發明儲存基本輸入輸出系統之除錯訊息的方法的一第二實施例係藉由另一電腦裝置1來實施,該另一電腦裝置1大致上與該電腦裝置1相同,其差別在於該電腦裝置1不需包含該第三儲存模組14。
參閱圖3、圖4A與圖4B,本發明儲存基本輸入輸出系統之除錯訊息的方法的一第二實施例包含下列步驟。
在步驟401中,該處理模組15進行一初始化基本輸入輸出系統例程,以在該第一儲存模組12建立多個儲存區塊,並將該等儲存區塊之位址儲存於該暫存模組11,且設定一預計的訊息總數,並初始化一輸出訊息數。
在步驟402中,該處理模組15進行下一基本輸入輸出系統例程。
在步驟403中,該處理模組15判定該下一基本輸入輸出系統例程是否為該除錯訊息輸出例程。當該處理模組15判定出該下一基本輸入輸出系統例程為該除錯訊息輸出例程時,流程進行步驟404;當該處理模組15判定出該下一基本輸入輸出系統例程不為該除錯訊息輸出例程時,流程進行步驟409。
在步驟404中,該處理模組15根據該暫存模組11所儲存之資料判定該基本輸入輸出系統是否處於該初始化階段(亦即,pre-EFI階段,簡稱PEI階段,其中EFI之全名為Extensible Firmware Interface)。當該處理模組15判定出該基本輸入輸出系統處於該初始化階段時,流程進行步驟405;當該處理模組15判定出該基本輸入輸出系統不處於該初始化階段時,流程進行步驟408。其中,該處理係藉由判定該暫存模組11是否存有該等儲存區塊之位址,以判定該基本輸入輸出系統是否處於該初始化階段模組。當該處理判定出該暫存模組11儲存有該等儲存區塊之位址時,該處理模組15即判定該基本輸入輸出系統處於該初始化階段;當該處理判定出該暫存模組11不儲存有該等儲存區塊之位址時,該處理模組15即判定該基本輸入輸出系統不處於該初始化階段。
在步驟405中,該處理模組15將該除錯訊息輸出例程所輸出的一除錯訊息儲存於該等儲存區塊中,並更新該輸出訊息數。
在步驟406中,該處理模組15根據該訊息總數、該輸出訊息數及該等儲存區塊剩餘的儲存空間判定是否需壓縮該等儲存區塊所儲存之除錯訊息。當該處理模組15判定出需壓縮該等儲存區塊所儲存之除錯訊息時,流程進行步驟407;當該處理模組15判定出不需壓縮該等儲存區塊所儲存之除錯訊息時,流程回到步驟402。
類似於第一實施例,步驟406包含子步驟501~503(見圖5),差異僅在於,當判定出該剩餘儲存空間比例小於該待存訊息比例時,流程進行步驟407;當判定出該剩餘儲存空間比例不小於該待存訊息比例時,流程進行步驟402。
在步驟407中,該處理模組15壓縮該等儲存區塊中所儲存之未壓縮過的除錯訊息,並記錄經壓縮後的壓縮訊息長度,且回到步驟402。
在步驟408中,該處理模組15將該除錯訊息輸出例程所輸出的該除錯訊息儲存於該第二儲存模組13,並回到步驟402。
在步驟409中,該處理模組15判定該下一基本輸入輸出系統例程是否為該驅動階段(亦即,DXE階段)的起始例程。當該處理模組15判定出該下一基本輸入輸出系統例程為該驅動階段的起始例程時,流程進行步驟410;當該處理模組15判定出該下一基本輸入輸出系統例程不為該驅動階段的起始例程時,流程進行步驟411。
在步驟410中,該處理模組15將儲存於該等儲存區塊中的所有除錯訊息儲存至該第二儲存模組13,並重設該暫存模組11所儲存之資料,且回到步驟402。
類似於第一實施例,步驟410包含子步驟601~602(見圖6),差異僅在於,進行完步驟602後流程回到步驟402。
在步驟411中,該處理模組15判定該下一基本輸入輸出系統例程是否為該載入作業系統例程。當該處理模組15判定出該下一基本輸入輸出系統例程為該載入作業系統例程時,流程結束(亦即, POST流程結束);當該處理模組15判定出該下一基本輸入輸出系統例程不為該載入作業系統例程時,流程回到步驟402。
綜上所述,本發明儲存基本輸入輸出系統之除錯訊息的方法,藉由該電腦裝置1透過建立多個儲存區塊並利用分次儲存或壓縮技術來儲存所有在該初始化階段產生的除錯訊息,並在該驅動階段的起始例程即將儲存於該等儲存區塊中的所有除錯訊息轉存至該第二儲存模組13,而在該驅動階段產生的除錯訊息也儲存在該第二儲存模組13中,使得不論是該初始化階段產生的除錯訊息還是該驅動階段產生的除錯訊息皆可自該第二儲存模組13取得,不需經由串列埠輸出到另一台電腦,藉此,所取得的除錯訊息係為完整且真實反映的除錯訊息,此外,本發明的除錯訊息取得方式相較於過往使用一條串列線來與另一台電腦連接以收集除錯訊息而言不僅非常有效率也非常便利,故確實能達成本發明的目的。
惟以上所述者,僅為本發明的實施例而已,當不能以此限定本發明實施的範圍,凡是依本發明申請專利範圍及專利說明書內容所作的簡單的等效變化與修飾,皆仍屬本發明專利涵蓋的範圍內。
1:電腦裝置
11:暫存模組
12:第一儲存模組
13:第二儲存模組
14:第三儲存模組
15:處理模組
201~217:步驟
401~411:步驟
501~503:子步驟
601~602:子步驟
本發明的其他的特徵及功效,將於參照圖式的實施方式中清楚地呈現,其中:
圖1是一方塊圖,說明實施本發明儲存基本輸入輸出系統之除錯訊息的方法之第一實施例的一電腦裝置;
圖2A及2B配合地說明本發明儲存基本輸入輸出系統之除錯訊息的方法的第一實施例;
圖3是一方塊圖,說明實施本發明儲存基本輸入輸出系統之除錯訊息的方法之第二實施例的一電腦裝置;
圖4A及4B配合地說明本發明儲存基本輸入輸出系統之除錯訊息的方法的第二實施例;
圖5是一流程圖,說明本發明該電腦裝置之處理模組如何判定是否需壓縮除錯訊息的細部流程;及
圖6是一流程圖,說明本發明該電腦裝置之處理模組如何將儲存於多個儲存區塊中的所有除錯訊息儲存至一第二儲存模組。
201~217:步驟
Claims (13)
- 一種儲存基本輸入輸出系統之除錯訊息的方法,藉由一電腦裝置來實施,該電腦裝置包含一第一儲存模組、一第二儲存模組及一電連接該第一儲存模組與該第二儲存模組的處理模組,該儲存基本輸入輸出系統之除錯訊息的方法包含以下步驟: (A)藉由該處理模組進行一初始化基本輸入輸出系統例程,以在該第一儲存模組建立多個儲存區塊,且設定一指示出除錯訊息之分存次數的分存參數值及一儲存索引值,並初始化一輸出訊息數; (B)藉由該處理模組進行下一基本輸入輸出系統例程; (C)當該下一基本輸入輸出系統例程為一除錯訊息輸出例程,同時該基本輸入輸出系統處於一初始化階段時,藉由該處理模組根據該分存參數值、該儲存索引值及該輸出訊息數判定是否儲存該除錯訊息輸出例程所輸出的一除錯訊息; (D)當該處理模組判定出需儲存該除錯訊息時,藉由該處理模組將該除錯訊息儲存於該等儲存區塊中,並更新該輸出訊息數,且回到步驟(B); (E)當該處理模組判定出不需儲存該除錯訊息時,藉由該處理模組更新該輸出訊息數,並回到步驟(B); (F)當該下一基本輸入輸出系統例程為一驅動階段的起始例程時,藉由該處理模組將儲存於該等儲存區塊中的所有除錯訊息儲存至該第二儲存模組,並回到步驟(B); (G)當該下一基本輸入輸出系統例程為一載入作業系統例程時,藉由該處理模組判定該分存參數值是否為1;及 (H)當該處理模組判定出該分存參數值不為1時,藉由該處理模組更新該儲存索引值。
- 如請求項1所述的儲存基本輸入輸出系統之除錯訊息的方法,該電腦裝置還包含一電連接該處理模組的暫存模組,其中: 在步驟(A)中,該處理模組還將該等儲存區塊之位址儲存於該暫存模組; 在步驟(C)中,該處理模組係藉由判定該暫存模組是否存有該等儲存區塊之位址,以判定該基本輸入輸出系統是否處於該初始化階段;及 在步驟(F)中,該處理模組還重設該暫存模組所儲存之資料。
- 如請求項2所述的儲存基本輸入輸出系統之除錯訊息的方法,其中,在步驟(C)中,當該基本輸入輸出系統不處於該初始化階段時,該處理模組將該除錯訊息輸出例程所輸出的該除錯訊息儲存於該第二儲存模組,並回到步驟(B)。
- 如請求項1所述的儲存基本輸入輸出系統之除錯訊息的方法,其中,在步驟(C)中,該處理模組係藉由計算出該輸出訊息數除以該分存參數值的一餘數,並判定該餘數是否等於該儲存索引值以判定是否儲存該除錯訊息輸出例程所輸出的一除錯訊息。
- 如請求項4所述的儲存基本輸入輸出系統之除錯訊息的方法,在步驟(G)與步驟(H)之間,還包含以下步驟: (I)當該處理模組判定出該分存參數值不為一時,藉由該處理模組還判定該儲存索引值是否等於該分存參數值減一;及 (J)當該處理模組判定出該儲存索引值等於該分存參數值減一時,藉由該處理模組將該儲存索引值重設為零; 其中,在步驟(H)中,當該處理模組判定出該分存參數值不為一,同時該儲存索引值不等於該分存參數值減一時,該處理模組將該儲存索引值加一,以更新該儲存索引值。
- 如請求項1所述的儲存基本輸入輸出系統之除錯訊息的方法,其中,在步驟(A)中,該處理模組進行該初始化基本輸入輸出系統例程還設定一預計的訊息總數,而步驟(D)還包含以下子步驟: (D-1) 當該處理模組判定出需儲存該除錯訊息時,藉由該處理模組將該除錯訊息儲存於該等儲存區塊中,並更新該輸出訊息數; (D-2) 藉由該處理模組根據該訊息總數、該輸出訊息數及該等儲存區塊剩餘的儲存空間判定是否需壓縮該等儲存區塊所儲存之除錯訊息;及 (D-3)當該處理模組判定出需壓縮該等儲存區塊所儲存之除錯訊息時,藉由該處理模組壓縮該等儲存區塊中所儲存之未壓縮過的除錯訊息,並記錄經壓縮後的壓縮訊息長度,且回到步驟(B)。
- 如請求項6所述的儲存基本輸入輸出系統之除錯訊息的方法,其中,步驟(D-2)包含以下子步驟: (D-2-1)該處理模組根據該訊息總數、該輸出訊息數計算出一待存訊息比例; (D-2-2)該處理模組根據該等儲存區塊剩餘的儲存空間與該等儲存區塊全部的儲存空間計算出一剩餘儲存空間比例;及 (D-2-3)該處理模組判定該剩餘儲存空間比例是否小於該待存訊息比例,以判定是否需壓縮該等儲存區塊所儲存之除錯訊息。
- 如請求項7所述的儲存基本輸入輸出系統之除錯訊息的方法,其中,步驟(F)包含以下子步驟: (F-1)當該下一基本輸入輸出系統例程為該驅動階段的起始例程時,藉由該處理模組根據每次壓縮時所記錄的壓縮訊息長度,對該等儲存區塊中所儲存之經壓縮後的除錯訊息進行解壓縮;及 (F-2)該處理模組將經解壓縮後的所有除錯訊息儲存至該第二儲存模組,並回到步驟(B)。
- 一種儲存基本輸入輸出系統之除錯訊息的方法,藉由一電腦裝置來實施,該電腦裝置包含一第一儲存模組、一第二儲存模組及一電連接該第一儲存模組與該第二儲存模組的處理模組,該儲存基本輸入輸出系統之除錯訊息的方法包含以下步驟: (A)藉由該處理模組進行一初始化基本輸入輸出系統例程,以在該第一儲存模組建立多個儲存區塊,且設定一預計的訊息總數,並初始化一輸出訊息數; (B)藉由該處理模組進行下一基本輸入輸出系統例程; (C)當該下一基本輸入輸出系統例程為一除錯訊息輸出例程,同時該基本輸入輸出系統處於一初始化階段時,該處理模組將該除錯訊息輸出例程所輸出的一除錯訊息儲存於該等儲存區塊中,並更新該輸出訊息數; (D) 藉由該處理模組根據該訊息總數、該輸出訊息數及該等儲存區塊剩餘的儲存空間判定是否需壓縮該等儲存區塊所儲存之除錯訊息; (E)當該處理模組判定出需壓縮該等儲存區塊所儲存之除錯訊息時,藉由該處理模組壓縮該等儲存區塊中所儲存之未壓縮過的除錯訊息,並記錄經壓縮後的壓縮訊息長度,且回到步驟(B);及 (F)當該下一基本輸入輸出系統例程為一驅動階段的起始例程時,藉由該處理模組將儲存於該等儲存區塊中的所有除錯訊息儲存至該第二儲存模組,並回到步驟(B)。
- 如請求項9所述的儲存基本輸入輸出系統之除錯訊息的方法,該電腦裝置還包含一暫存模組,其中: 在步驟(A)中,該處理模組還將該等儲存區塊之位址儲存於該暫存模組; 在步驟(C)中,該處理模組係藉由判定該暫存模組是否存有該等儲存區塊之位址,以判定該基本輸入輸出系統是否處於該初始化階段;及 在步驟(F)中,該處理模組還重設該暫存模組所儲存之資料。
- 如請求項9所述的儲存基本輸入輸出系統之除錯訊息的方法,其中,在步驟(C)中,當該基本輸入輸出系統不處於該初始化階段時,該處理模組將該除錯訊息輸出例程所輸出的該除錯訊息儲存於該第二儲存模組,並回到步驟(B)。
- 如請求項9所述的儲存基本輸入輸出系統之除錯訊息的方法,其中,步驟(D)包含以下子步驟: (D-1)該處理模組根據該訊息總數、該輸出訊息數計算出一待存訊息比例; (D-2)該處理模組根據該等儲存區塊剩餘的儲存空間與該等儲存區塊全部的儲存空間計算出一剩餘儲存空間比例;及 (D-3)該處理模組判定該剩餘儲存空間比例是否小於該待存訊息比例,以判定是否需壓縮該等儲存區塊所儲存之除錯訊息。
- 如請求項9所述的儲存基本輸入輸出系統之除錯訊息的方法,其中,步驟(F)包含以下子步驟: (F-1)當該下一基本輸入輸出系統例程為該驅動階段的起始例程時,藉由該處理模組根據每次壓縮時所記錄的壓縮訊息長度,對該等儲存區塊中所儲存之經壓縮後的除錯訊息進行解壓縮;及 (F-2)該處理模組將經解壓縮後的所有除錯訊息儲存至該第二儲存模組,並回到步驟(B)。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109104470A TWI726616B (zh) | 2020-02-13 | 2020-02-13 | 儲存基本輸入輸出系統之除錯訊息的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109104470A TWI726616B (zh) | 2020-02-13 | 2020-02-13 | 儲存基本輸入輸出系統之除錯訊息的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI726616B true TWI726616B (zh) | 2021-05-01 |
TW202131175A TW202131175A (zh) | 2021-08-16 |
Family
ID=77036597
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109104470A TWI726616B (zh) | 2020-02-13 | 2020-02-13 | 儲存基本輸入輸出系統之除錯訊息的方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI726616B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760585A (zh) * | 2020-06-02 | 2021-12-07 | 佛山市顺德区顺达电脑厂有限公司 | 储存基本输入输出系统之除错讯息的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWM400016U (en) * | 2010-05-14 | 2011-03-11 | Dediprog Technology Co Ltd | Intelligent computer diagnostic system and diagnostic card for computer debugging |
US20110302453A1 (en) * | 2010-06-04 | 2011-12-08 | Quanta Computer Inc. | Debug method for computer system |
TW201222240A (en) * | 2010-11-22 | 2012-06-01 | Elitegroup Computer Sys Co Ltd | Testing method for automatically rebooting a motherboard and recording related debug information and rebooting device thereof |
US20160261455A1 (en) * | 2015-03-06 | 2016-09-08 | Quanta Computer Inc. | Automatic debug information collection |
-
2020
- 2020-02-13 TW TW109104470A patent/TWI726616B/zh not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWM400016U (en) * | 2010-05-14 | 2011-03-11 | Dediprog Technology Co Ltd | Intelligent computer diagnostic system and diagnostic card for computer debugging |
US20110302453A1 (en) * | 2010-06-04 | 2011-12-08 | Quanta Computer Inc. | Debug method for computer system |
TW201222240A (en) * | 2010-11-22 | 2012-06-01 | Elitegroup Computer Sys Co Ltd | Testing method for automatically rebooting a motherboard and recording related debug information and rebooting device thereof |
US20160261455A1 (en) * | 2015-03-06 | 2016-09-08 | Quanta Computer Inc. | Automatic debug information collection |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113760585A (zh) * | 2020-06-02 | 2021-12-07 | 佛山市顺德区顺达电脑厂有限公司 | 储存基本输入输出系统之除错讯息的方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202131175A (zh) | 2021-08-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11847470B2 (en) | Request processing method, system on chip, and public cloud management component | |
CN110019004B (zh) | 一种数据处理方法、装置及系统 | |
US8549271B1 (en) | Method, system, and computer readable medium for updating and utilizing the contents of a non-essential region of a memory device | |
US7558804B1 (en) | Method, apparatus, and computer-readable medium for space-efficient storage of variables in a non-volatile computer memory | |
US10776131B2 (en) | Method and apparatus for UEFI firmware boot journal recording | |
US9817857B2 (en) | Deep cloning of objects using binary format | |
CN110795399B (zh) | 一种为应用产生机器id的方法、装置和系统 | |
WO2018040270A1 (zh) | 在Windows系统中加载Linux系统ELF文件的方法及装置 | |
US6961848B2 (en) | System and method for supporting legacy operating system booting in a legacy-free system | |
TWI726616B (zh) | 儲存基本輸入輸出系統之除錯訊息的方法 | |
CN110825419A (zh) | 一种固件刷新方法、装置及电子设备和存储介质 | |
US10185573B2 (en) | Caching based operating system installation | |
WO2023065749A1 (zh) | 分布式数据库的内嵌方法、装置、设备及存储介质 | |
US10642623B1 (en) | Preserving firmware settings during firmware updates | |
CN113051102A (zh) | 文件备份方法、装置、系统、存储介质和计算机设备 | |
CN105512276A (zh) | 一种构建垃圾文件的方法、装置及电子设备 | |
US10970206B2 (en) | Flash data compression decompression method and apparatus | |
US11200203B1 (en) | Accessing files stored in a firmware volume from a pre-boot application | |
WO2019047142A1 (zh) | 程序打补丁的方法、装置、微控制单元和终端设备 | |
US20170132240A1 (en) | Method and system for file storage and access | |
WO2019100704A1 (zh) | 用于多模IoT设备的启动方法、多模IoT设备及存储介质 | |
WO2023060893A1 (zh) | 存储空间管理方法、装置、设备及存储介质 | |
CN113032349A (zh) | 数据存储方法、装置、电子设备及计算机可读介质 | |
CN114527907A (zh) | 菜单数据的处理方法、装置、计算机设备及存储介质 | |
CN114138182B (zh) | 一种分布式云硬盘的跨存储在线克隆方法、系统及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |