專利名稱:允許動態(tài)系統(tǒng)配置和診斷的自引導裝置的制作方法
技術領域:
本發(fā)明涉及計算機系統(tǒng),尤其涉及計算機的重新配置和診斷。
與本發(fā)明相關的背景技術在計算機系統(tǒng)中,如設備驅(qū)動程序或其他專用應用程序之類的固件被儲存在可擦寫可編程只讀存儲器(EPROM)中。將可擦寫可編程只讀存儲器用于此用途的原因在于,它們是非揮發(fā)性的(即斷電后不會丟失儲存的數(shù)據(jù)),而且它們允許根據(jù)需要改變和/或升級存儲的固件。然而,要想擦去現(xiàn)有固件并編程寫入新固件,必須使用特殊的設備將可擦寫可編程只讀存儲器從主板的槽中取出后才能進行。
閃速存儲器(即固態(tài)存儲器)是一種正獲得廣泛支持以取代可擦寫可編程只讀存儲器的新型技術,因為它和可擦寫可編程只讀存儲器一樣,也是非揮發(fā)性的。另一方面,和可擦寫可編程只讀存儲器不同,閃速存儲器允許系統(tǒng)處理器控制下的系統(tǒng)內(nèi)升級。閃速存儲器與其他可重寫存儲器技術的另一個差別在于,閃速存儲器的編程過程只涉及到將二進制的1變?yōu)?,而其擦寫過程只涉及到將0變?yōu)?,1是閃速存儲器存儲單元的缺省二進制值。由此可見,向閃速存儲器寫入固件的過程要求擦除和編程兩步操作。例如在Brian Dipert和Markus Levy的《設計閃速存儲器》(1994年第2版)中,可以找到關于閃速存儲器技術的討論。此處引用該文作為參考背景資料。
圖1是先有技術計算機系統(tǒng)100的方框圖,它允許在系統(tǒng)處理器的控制下對固件進行擦寫和重編程。例如,固件可以是設備驅(qū)動程序,用于操作與計算機系統(tǒng)100相連接的外設。固件也可以是診斷程序,用于確定計算機系統(tǒng)100運行過程中是否存在錯誤,并確定錯誤的來源。進一步,固件還可以提供計算機系統(tǒng)100運行時需要的配置參數(shù)。
計算機系統(tǒng)100由CPU101、內(nèi)存102、閃速存儲器103和軟驅(qū)104組成,它們都與總線105連接。在擦除操作中,從軟驅(qū)104中的軟盤中獲得程序,并將其送往內(nèi)存102儲存。然后,CPU101執(zhí)行儲存在內(nèi)存102中的指令代碼,為閃速存儲器103中的存儲單元提供需要的電壓,以執(zhí)行擦除操作。類似地,在編程過程中,從軟驅(qū)104中的軟盤中獲得程序,并將其送往內(nèi)存102儲存。然后,CPU101執(zhí)行儲存在內(nèi)存102中的指令代碼,為閃速存儲器103中選定的存儲單元提供需要的電壓,將固件編程寫入閃速存儲器103中。
在先有技術中,要對閃速存儲器103編程,被編程寫入閃速存儲器103的固件在現(xiàn)場必須有一份程序的拷貝。最好的情況是,由于將程序送往野外而產(chǎn)生的延遲可能會導致一些不便。最壞的情況是,在涉及到診斷程序的案例中,延遲會中斷計算機系統(tǒng)100的使用,直到系統(tǒng)錯誤被檢測出并被糾正。
那么就需要允許將固件遠程動態(tài)寫入可編程存儲器的裝置,系統(tǒng)和方法。
本發(fā)明概要由此,本發(fā)明提供了一種裝置,系統(tǒng)和方法,允許將固件遠程動態(tài)寫入可編程存儲器。
本發(fā)明使用一種允許將固件遠程動態(tài)寫入可編程存儲器的設備,從而達到了上述要求。所述設備包括處理器、并-串轉(zhuǎn)換器、第一內(nèi)存以及通信設備。
所述并-串轉(zhuǎn)換器與處理器連接。所述可編程存儲器與處理器連接。所述第一內(nèi)存與處理器連接。所述第一內(nèi)存儲存指令代碼。當處理器執(zhí)行指令代碼時,為所述并-串轉(zhuǎn)換器設置預先設定的通信參數(shù)。
所述通信設備與并-串轉(zhuǎn)換器連接。所述通信設備將本裝置與網(wǎng)絡相連接。一旦該連接建立,通信設備將程序的指令代碼從遠程傳輸?shù)奖狙b置。程序一旦被處理器執(zhí)行,就會將固件程序?qū)懭肟删幊檀鎯ζ鳌?br>
本方面的這些特征和優(yōu)點,在仔細研究了下文中本發(fā)明優(yōu)選實施例的詳細描述及附圖后,將會更加清楚。
附圖的簡要說明先有技術圖1是先有技術計算機系統(tǒng)的方框示意圖,所述計算機系統(tǒng)允許將固件編程寫入計算機系統(tǒng)中的閃速存儲器。
圖2是根據(jù)本發(fā)明的計算機系統(tǒng)的方框示意圖。
圖3是儲存在圖2所示的引導只讀存儲器中的指令代碼的流程圖。
本發(fā)明的詳細描述在以下的本發(fā)明詳細描述中,提供了許多特定的細節(jié),以便完整理解本發(fā)明。然而,了解技術的人士可以清楚地知道,無需這些特定細節(jié)也可以實現(xiàn)本發(fā)明。在其他實施例中,并未詳細描述眾所周知的方法、步驟、部件和電路,以免對本發(fā)明的各方面造成不必要的喧賓奪主的效果。
參照圖2,該圖是根據(jù)本發(fā)明的計算機系統(tǒng)200的方框示意圖。所述計算機系統(tǒng)200包括中央處理單元201,引導只讀存儲器202,閃速存儲器203,隨機存取存儲器204,以及通用異步接收/發(fā)送器(UART)205,這些部件通過總線206連接起來。異步接收/發(fā)送器200依次與通信設備205連接,后者將計算機系統(tǒng)200與通信網(wǎng)絡208相連。
引導只讀存儲器202儲存用于初始化異步接收/發(fā)送器200和通信設備205的指令代碼。所述引導只讀存儲器202中的指令代碼還用于從與通信網(wǎng)絡208相連的遠程數(shù)據(jù)源獲取程序。所述隨機存取存儲器204儲存通過網(wǎng)絡從數(shù)據(jù)源獲取的程序。儲存在隨機存取存儲器204中的程序被中央處理單元201執(zhí)行時,進行必要的擦除和編程過程,將固件寫入閃速存儲器203中。數(shù)據(jù)在中央處理單元201和異步接收/發(fā)送器205之間通過系統(tǒng)總線以并行方式傳輸。數(shù)據(jù)在異步接收/發(fā)送器205和通信設備207之間以串行方式傳輸。因此,異步接收/發(fā)送器205對進出計算機系統(tǒng)200的數(shù)據(jù)進行必要的串-并和并-串轉(zhuǎn)換。通信設備207通過網(wǎng)絡208在計算機系統(tǒng)200和其他設備之間傳輸數(shù)據(jù)。對本領域內(nèi)普通技術人員應該清楚,通信設備205可以是任何能提供與局域網(wǎng)(LAN)和廣域網(wǎng)(WAN)等通信網(wǎng)絡的接口的數(shù)據(jù)通信電路。在優(yōu)選實施例中,通信設備205是調(diào)制解調(diào)器。
圖3是儲存在啟動只讀存儲器202中的算法的流程圖。正如上文討論的那樣,算法中包括用于初始化異步接收/發(fā)送器205和通信設備207的指令代碼。另外,該算法還包括用于獲取程序的指令代碼,該程序?qū)碜耘c網(wǎng)絡208相連的數(shù)據(jù)源的固件寫入隨機存取存儲器204。
在優(yōu)選實施例中,計算機系統(tǒng)200的中央處理單元201只在加電重啟后的引導過程中,執(zhí)行儲存在只讀存儲器202中的算法。在步驟301,用預先確定的通信參數(shù)初始化異步接收/發(fā)送器205。優(yōu)選地,以預先定義的協(xié)議bps(每秒位速率),bpc(每字符位數(shù))以及奇偶模式來設置異步接收/發(fā)送器205,例如,每秒9600位,使用8位的數(shù)據(jù)字符以及無奇偶校驗位。步驟301還可以包括讓通信設備207直接與網(wǎng)絡208上的數(shù)據(jù)源進行通信的指令代碼。例如,通信設備207可能是一個調(diào)制解調(diào)器,可以指令其撥號與遠程服務器連接。
然后,算法向數(shù)據(jù)源發(fā)出請求,要求其對程序指令代碼的傳輸進行初始化(步驟302)。初始化完畢后,數(shù)據(jù)源開始向計算機系統(tǒng)200發(fā)送程序的指令代碼。在優(yōu)選實施例中,建立的方式是數(shù)據(jù)源發(fā)出的第1個數(shù)據(jù)字節(jié)后的2個數(shù)據(jù)字節(jié)含有程序指令代碼的字節(jié)數(shù)。這樣,引導只讀存儲器202中的算法對數(shù)據(jù)源發(fā)出的第1個數(shù)據(jù)字節(jié)的接收情況進行監(jiān)視。該算法保持環(huán)路狀態(tài),直到第1個數(shù)據(jù)字節(jié)被接收。第1個數(shù)據(jù)字節(jié)被接收后,算法監(jiān)視下2個數(shù)據(jù)字節(jié)的接收情況(步驟304)。然后,將計數(shù)器的長度計數(shù)器設置為數(shù)據(jù)傳輸?shù)淖止?jié)數(shù)。這樣,字節(jié)數(shù)可用于監(jiān)視數(shù)據(jù)傳輸?shù)倪^程。
前3個數(shù)據(jù)字節(jié)后的數(shù)據(jù)是程序的指令代碼。所以將前3個數(shù)據(jù)字節(jié)后的數(shù)據(jù)儲存在隨機存取存儲器204中。同時,中央處理單元201使其地址指針指向隨機存取存儲器204的起始地址,以便在該內(nèi)存地址儲存后續(xù)的數(shù)據(jù)字節(jié)。在步驟307處,將從數(shù)據(jù)源獲得的一個數(shù)據(jù)字節(jié)儲存在地址指針指定的地址空間(步驟307)。計數(shù)器的長度計數(shù)器減1,以便保持與接收到的程序指令數(shù)據(jù)字節(jié)數(shù)一致(步驟308)。地址指針的內(nèi)容增加到隨機存取存儲器204中用于儲存下一個數(shù)據(jù)字節(jié)的下一個內(nèi)存地址(步驟309)。然后算法計算出“校驗和”,以確保接收到的數(shù)據(jù)無誤。這樣,每次接收到程序指令代碼的數(shù)據(jù)字節(jié),就算出一個新的“校驗和”(步驟310)。
在步驟311,算法監(jiān)視長度計數(shù)器,以確定是否已經(jīng)接收到了所有與程序指令代碼相關的數(shù)據(jù)字節(jié)。如果長度計數(shù)器的當前值大于0,則表示還有與程序指令代碼相關的數(shù)據(jù)沒有傳輸完畢,算法跳回步驟307處,繼續(xù)接收數(shù)據(jù)字節(jié)并將其儲存在隨機存取存儲器204中。否則,如果長度計數(shù)器的當前值為0,則表示已收到所有數(shù)據(jù)字節(jié),然后算法接收在與程序指令代碼相關的數(shù)據(jù)字節(jié)后發(fā)送的校驗值“校驗和”。所述校驗值“校驗和”被儲存在指定的寄存器中(步驟312)。
算法執(zhí)行冗余校驗,確保已收到所有要傳輸?shù)臄?shù)據(jù)字節(jié)。其方法是,算法將計算出的“校驗和”的值與步驟313處接收到的“校驗和”的值進行比較。任何本領域內(nèi)的普通技術人員都很清楚,在本發(fā)明的的范圍內(nèi),還可以使用和考慮其他的冗余校驗方法。
如果計算出的“校驗和”值與接收到的“校驗和”值不相等,則表示傳輸過程有誤,算法發(fā)送“NACK”字節(jié)通知數(shù)據(jù)源重新發(fā)送(步驟316)。然后算法從步驟301重新開始。如果計算出的“校驗和”值與接收到的“校驗和”值相等,表示傳輸過程無誤,算法發(fā)送“ACK”字節(jié)通知數(shù)據(jù)源傳輸過程結束(步驟314)。在后一種情況下,中央處理單元201開始執(zhí)行駐留在隨機存取存儲器204中的程序。算法跳轉(zhuǎn)至儲存在隨機存取存儲器204中的程序的起始處,交出控制權(步驟315)。
這樣,就描述了本發(fā)明的優(yōu)選實施例,即一種允許從遠程地點將固件動態(tài)寫入可編程存儲器的裝置。以上所述僅是本發(fā)明的優(yōu)選實施例,并非對本發(fā)明作任何限制,具體闡述詳見隨附的權利要求。
權利要求
1.一種裝置,允許將網(wǎng)上遠程地點的固件動態(tài)寫入可編程存儲器,所述裝置包括處理器;與處理器連接的并-串轉(zhuǎn)換器;與處理器連接的可編程存儲器;與處理器連接的第一內(nèi)存,所述第一內(nèi)存存儲指令代碼,所述指令代碼被處理器執(zhí)行時設置并-串轉(zhuǎn)換器的通信參數(shù);以及與并-串轉(zhuǎn)換器連接的通信設備,該通信設備連接本裝置與網(wǎng)絡的通信設備,將遠程數(shù)據(jù)源的程序指令代碼傳輸?shù)奖狙b置的通信設備,所述程序被處理器執(zhí)行時,將固件程序?qū)懭肟删幊檀鎯ζ鳌?br>
2.根據(jù)權利要求1所述的裝置,還包括與處理器連接的第二內(nèi)存,所述第二內(nèi)存存儲程序的指令代碼。
3.根據(jù)權利要求2所述的裝置,其中所述的可編程存儲器為閃速存儲器。
4.根據(jù)權利要求2所述的裝置,其中所述的第一內(nèi)存為只讀存儲器。
5.根據(jù)權利要求2所述的裝置,其中所述的第二內(nèi)存為隨機訪問存儲器。
6.根據(jù)權利要求2所述的裝置,其中所述的通信設備為調(diào)制解調(diào)器。
7.根據(jù)權利要求2所述的裝置,其中所述的并-串轉(zhuǎn)換器的操作參數(shù)包括9600位/秒的速度參數(shù),8位的字符數(shù)據(jù),且無奇偶校驗。
8.根據(jù)權利要求2所述的裝置,其中所述的儲存在第一內(nèi)存中的指令代碼被處理器執(zhí)行時,建立與數(shù)據(jù)源的通信。
9.根據(jù)權利要求2所述的裝置,其中所述的儲存在第一內(nèi)存中的指令代碼被處理器執(zhí)行時,進行冗余校驗以確保傳輸?shù)臄?shù)據(jù)無誤。
10.一個計算機系統(tǒng),允許將網(wǎng)上遠程地點的固件動態(tài)寫入可編程存儲器,其中包括一條總線;與總線連接的中央處理器;與總線連接的并-串轉(zhuǎn)換器;與總線連接的可編程存儲器;與總線連接的第一內(nèi)存,所述第一內(nèi)存儲存指令代碼,所述指令代碼被中央處理器執(zhí)行時,為并-串轉(zhuǎn)換器設置通信參數(shù);及與并-串轉(zhuǎn)換器連接的通信設備,連接計算機系統(tǒng)與網(wǎng)絡的通信設備,將遠程數(shù)據(jù)源的程序指令代碼傳輸?shù)奖居嬎銠C系統(tǒng)的通信設備,所述程序被處理器執(zhí)行時,將固件程序?qū)懭肟删幊檀鎯ζ鳌?br>
11.根據(jù)權利要求10所述的計算機系統(tǒng),還包括與處理器連接的第二內(nèi)存,所述第二內(nèi)存存儲程序的指令代碼。
12.根據(jù)權利要求11所述的計算機系統(tǒng),其中所述的可編程存儲器為閃速存儲器。
13.根據(jù)權利要求11所述的計算機系統(tǒng),其中所述的第一內(nèi)存為只讀存儲器。
14.根據(jù)權利要求11所述的計算機系統(tǒng),其中所述的第二內(nèi)存為隨機訪問存儲器。
15.根據(jù)權利要求11所述的計算機系統(tǒng),其中所述的通信設備為調(diào)制解調(diào)器。
16.根據(jù)權利要求11所述的計算機系統(tǒng),其中所述的并-串轉(zhuǎn)換器的操作參數(shù)包括9600位/秒的速度參數(shù),8位的字符數(shù)據(jù),且無奇偶校驗。
17.根據(jù)權利要求11所述的計算機系統(tǒng),其中所述的儲存在第一內(nèi)存中的指令代碼被處理器執(zhí)行時,建立與數(shù)據(jù)源的通信。
18.根據(jù)權利要求11所述的計算機系統(tǒng),其中所述的儲存在第一內(nèi)存中的指令代碼被處理器執(zhí)行時,進行冗余校驗以確保傳輸?shù)臄?shù)據(jù)無誤。
19.一種方法,用于將聯(lián)網(wǎng)的遠程地點的固件寫入可編程存儲器,該方法包括a)與遠程的數(shù)據(jù)源建立連接;b)設置通信參數(shù);c)將數(shù)據(jù)源的指令代碼傳輸?shù)接嬎銠C系統(tǒng);d)將指令代碼儲存在內(nèi)存中;及e)使用處理器,執(zhí)行儲存在內(nèi)存中的指令代碼,同時被執(zhí)行的指令代碼將固件程序?qū)懭肟删幊檀鎯ζ鳌?br>
20.根據(jù)權利要求20所述的方法,其中所述的可編程存儲器為閃速存儲器。
全文摘要
本發(fā)明提供了一種可遠程對計算機系統(tǒng)進行動態(tài)配置和/或診斷的裝置。計算機系統(tǒng)從數(shù)據(jù)源獲取程序的指令代碼。該指令代碼被中央處理單元(CPU)執(zhí)行時,可以進行必要的擦寫和編程操作,將固件程序嵌入閃速存儲器中。該固件程序可用于進行配置或診斷。
文檔編號G06F9/445GK1238048SQ97199765
公開日1999年12月8日 申請日期1997年11月14日 優(yōu)先權日1996年11月15日
發(fā)明者納拉?,敗けR卡拉, 卡米斯瓦倫·西瓦馬尼, 奧托·斯波林 申請人:塞瑞斯邏輯公司