TWI801412B - 偵錯方法 - Google Patents
偵錯方法 Download PDFInfo
- Publication number
- TWI801412B TWI801412B TW107131240A TW107131240A TWI801412B TW I801412 B TWI801412 B TW I801412B TW 107131240 A TW107131240 A TW 107131240A TW 107131240 A TW107131240 A TW 107131240A TW I801412 B TWI801412 B TW I801412B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- processing unit
- central processing
- debug
- test
- Prior art date
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一種偵錯方法,適用於一包含一個中央處理器及一個記憶體的電腦主機並包含下列步驟:藉由該中央處理器執行一個基本輸入輸出系統的程式碼,以執行一個開機自我檢測;該基本輸入輸出系統的程式碼提供一個驅動程式,使得多個偵錯資訊可以對應輸出至該記憶體;在該開機自我檢測的初始階段,當該記憶體完成初始化之後,該中央處理器將該等偵錯資訊儲存至該記憶體;當該開機自我檢測結束之後,藉由一個應用軟體讀取儲存於該記憶體的該等偵錯資訊。本案利用將偵錯資訊儲存至記憶體的偵錯方法,大幅提高開機自我檢測的執行效率,進而縮短開發時間。
Description
本發明是有關於一種偵錯方法,特別是指一種基本輸入輸出系統的偵錯方法。
參閱圖1,習知的電腦主機9包含一個中央處理器(CPU)91、一個電連接該中央處理器的晶片組(PCH)92、一個電連接該晶片組的基本輸入輸出系統(BIOS)93、及一個電連接該晶片組的通用非同步收發傳輸器(Universal Asynchronous Receiver/Transmitter;UART)94。該基本輸入輸出系統93的開機程序操作在一個正常模式(Release Mode)及一個偵錯模式(Debug Mode)之間。當該基本輸入輸出系統93操作在該偵錯模式時,該晶片組92藉由該通用非同步收發傳輸器94將該基本輸入輸出系統93的偵錯資訊,經由一個支援該通用非同步收發傳輸器94之標準的連接埠,例如COM1,傳送至另一個電腦主機8,使得一個程式開發者可以藉由該電腦主機8取得偵錯模式的相關偵錯資訊,進而據以修改該基本輸入輸出系統93的程式碼。
由於支援該通用非同步收發傳輸器94之標準的連接埠的傳輸速度相當緩慢,使得該基本輸入輸出系統93在該正常模式及該偵錯模式時,該開機程序在執行開機自我檢測(Power ON Self Test;POST)的時間差異相當的大。舉例來說,在該正常模式下,執行開機自我檢測的時間約為78秒,而在該偵錯模式下,執行開機自我檢測的時間卻約為264秒。這樣的時間差異顯示偵錯的效率不佳,也就導致開發基本輸入輸出系統的時間變長,因此成為一個待解決的問題。
因此,本發明的目的,即在提供一種可以提高效率的偵錯方法。
於是,本發明偵錯方法,適用於一包含一個中央處理器及一個記憶體的電腦主機並包含步驟(a)~(d)。
於步驟(a),藉由該中央處理器執行一個基本輸入輸出系統的程式碼,以執行一個開機自我檢測(POST)。
於步驟(b),該基本輸入輸出系統的程式碼提供一個驅動程式,使得多個偵錯資訊可以對應輸出至該記憶體的一個位址區塊。
於步驟(c),在該開機自我檢測的初始階段,當該記憶體完成初始化之後,該中央處理器將該等偵錯資訊儲存至該記憶體的該位址區塊。
於步驟(d),當該開機自我檢測結束之後,藉由該中央處理器執行一個應用軟體,以讀取儲存於該記憶體的該位址區塊的該等偵錯資訊。
在一些實施態樣中,該中央處理器包括一個快取記憶體,該偵錯方法還包含一個步驟(e),在該開機自我檢測的初始階段,當該快取記憶體完成初始化之後,且該記憶體初始化之前,該快取記憶體被虛擬成該記憶體的該位址區塊,使得該中央處理器將該等偵錯資訊儲存至該快取記憶體。
在一些實施態樣中,其中,在步驟(c)中,當該記憶體完成初始化之後,該中央處理器還先將該快取記憶體所儲存的該等偵錯資訊儲存至該記憶體的該位址區塊。
在另一些實施態樣中,該偵錯方法還適用於一個電腦主機,並還包含一個步驟(f),在該開機自我檢測的過程中,藉由該電腦主機經由一個擴增偵錯埠(Extended Debug Port;XDP)與該中央處理器連線,以在該基本輸入輸出系統執行該開機自我檢測(POST)的過程中,就能夠讀取該記憶體的該位址區塊所儲存的該等偵錯資訊。
本發明的功效在於:藉由將該開機自我檢測過程中所產生的該等偵錯資訊儲存至該記憶體,使得該開機自我檢測的執行時間相較於習知技術大幅地縮短,進而使得開發者的偵錯效率大幅地提高。如此,不但能夠有效地縮短開發時間,還因為該偵錯模式與該正常模式的執行時間相差不多,開發者可以不需要針對分別該偵錯模式及該正常模式開發兩種版本的基本輸入輸出系統的程式碼,也就是說,開發者只需要提供一個版本的程式碼,即已同時包含該偵錯模式之功能的正常模式,進而有效提高基本輸入輸出系統的開發效率。
在本發明被詳細描述之前,應當注意在以下的說明內容中,類似的元件是以相同的編號來表示。
參閱圖2與圖3,本發明偵錯方法適用於一個電腦主機5,該電腦主機5包含一個中央處理器(CPU)1、一個電連接該中央處理器1的晶片組(PCH)3、一個電連接該晶片組3的基本輸入輸出系統(BIOS)4、及一個電連接中央處理器1的記憶體2。該中央處理器1包括一個快取記憶體(Cache)11,該記憶體2即為該電腦主機5的系統記憶體,例如DDR SDRAM。該偵錯方法包含步驟S1~S6。
於步驟S1,在該電腦主機5開機時,該中央處理器1經由該晶片組3執行該基本輸入輸出系統4的程式碼,以執行一個開機自我檢測(POST)。
於步驟S2,該基本輸入輸出系統4的程式碼提供一個驅動程式(Driver),使得多個偵錯資訊可以對應輸出至該記憶體2的一個位址區塊。
於步驟S3,在該開機自我檢測的初始(Initial)階段,當該快取記憶體11完成初始化之後,且該記憶體2初始化之前,該快取記憶體11被虛擬成該記憶體2的一個位址區塊,使得該中央處理器1將該等偵錯資訊儲存至該快取記憶體11。
於步驟S4,在該開機自我檢測的初始階段,當該記憶體2完成初始化之後,該中央處理器1先將該快取記憶體11所儲存的該等偵錯資訊儲存至該記憶體2的該位址區塊,再將後續產生的該等偵錯資訊儲存至該記憶體2的該位址區塊。
於步驟S5,當該開機自我檢測結束之後,藉由該中央處理器1執行一個應用軟體,以讀取儲存於該記憶體2的該位址區塊的該等偵錯資訊。更詳細地說,該中央處理器1執行該基本輸入輸出系統4的程式碼,而完成一個開機程序,使得使用者可以藉由該中央處理器1執行該應用軟體。該應用軟體例如是UltraEdit,只要具備能將記憶體2所儲存的資料讀出的功能即可,例如以轉換ASCII編碼的形式顯示。
於步驟S6,在該開機自我檢測的過程中,藉由另一個電腦主機7經由一個擴增偵錯埠(Extended Debug Port;XDP)與該中央處理器1連線,以在該基本輸入輸出系統執行該開機自我檢測(POST)的過程中,就能夠讀取該記憶體2的該位址區塊所儲存的該等偵錯資訊。換句話說,藉由該擴增偵錯埠讀取該等偵錯資訊具有即時處理的性質,能夠滿足開發者需要即時更新之偵錯資訊的需求。舉例來說,當該開機自我檢測的過程異常,導致系統在執行開機自我檢測的過程卡住,無法完成該開機程序時,藉由該電腦主機7可以即時地讀取該記憶體2的該等偵錯資訊,使得開發者能夠進一步掌握程式碼的異常狀況。
在本實施例中,該偵錯資訊例如是該程式碼執行至哪一個位置或階段,如檢測至哪個裝置,或者,程式中任何一個相關的暫存器數值等等,如register PPI Notify: EfiPeiSecurity2、Install PPI: EfiPeiLoadFile、StatusCodePei.Entry(FFF 39594)、PcdPeim.Entry(FFF51320)、Size: 90、Power Failure PWR_FLR bit: 1…等等,都不在此限。此外,由於硬體的發展趨勢,該快取記憶體11及該記憶體2的容量都已經能夠完整地儲存在不同執行階段時,已對應產生的該等偵錯資訊。
綜上所述,在該快取記憶體11初始化之後,藉由該快取記憶體11儲存在開機自我檢測過程中所產生的該等偵錯資訊,而在該記憶體2初始化之後,先將該快取記憶體11中的該等偵錯資訊複製至該記憶體2,再將新產生的該等偵錯資訊儲存至該記憶體2中,不但使得本發明不需要利用習知的低速的UART連接埠來傳輸偵錯資訊,而達到大幅縮短偵錯模式的執行時間的優點。更因為該偵錯模式與該正常模式的執行時間已相差不多,而能將該偵錯模式與該正常模式合而為一,使得開發者只要開發一個版本的基本輸入輸出系統4的程式碼,更是能夠大大地提昇開發效率,故確實能達成本發明的目的。
惟以上所述者,僅為本發明的實施例而已,當不能以此限定本發明實施的範圍,凡是依本發明申請專利範圍及專利說明書內容所作的簡單的等效變化與修飾,皆仍屬本發明專利涵蓋的範圍內。
1:中央處理器11:快取記憶體2:記憶體3:晶片組4:基本輸入輸出系統5:電腦主機7:電腦主機8:電腦主機9:電腦主機91:中央處理器92:晶片組93:基本輸入輸出系統94:通用非同步收發傳輸器S1~S6:步驟
本發明的其他的特徵及功效,將於參照圖式的實施方式中清楚地呈現,其中: 圖1是一方塊圖,說明習知的一個電腦主機及另一個電腦主機; 圖2是一方塊圖,說明本發明偵錯方法適用的一個電腦主機;及 圖3是一流程圖,說明本發明偵錯方法的一個實施例。
S1~S6:步驟
Claims (2)
- 一種偵錯方法,適用於一包含一個中央處理器及一個記憶體的電腦主機,該中央處理器包括一個快取記憶體,該偵錯方法包含下列步驟:(a)藉由該中央處理器執行一個基本輸入輸出系統的程式碼,以在一個偵錯模式執行一個開機自我檢測(POST);(b)該基本輸入輸出系統的程式碼提供一個驅動程式,使得多個偵錯資訊可以對應輸出至該記憶體的一個位址區塊;(e)在該開機自我檢測的初始階段,當該快取記憶體完成初始化之後,且該記憶體初始化之前,該快取記憶體被虛擬成該記憶體的該位址區塊,使得該中央處理器將該等偵錯資訊儲存至該快取記憶體;(c)在該開機自我檢測的初始階段,當該記憶體完成初始化之後,該中央處理器將該等偵錯資訊儲存至該記憶體的該位址區塊,且該中央處理器還先將該快取記憶體所儲存的該等偵錯資訊儲存至該記憶體的該位址區塊;及(d)當該開機自我檢測結束之後,藉由該中央處理器執行一個應用軟體,以讀取儲存於該記憶體的該位址區塊的該等偵錯資訊。
- 如請求項1所述的偵錯方法,還適用於一個電腦主機,該偵錯方法還包含一個步驟(f),在該開機自我檢測的過程中,藉由該電腦主機經由一個擴增偵錯埠(Extended Debug Port;XDP)與該中央處理器連線,以在該基本輸入輸出系統執行該開機自我檢測(POST)的過程中,就能夠讀取該記憶體的該位址區塊所儲存的該等偵錯資訊。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107131240A TWI801412B (zh) | 2018-09-06 | 2018-09-06 | 偵錯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW107131240A TWI801412B (zh) | 2018-09-06 | 2018-09-06 | 偵錯方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202011193A TW202011193A (zh) | 2020-03-16 |
TWI801412B true TWI801412B (zh) | 2023-05-11 |
Family
ID=70766778
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107131240A TWI801412B (zh) | 2018-09-06 | 2018-09-06 | 偵錯方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI801412B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983179A (zh) * | 2005-12-15 | 2007-06-20 | 英业达股份有限公司 | 开机自我测试除错系统及方法 |
TW201810037A (zh) * | 2016-08-17 | 2018-03-16 | 上海兆芯集成電路有限公司 | 輸入輸出擴展晶片以及其驗證方法 |
TWI620061B (zh) * | 2017-05-15 | 2018-04-01 | 神雲科技股份有限公司 | 伺服器的偵錯裝置及其偵錯方法 |
TWI626539B (zh) * | 2017-04-25 | 2018-06-11 | 精英電腦股份有限公司 | 電腦系統錯誤的警示方法 |
TW201821990A (zh) * | 2016-12-14 | 2018-06-16 | 英業達股份有限公司 | 電腦系統及檢測方法 |
-
2018
- 2018-09-06 TW TW107131240A patent/TWI801412B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983179A (zh) * | 2005-12-15 | 2007-06-20 | 英业达股份有限公司 | 开机自我测试除错系统及方法 |
TW201810037A (zh) * | 2016-08-17 | 2018-03-16 | 上海兆芯集成電路有限公司 | 輸入輸出擴展晶片以及其驗證方法 |
TW201821990A (zh) * | 2016-12-14 | 2018-06-16 | 英業達股份有限公司 | 電腦系統及檢測方法 |
TWI626539B (zh) * | 2017-04-25 | 2018-06-11 | 精英電腦股份有限公司 | 電腦系統錯誤的警示方法 |
TWI620061B (zh) * | 2017-05-15 | 2018-04-01 | 神雲科技股份有限公司 | 伺服器的偵錯裝置及其偵錯方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202011193A (zh) | 2020-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10139876B2 (en) | Efficient reboot of an operating system executed in a virtual machine | |
US9501289B2 (en) | Method of a UEFI firmware and computer system thereof | |
TWI503673B (zh) | 電腦系統、初始化電腦系統之方法及電腦程式產品 | |
US10606677B2 (en) | Method of retrieving debugging data in UEFI and computer system thereof | |
TWI470420B (zh) | 除錯方法及電腦系統 | |
US11281768B1 (en) | Firmware security vulnerability verification service | |
US9395919B1 (en) | Memory configuration operations for a computing device | |
US10552297B2 (en) | Determining instruction execution history in a debugger | |
US10642678B1 (en) | PCI/PCIe-non-compliance-vulnerability detection apparatus and method | |
CN107135462B (zh) | Uefi固件的蓝牙配对方法及其计算系统 | |
US10586048B2 (en) | Efficient reboot of an operating system | |
CN114765051A (zh) | 内存测试方法及装置、可读存储介质、电子设备 | |
US7430683B2 (en) | Method and apparatus for enabling run-time recovery of a failed platform | |
CN113377586B (zh) | 一种服务器自动化检测方法、装置及存储介质 | |
CN110955566B (zh) | 侦错方法 | |
US11599342B2 (en) | Pathname independent probing of binaries | |
JP5551828B2 (ja) | プローブレストレース収集によるアーキテクチャ実行の再生 | |
TWI801412B (zh) | 偵錯方法 | |
WO2022199622A1 (zh) | 一种电子设备的启动程序的运行方法和电子设备 | |
CN110321171B (zh) | 开机检测装置、系统及其方法 | |
US10754743B2 (en) | Apparatus and method using debug status storage element | |
JP2022520914A (ja) | メモリ組込み自己テストコントローラを用いる読み出し専用メモリのテスト | |
TWI794997B (zh) | 固態硬碟裝置的除錯方法及裝置以及電腦程式產品 | |
WO2019169615A1 (zh) | 访问指令sram的方法和电子设备 | |
US8051329B1 (en) | Method and system for initializing a computing system |