專利名稱:系統(tǒng)管理模式的模擬方法
技術領域:
本發(fā)明涉及一種模擬系統(tǒng)管理模式的方法,特別涉及一種用于單芯片(SOC)計算機上,通過基本輸入輸出系統(tǒng)(BIOS)實現(xiàn)的模擬系統(tǒng)管 理模式的方法。
背景技術:
在常規(guī)的個人計算機上,中斷(interrupt)是一種常用的服務。中斷 服務暫時停止正在執(zhí)行的操作,而去執(zhí)行某個特定的操作;當上述操 作完成后,計算機繼續(xù)執(zhí)行剛剛暫停的操作。在微電腦的系統(tǒng)中,DOS (Disk Operating System,》茲盤才喿作系統(tǒng))和BIOS(Basic Input Output System,基本輸入輸出系統(tǒng))都具有許多ISR (Interrupt Service Routine, 中斷服務例程),例如屏幕、鍵盤、磁盤驅動器、打印機、鼠標等多種 與輸入輸出裝置有關的控制程序。通常我們只要在程序中直接使用(INT中斷編號)中斷命令,即可執(zhí) 行該中斷編號的中斷服務例程,80X86系列的計算機規(guī)劃出256種中 斷情況(即00H FFH),程序設計師只要針對中斷情況的需求來配置片 段的命令,即可實現(xiàn)上述中斷情況的操作。當CPU (central processing unit,中央處理單元)執(zhí)行到中斷呼叫命令(INT)時,會"中斷"目前程 序的執(zhí)行,并將程序執(zhí)行的控制權轉移到上述中斷服務例程中,在中 斷完成后,回到被的"中斷"的地點并繼續(xù)執(zhí)行其它的命令。計算機的CPU是通過軟件中斷的命令(INT中斷編碼)來取得中 斷編碼,每個中斷編號都代表某具有某種功能的程序,例如INT 10H 是對屏幕影像進行處理的,INT 16H是對鍵盤進行處理的,INT 21H 是處理DOS功能呼叫的,而以上所述的INT 10H、 INT 16H是BIOS 的中斷,INT21H是DOS中斷。在MS-DOS開機的后,DOS和BIOS所提供的中斷服務例程的節(jié)段地址和偏移地址將存放到中斷向量表。因為在程序中的命令僅指定編碼,CPU是無法執(zhí)行相應的服務程序。只有在具有地址后,CPU才能從所述地址中得到要執(zhí)行的服務程序并予以執(zhí)行。因此這個中斷向量表內(nèi)存放著中斷服務程序的入口地址,每個地址占4個字節(jié)。除了前述的中斷服務,因特爾(Intel)公司還在筆記本計算機上 提供了 一種叫做SMM (system management mode,系統(tǒng)管理才莫式)的中 斷服務。SMM原本是作為電源管理用的,后來逐漸也為臺式計算機采 用,并提供為非可屏蔽中斷月l務(non畫maskable interrupt service)。參考圖1 ,該圖說明常規(guī)SMM中斷服務的流程,當CPU收到SMI 要求(步驟S100)時,立即進入SMM模式(步驟S102)。在常規(guī)的X86 計算機中,在使用閃存裝置(flashdevice)時,BIOS會發(fā)出SMI要求; 或者,在較舊的操作系統(tǒng)中,USB外圍設備會發(fā)出SMI要求,以使得 CPU執(zhí)行SMM服務。在進入SMM模式后,CPU會將原本分配VGA IO存取的A/B頁(A/B page),當作SMM模式的影象存儲器(shadow memory)。參考圖2,該圖是計算機系統(tǒng)的系統(tǒng)地址地圖。地址從0至 9FFFF的存儲地址段(segment)為傳統(tǒng)上指定給DOS操作系統(tǒng)使用的 傳統(tǒng)內(nèi)存。地址從A0000H至BFFFFH的存儲地址段被稱之為A / B 段,是用來當作視頻隨機存取存儲器(video RAM)。當CPU進入系 統(tǒng)管理模式(SMM )運作時,這個內(nèi)存地址萃殳也可當作SMRAM( system management RAM,系統(tǒng)管理隨機存取存儲器)。地址自F0000H至 FFFFFH的64K的存儲地址段被稱之為F段,是用來作為系統(tǒng)BIOS 讀取的存儲地址段。超過IM的內(nèi)存存儲空間稱為擴充的存儲區(qū)域。另外,CPU能將原本存在寄存器(register)中的系統(tǒng)組態(tài)信息存儲 于系統(tǒng)管理隨機存取存儲器的特定地址,然后再執(zhí)行存在SMM內(nèi)存 中的服務例程(service routine)(步驟S104),例如使用閃存裝置或是建 立USB聯(lián)機的服務例程,以對應原本的SMI中斷要求,而使用閃存 裝置或是建立USB聯(lián)機的服務。在服務例程執(zhí)行后,CPU離開SMM 模式(步驟S106),此時CPU會把原本的系統(tǒng)組態(tài)信息讀出,并恢 復中斷前的操作狀態(tài)。在前述的SMM中斷服務的流程中,CPU主要 是通過南橋芯片的SMI管腳從而獲知所需要的SMM中斷服務,因此主要是通過硬件啟動的操作。然而在單芯片(SOC)計算機上,例如單芯片工業(yè)計算機(IPC)并不 提供SMM服務,因此造成程序設計師很大不便。發(fā)明內(nèi)容因此本發(fā)明的目的在于提供一種在非80X86系列計算機上可以模 擬系統(tǒng)管理模式的方法。為達成上述目的,本發(fā)明提供一種模擬系統(tǒng)管理模式的方法,可 SOC計算機上提供SMM服務。該方法包括在BIOS中準備SMM模擬 服務程序,當需要SMM服務時,存儲芯片組設為陰影狀態(tài)、系統(tǒng)組 狀態(tài)信息另外存儲、A/B段內(nèi)存配置為陰影內(nèi)存并進行特定的SMM 服務。SMM服務結束后,BIOS執(zhí)行上述SMM模擬服務程序后將A/B 段內(nèi)存清除,并且恢復系統(tǒng)組狀態(tài)信息。該模擬系統(tǒng)管理模式的方法 可在SOC計算機提供如閃存或是USB接口訪問的SMM服務。
圖1為常規(guī)SMM中斷服務的流程示意圖; 圖2為計算機系統(tǒng)的系統(tǒng)地址圖;圖3為本發(fā)明的模擬系統(tǒng)管理模式方法的計算機系統(tǒng)模塊圖;以及 圖4為本發(fā)明的優(yōu)選實施方式的模擬系統(tǒng)管理模式方法的流程主要組件符號說明 單芯片10 LI高速緩存102 中斷控制器112 SDRAM控制器116 X-bus接口 122 DMA控制器126 LPC接口 130USB主控制器114 南橋芯片組120CPU 100多任務器124 定時器/計數(shù)器128橋芯片組110步驟S200-S220具體實施方式
參考圖3,該圖為實現(xiàn)本發(fā)明模擬系統(tǒng)管理模式方法的計算機系 統(tǒng)模塊圖。該計算機系統(tǒng)設置于單芯片(SOC)計算機上,例如使用單 芯片10的工業(yè)計算機(IPC)。單芯片IO主要包含CPUIOO、北橋芯片 組110、和南橋芯片組120。 CPU IOO連接到北橋芯片組110和L1快 取102。北橋芯片組IIO連接到南橋芯片組120、 USB主控制器114、 中斷控制器112以及SDRAM控制器116。南橋芯片組120連接到DMA 控制器126、定時器/計數(shù)器128、 LPC(low pin count,少針腳型接口) 接口 130和X-bus接口 122。單芯片10可以通過USB主控制器114 訪問USB端口 0和USB端口 1,通過北橋芯片組IIO訪問PCI總線 接口,通過多任務器124訪問SDRAM/ X-bus接口 ,并且通過LPC 接口 130存取LPC總線接口。單芯片10可以通過SDRAM/X-bus接 口訪問隨機處理內(nèi)存(未圖標)并通過該LPC總線接口訪問閃存(未圖 示)。參考圖4,該圖為本發(fā)明優(yōu)選的模擬系統(tǒng)管理模式方法的實施方 式流程圖,該方法主要是在BIOS中準備SMM模擬服務程序,用軟件 的方式模擬SMM服務。首先在BIOS中準備SMM模擬服務程序(步 驟S200),該SMM模擬服務程序可以先儲存在閃存里,在開機后,通 過LPC總線和SDRAM / X-bus的接口存放到隨機處理內(nèi)存,從而加 快SMM服務速度。接著BIOS檢查是否需要模擬SMM模式(步驟 S210),例如BIOS本身可能因為需要執(zhí)行閃存的讀取服務而需要SMM 服務,并發(fā)出SMI請求;或是在周邊組件(如USB組件)發(fā)出IRQ需求 時,BIOS由此判斷是否需要模擬SMM模式。若需要模擬SMM模式, 執(zhí)行步驟S212;否則執(zhí)行步驟S211并操作其它工作。在步驟S212, SMM模擬服務程序存儲芯片組陰影狀態(tài)(shadow status),因為芯片組 存取具有PCI/存儲兩種模式,因此在進行中斷服務前,首先要存儲芯 片組陰影狀態(tài)。接著該SMM模擬服務程序會將原先存在于緩存器的 系統(tǒng)組態(tài)信息存儲到特定的SMM內(nèi)存位置,其地址是SMM內(nèi)存的基址加上FE00h-FFFFh的偏移量(步驟S214 )。然后SMM模擬服務 程序使A/B段內(nèi)存能夠作為陰影內(nèi)存使用,并將中斷服務程序的入 口地址指到SMM內(nèi)存的基址(步驟S216)。然后SMM才莫擬服務程 序會執(zhí)行相對應的SMM服務,例如閃存讀取,USB接口訪問或是其 它INT 13中斷服務(步驟S218)。在SMM服務4丸行完畢的后,該 SMM模擬服務程序將會使得A/B段內(nèi)存無效,并回復到原先存儲在 緩存器內(nèi)的系統(tǒng)組態(tài)信息(步驟S220)。通過上述步驟達到了在SOC 計算機提供SMM的服務,從而簡化程序設計。以上僅為本發(fā)明的示例性的實施方案,并非用來對本發(fā)明加以限 制,本領域的技術人員可以根據(jù)本發(fā)明的教導,在不背離本發(fā)明的范 圍下對本發(fā)明進行各種修改。
權利要求
1.一種模擬系統(tǒng)管理模式的方法,所述方法在單芯片計算機提供系統(tǒng)管理模式服務,包括在BIOS中準備模擬系統(tǒng)管理模式服務程序;所述BIOS偵測是否有系統(tǒng)管理模式服務需求;若有系統(tǒng)管理模式服務需求,則執(zhí)行所述模擬系統(tǒng)管理模式服務程序并存儲芯片組陰影狀態(tài);執(zhí)行所述模擬系統(tǒng)管理模式服務程序并將系統(tǒng)組態(tài)信息存到內(nèi)存位置;執(zhí)行所述模擬系統(tǒng)管理模式服務程序并使A/B段內(nèi)存能夠作為陰影內(nèi)存;執(zhí)行所述模擬系統(tǒng)管理模式服務程序以進行系統(tǒng)管理模式服務;以及,在所述系統(tǒng)管理模式服務結束后,所述模擬系統(tǒng)管理模式服務程序將使所述A/B段內(nèi)存無效,并且恢復原先的系統(tǒng)組態(tài)信息。
2. 如權利要求1所述的模擬系統(tǒng)管理模式的方法,其中所述單芯 片計算機為工業(yè)計算機。
3. 如權利要求1所述的模擬系統(tǒng)管理模式的方法,其中所述系統(tǒng) 管理模式服務為閃存訪問服務或USB接口訪問服務。
4. 如權利要求1所述的模擬系統(tǒng)管理模式的方法,其中所述內(nèi)存 位置地址是系統(tǒng)管理模式內(nèi)存的基址加上FEOOh-FFFFh的偏移量。
5. 如權利要求1所述的模擬系統(tǒng)管理模式的方法,其中進一步包括將模擬系統(tǒng)管理模式服務程序預先存于穩(wěn)定的內(nèi)存里。
6. 如權利要求5所述模擬系統(tǒng)管理模式的方法,其中進一步包括開機后,讀取所述模擬系統(tǒng)管理模式服務程序并存儲所述程序于 隨才幾處理內(nèi)存。
全文摘要
一種模擬系統(tǒng)管理模式的方法,可在單芯片(SOC)計算機提供系統(tǒng)管理模式(SMM)服務,主要BIOS中準備一模擬SMM服務程序,并在有SMM服務需求時,存儲芯片組陰影狀態(tài)、存儲系統(tǒng)組態(tài)信息、將A/B段內(nèi)存致能以作為陰影內(nèi)存及進行SMM服務。SMM服務結束后,BIOS執(zhí)行該模擬SMM服務程序以將A/B段內(nèi)存除能,并且恢復原先系統(tǒng)組態(tài)信息。該模擬系統(tǒng)管理模式的方法可在單芯片計算機提供如閃存或是USB接口訪問的SMM服務。
文檔編號G06F9/445GK101334733SQ20071011244
公開日2008年12月31日 申請日期2007年6月26日 優(yōu)先權日2007年6月26日
發(fā)明者盧瑞榮 申請人:研華股份有限公司