TWI720594B - 遠端更新韌體的控制方法 - Google Patents
遠端更新韌體的控制方法 Download PDFInfo
- Publication number
- TWI720594B TWI720594B TW108130188A TW108130188A TWI720594B TW I720594 B TWI720594 B TW I720594B TW 108130188 A TW108130188 A TW 108130188A TW 108130188 A TW108130188 A TW 108130188A TW I720594 B TWI720594 B TW I720594B
- Authority
- TW
- Taiwan
- Prior art keywords
- identification code
- firmware
- computer host
- system management
- address
- Prior art date
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
一種遠端更新韌體的控制方法藉由一第一電腦主機對一第二電腦主機實施,該第二電腦主機包含一系統管理匯流排控制器及至少一從屬裝置,每一該從屬裝置具有一韌體。該控制方法包含:執行一第一指令及一第二指令,以分別獲得一PCIe位址及一基地址;根據該基地址掃描該系統管理匯流排控制器的多個從屬位址,獲得對應每一該從屬裝置的一產品識別碼;進而獲得一產品型號及一韌體識別碼,並據以判斷是否對其所對應的該從屬裝置的該韌體作更新。
Description
本發明是有關於一種控制方法,特別是指一種遠端更新韌體的控制方法。
習知的一種電腦系統,包含一中央處理器(CPU)、一電連接該中央處理器的主記憶體、一電連接該中央處理器的晶片組(PCH)、一電連接該晶片組的系統管理匯流排(System Management Bus,SMBus)控制器(Controller)、及一電連接該系統管理匯流排控制器的從屬裝置。該從屬裝置與該系統管理匯流排控制器之間是以積體電路匯流排(Inter-Integrated Circuit Bus,I2C Bus)作電連接,並符合I2C協定。該從屬裝置例如是一種具有韌體(Firmware)的PCIE(PCI Express)裝置(device),或一種具有韌體的複雜可程式邏輯裝置(Complex Programmable Logic Device,CPLD),舉例來說,該從屬裝置是各種監測溫度或風扇轉速等等的硬體監視器(Hardware monitor)。
當該從屬裝置的韌體需要更新時,現有的第一種作法是利用一種符合JTAG(Joint Test Action Group)的介面,以離線(Off-line)燒錄的方式作更新。第二種作法是該電腦系統必須還具備一基板管理控制器(Baseboard management controller,BMC)及一網路控制器(Network interface controller,NIC),以藉由該基板管理控制器及該網路控制器,採用一種遠端更新的方式來完成。然而,現有的這一種更新韌體的方法不但需要在該電腦系統上預留介面的接腳,且還需要使用者手動地離線執行更新,相當地不方便。而第二種更新韌體的方法則必須要在該電腦系統具有基板管理控制器才能實施,因此,當該電腦系統不具備基板管理控制器時,如何提供一種針對前述從屬裝置的韌體更新的控制方法便成為一個待解決的問題。
因此,本發明的目的,即在提供一種不需要基板管理控制器即能實施的遠端更新韌體的控制方法。
於是,本發明遠端更新韌體的控制方法適用於一第一電腦主機及一第二電腦主機,該第一電腦主機與該第二電腦主機建立連線且都支援SSH (Secure Shell)協定。該第二電腦主機包含一系統管理匯流排控制器(System Management Bus Controller,SMBus Controller)及至少一從屬裝置,每一該從屬裝置具有一韌體,並與該系統管理匯流排控制器之間以積體電路匯流排(Inter-Integrated Circuit Bus,I2C Bus)形成電連接,且以符合I2C協定作溝通。該控制方法包含步驟(a)~(d)。
於步驟(a),藉由該第一電腦主機執行屬於該SSH協定的一第一指令,以獲得該系統管理匯流排控制器的一PCIe位址(Address)。
於步驟(b),藉由該第一電腦主機根據該系統管理匯流排控制器的該PCIe位址,執行屬於該SSH協定的一第二指令,以獲得該系統管理匯流排控制器的一基地址(base address registers)。
於步驟(c),藉由該第一電腦主機根據一系統管理匯流排(SMBus)的一輸入輸出位址(I/O address)規範(Spec)及該基地址,依序掃描該系統管理匯流排控制器的多個從屬位址(Slave address),以獲得對應每一該從屬裝置的一產品識別碼。
於步驟(d),藉由該第一電腦主機獲得對應該產品識別碼的一產品型號及一韌體識別碼,並根據已知的一預設產品識別碼、一預設產品型號、及一預設韌體識別碼,判斷該產品識別碼及該預設產品型號分別與該預設產品識別碼及該預設產品型號相符合時,且該韌體識別碼與該預設韌體識別碼不相符時,對所對應的該從屬裝置的該韌體作更新。
在一些實施態樣中,其中,在步驟(a)中,在步驟(a)中,該第一指令為ssh root@IP address “lspci |grep –i smbus,IP address為該第二電腦主機的一網際網路協定位址。
在一些實施態樣中,其中,在步驟(b)中,在步驟(b)中,該第二指令為ssh root@IP address “lspci –s 該PCIe位址 –x”。
在一些實施態樣中,其中,在步驟(b)中,該第一電腦主機根據該PCIe位址,由一第X1位元組(Byte)開始依序讀取數值,以獲得該基地址,X1是正整數。
在另一些實施態樣中,其中,步驟(d)包括子步驟(d1)~(d3)。
於步驟(d1),該第一電腦主機判斷該至少一從屬裝置之其中一者的該產品識別碼與該預設產品識別碼是否相符合。
於步驟(d2),當該第一電腦判斷其中該者的該產品識別碼與該預設產品識別碼是相符合時,再判斷其中該者的該產品型號及該韌體識別碼分別與該預設產品型號及該預設韌體識別碼是否相符。
於步驟(d3),當該第一電腦判斷其中該者的該產品型號與該預設產品型號相符合,且該韌體識別碼與該預設韌體識別碼不相符時,該第一電腦經由該第二電腦對其中該者的該韌體作更新。
在一些實施態樣中,其中,每一該從屬裝置的該產品識別碼、該產品型號、及該韌體識別碼是儲存於該從屬裝置的一裝置暫存器。
在一些實施態樣中,其中,每一該從屬裝置的該產品識別碼、該產品型號、及該韌體識別碼是儲存於該從屬裝置的該裝置暫存器的一從屬標頭(Header)。
在另一些實施態樣中,該控制方法還包含一在步驟(d)之後的步驟(e),藉由該第一電腦主機對該第二電腦主機執行重新啟動。
在另一些實施態樣中,該控制方法還包含一在步驟(d)之後的步驟(e),藉由該第一電腦主機對所對應的該從屬裝置執行重新啟動。
於是,本發明提供另一種遠端更新韌體的控制方法適用於一第一電腦主機及一第二電腦主機,該第一電腦主機與該第二電腦主機建立連線且都支援SSH (Secure Shell)協定。該第二電腦主機包含一系統管理匯流排控制器(System Management Bus Controller,SMBus Controller)及至少一從屬裝置,每一該從屬裝置具有一韌體,並與該系統管理匯流排控制器之間以積體電路匯流排(Inter-Integrated Circuit Bus,I2C Bus)形成電連接,且以符合I2C協定作溝通。該控制方法包含步驟(a)~(d)。
於步驟(a),藉由該第一電腦主機執行屬於該SSH協定的一第一指令,以獲得該系統管理匯流排控制器的一PCIe位址(Address)。
於步驟(b),藉由該第一電腦主機根據該系統管理匯流排控制器的該PCIe位址,執行屬於該SSH協定的一第二指令,以獲得該系統管理匯流排控制器的一基地址(base address registers)。
於步驟(c),藉由該第一電腦主機根據預先設定的一預設產品識別碼、一系統管理匯流排(SMBus)的一輸入輸出位址(I/O address)規範(Spec)、及該基地址,依序掃描該系統管理匯流排控制器的多個從屬位址(Slave address),以獲得與該預設產品識別碼相符合且對應該從屬裝置的一產品識別碼。
於步驟(d),藉由該第一電腦主機獲得對應該產品識別碼的一產品型號及一韌體識別碼,並根據已知的一預設產品識別碼、一預設產品型號、及一預設韌體識別碼,判斷該產品識別碼及該預設產品型號分別與該預設產品識別碼及該預設產品型號相符合時,且該韌體識別碼與該預設韌體識別碼不相符時,對所對應的該從屬裝置的該韌體作更新。
本發明的功效在於:藉由該第一電腦主機由遠端與該第二電腦主機透過網路卡建立網路連線,以執行屬於該SSH協定的該第一指令及該第二指令,以控制第二電腦主機的中央處理器根據該第一指令及該第二指令對應的配合作動,進而分別獲得該PCIe位址及該輸出入位址,再根據預先儲存的該查找表判斷該至少一從屬裝置之其中與該產品識別碼相符合者,以對該符合者的該韌體作更新,而能在該第二電腦主機不具備基板管理控制器(BMC)的情況下,實現遠端更新該從屬裝置的該韌體。
在本發明被詳細描述之前,應當注意在以下的說明內容中,類似的元件是以相同的編號來表示。
參閱圖1,本發明遠端更新韌體的控制方法之實施例適用於一第一電腦主機1及一第二電腦主機2,該第二電腦主機2包含一晶片組(PCH)22、一電連接該晶片組22的網路控制器(NIC)21、一電連接該晶片組22的中央處理器(CPU)23、一電連接該中央處理器23的記憶體(即主記憶體)24、及電連接該晶片組22的多個從屬裝置。該晶片組22包括一系統管理匯流排控制器(System Management Bus Controller,SMBus Controller)25,該系統管理匯流排控制器25電連接該等從屬裝置。在本實施例中,該等從屬裝置包括一第一控制裝置26與一第二控制裝置27。
每一該從屬裝置是一種具有韌體(Firmware)、支援I2C協定且透過該系統管理匯流排控制器(SMBus Controller)25與該晶片組(PCH)22相連的裝置,例如為一種具有韌體的PCIE (PCI Express)裝置(device),如PCIE橋接卡(Bridget card),或一種具有韌體的複雜可程式邏輯裝置(Complex Programmable Logic Device,CPLD),舉例來說,該從屬裝置是各種監測溫度或風扇轉速等等的硬體監視器(Hardware monitor)。該第一電腦主機1及該第二電腦主機2例如都是一種伺服器,但也可以是其他的電腦設備。
該第一電腦主機1包含另一網路控制器(圖未示)以與該第二電腦主機2的該網路控制器21建立連線,且該第一電腦主機1與該第二電腦主機2都支援SSH (Secure Shell)協定。該第一控制裝置26及該第二控制裝置27分別與該系統管理匯流排控制器25之間都是以積體電路匯流排(Inter-Integrated Circuit Bus,I2C Bus)形成電連接,且都以符合I2C協定作溝通。在本實施例中,電連接該系統管理匯流排控制器25的從屬裝置的數量是兩個,即該第一控制裝置26與該第二控制裝置27,而在其他的實施例中,該從屬裝置的數量也可以是一個或其他多數個。
參閱圖1與圖2,圖2是該實施例的一流程圖,該控制方法包含步驟S1~S4。
於步驟S1,藉由該第一電腦主機1執行屬於該SSH協定的一第一指令,以獲得該系統管理匯流排控制器25的一PCIe位址(Address)。更具體地說,該第一指令為ssh root@IP address “lspci |grep –i smbus,其中,IP address為該第二電腦主機2的一網際網路協定位址(Internet Protocol Address),舉例來說,該第一電腦主機1預先獲得或儲存該第二電腦主機2的該網際網路協定位址,如10.86.8.43,則該第一指令為ssh [email protected] “lspci |grep –i smbus”。接著,在執行該第一指令之後,該第一電腦主機1會獲得一訊息,如00:1f.3 SMBus: Intel Corporation C610/X99 series chipset SMBus Controller (rev 05),則00:1f.3即為該PCIe位址。
於步驟S2,藉由該第一電腦主機1根據該系統管理匯流排控制器25的該PCIe位址,執行屬於該SSH協定的一第二指令,以獲得該系統管理匯流排控制器25所對應的一基地址(base address registers)。更詳細地說,該第一電腦主機1是依照PCI規範(Specification)讀取該系統管理匯流排控制器25的一個PCI組態標頭暫存器(configuration header registers),以取得該基地址(base address registers),其中該基地址為該記憶體24中對應該系統管理匯流排控制器25的一記憶區的位址。該第二指令為ssh root@IP address “lspci –s 該PCIe位址 –x”,同樣地, 承續前例,即為ssh [email protected] “lspci –s 00:1f.3 –x”。 接著,在執行該第二指令之後,該第一電腦主機1會獲得該系統管理匯流排控制器25的該PCI組態標頭暫存器所儲存的一個PCI組態標頭(configuration header),舉例來說,如下:
00: 86 80 22 8d 03 00 80 02 05 00 05 0c 00 00 00 00
10: 04 10 f3 ff 3f 38 00 00 00 00 00 00 00 00 00 00
20: 81 05 00 00 00 00 00 00 00 00 00 00 86 80 70 72
30: 00 00 00 00 00 00 00 00 00 00 00 00 05 03 00 00
該第一電腦主機1再依照PCI規範讀取所獲得的該系統管理匯流排控制器25的該PCI組態標頭以取得對應的該基地址,依照PCI規範由該PCI組態標頭中的一第X1位元組(Byte)開始依序讀取對應該基地址的數值,X1是正整數。承續前例,X1是17(即0x10),所讀取的數值依序是04、10、f3、ff、3f、38、00、00。該基地址即為0000383ffff31004。
於步驟S3,藉由該第一電腦主機1根據一系統管理匯流排(SMBus)的一輸入輸出位址(I/O address)規範(Spec)以及該基地址,依序掃描該系統管理匯流排控制器25的多個從屬位址(Slave address),以獲得每一該從屬裝置所對應的一產品識別碼,也就是說,該第一電腦主機1藉由該基地址所對應的一切換暫存器(位於該主記憶體24內),及該等從屬位址,使該系統管理匯流排控制器25讀取該等從屬位址所分別對應的且指示出該等從屬裝置的該產品識別碼。更詳細地說,該系統管理匯流排控制器25是作為一個主控裝置(Master device),每一該從屬位址指的是每一該從屬裝置的I2C地址,當該主控裝置向每一該從屬裝置索取資料時,雙方都需要一個位址(Address),才能以I2C協定溝通。舉例來說,與該系統管理匯流排控制器25以該積體電路匯流排形成電連接的該從屬裝置的數量最多是256個,因此,該第一電腦主機1根據該系統管理匯流排(SMBus)的該輸入輸出位址(I/O address)規範(Spec)以及該基地址取得用來切換與該系統管理匯流排控制器25通訊連接的每一該從屬裝置的該切換暫存器,以依序對該等從屬位址分別等於0x00、0x01、0x02…0xff作輪詢掃描並取得每一該從屬裝置所對應的該產品識別碼。例如,該第一電腦主機1根據該系統管理匯流排(SMBus)的該輸入輸出位址(I/O address)規範(Spec)以及該基地址取得用來切換與該系統管理匯流排控制器25通訊連接的每一該從屬裝置的該切換暫存器,且該系統管理匯流排控制器25藉由該切換暫存器依序切換該等從屬位址以輪詢該等從屬裝置,進而依序分別獲得該等從屬裝置所分別對應的多個裝置暫存器(Device register)所儲存的該等從屬標頭(Header),每一該從屬標頭即包括對應的該從屬裝置(即該第一控制裝置26及該第二控制裝置27其中一對應者)的該產品識別碼。舉例來說,該第一電腦主機1依序執行如下的指令以掃描該等從屬位址所對應的該等裝置暫存器所儲存的資料。
ssh [email protected] “i2c –base-addr 0x0000383ffff31004
–slave-addr 0x00 –read-qword –offset 0x0000”
ssh [email protected] “i2c –base-addr 0x0000383ffff31004
–slave-addr 0x01 –read-qword –offset 0x0000” …直到
ssh [email protected] “i2c –base-addr 0x0000383ffff31004
–slave-addr 0xff –read-qword –offset 0x0000”
要特別補充說明的是:在本實施例中,每一該從屬裝置的該產品識別碼是儲存於對應的該裝置暫存器的該從屬標頭,而在其他的實施例中,該產品識別碼也可以是儲存在該裝置暫存器中的其他區域或位置,而該第一電腦主機1也可以是以預先設定的至少一預設產品識別碼作為關鍵字以於該裝置暫存器搜尋每一該從屬裝置的該產品識別碼。另外,上述指令中的i2c指令的運作方式是根據該系統管理匯流排(SMBus)的該輸入輸出位址(I/O address)規範(Spec)來進行。舉例來說,該第一控制裝置26的該從屬位址是0x55,裝置暫存器(Device register)的偏移(Offset)為一對應的預設offset值,例如為0x00~ 0x03,資料分別為0x86、0x80、0x74、0x47。該第二控制裝置27的該從屬位址是0xB3,裝置暫存器的偏移為0x00~0x03,資料分別為0x50、0xFF、0x47、0xFF。該系統管理匯流排控制器25進行輪詢所使用的i2c指令包含:組成PCI I/O指令(Command);發送該PCI I/O指令,例如透過C語言的inl指令送出;接收回傳資料,例如透過C語言的iopl指令接收;透過該切換暫存器及其中一從屬位址,使該系統管理匯流排控制器25依序切換的與其中一該從屬位址所對應的該從屬裝置通訊並進行輪詢,以將接收的資料顯示並分析,例如讀取到該第一控制裝置26的該從屬標頭的資料為0x86、0x80、0x74、0x47,該第二控制裝置27的該從屬標頭的資料為0x50、0xFF、0x47、0xFF。而該系統管理匯流排控制器25在依序切換的過程中,當其中一該從屬位址所對應的該從屬裝置並未設置時(即對應的該從屬裝置不存在),則該系統管理匯流排控制器25也會獲得一指示對應的該從屬裝置不存在的訊息。
於步驟S4,藉由該第一電腦主機1根據至少一預設產品識別碼、至少一預設產品型號、及至少一預設韌體識別碼,判斷該等從屬裝置的其中一者所對應的該產品識別碼與其中一個該預設產品識別碼相符合時,更進一步的判斷該等從屬裝置的其中該者所對應的一產品型號與其中一個該預設產品型號相符合,且該等從屬裝置的其中該者所對應的一韌體識別碼與其中一個該預設韌體識別碼不相符時,則儲存其中該者所對應的該從屬位址,以對其中該者所對應的一韌體作更新以更新至該預設韌體識別碼所對應的具有最新版本的一最新韌體,例如,該第一電腦主機1從透過輪詢掃描由該等從屬位址所對應的該等從屬裝置所取得的該等從屬裝置所對應的該等從屬標頭之其中一者所包括的該產品型號及該韌體識別碼,並判斷其中該者的該產品型號與該預設產品型號相符合時,更進一步的判斷其中該者的該韌體識別碼與該預設韌體識別碼不相符時,則儲存其中該者對應的從屬位址,以對其中該者所對應的該從屬裝置的該韌體作更新。更詳細地說,步驟S4包括子步驟S41~S43。
於子步驟S41,當該第一電腦主機1判斷該等裝置暫存器之其中該者所儲存的該產品識別碼與其中一個該預設產品識別碼相符合時,則該第一電腦主機1儲存對應的該從屬位址,且進行子步驟S42;反之,則回到步驟S3以使該系統管理匯流排控制器25切換至與下一個該從屬位址所對應的該從屬裝置通訊連接,藉以讀取該下一個該從屬裝置所對應的該產品識別碼及該韌體識別碼。舉例來說,該第一電腦主機1預先儲存該預設產品識別碼為0x50ff47ff,並假設該第一控制裝置26及該第二控制裝置27所對應的該等從屬位址分別是0xbc及0xbd,該第一控制裝置26的該裝置暫存器所儲存的內容包括0x50ff47ff,則接著執行該子步驟S42。
於子步驟S42,藉由該第一電腦主機1接著判斷於子步驟S41判斷出該產品識別碼與該預設產品識別碼相符合的該從屬裝置所對應的該裝置暫存器所儲存的該產品型號與該預設產品型號不相符時,則回到步驟S3。而當該裝置暫存器所儲存的該產品型號與該預設產品型號相符合時,則進一步判斷該裝置暫存器所儲存的該韌體識別碼與該預設韌體識別碼是否相符合,當判斷該韌體識別碼與該預設韌體識別碼不相符時,則執行步驟S43,而當判斷該韌體識別碼與該預設韌體識別碼相符合時,則回到步驟S3。舉例來說,該第一電腦主機1根據在子步驟S41所儲存的該等從屬位址分別依序執行預先設計的至少一指令,例如在本實施例中為三個指令以分別獲得三個訊息,如根據對應該第一控制裝置26的該從屬位址,即0xbc執行該三個指令以分別獲得31304D53、41553136、39433847(都為16進位制)的三個訊息,再將該三個訊息串連而獲得對應的該產品型號,如10MSAU169C8G。
ssh [email protected] “i2c --base-addr 0x0000383ffff31004
--slave-addr {0xbc} --read-qword --offset 0x0004”
ssh [email protected] “i2c --base-addr 0x0000383ffff31004
--slave-addr {0xbc} --read-qword --offset 0x0008”
ssh [email protected] “i2c --base-addr 0x0000383ffff31004
--slave-addr {0xbc} --read-qword --offset 0x000c”
假設其中一個該預設產品型號是10MSAU169C8G,則該第一電腦主機1再執行如下的一個指令以獲得另一個訊息,如0100(16進位制),而獲得該韌體識別碼,即對應現有的該韌體的版本。
ssh [email protected] “i2c --base-addr 0x0000383ffff31004
--slave-addr {0xbc} --read-qword --offset 0x0010”
於子步驟S43,當該第一電腦主機1根據子步驟S42判斷所讀取的該產品型號及該韌體識別碼(即韌體的版本)需要更新時,則該第一電腦主機1儲存對應該第從屬裝置26的該從屬位址,即0xbc,以進一步的將對應其中該者的該最新韌體的一更新內容傳送至該第二電腦主機2,以執行該韌體的更新。換句話說,該第一電腦主機1預先儲存該查找表,該查找表儲存多個從屬裝置的預設產品型號、每一該預設產品型號所對應的該韌體識別碼、及對應的最新的該最新韌體,則該第一電腦主機1能夠根據子步驟S42所獲得的該產品型號及該韌體識別碼,將對應的該更新內容傳送至該第二電腦主機2,以進行更新於子步驟S42所儲存的該等從屬位址所對應的該等從屬裝置所具有的該韌體。
另外要特別補充說明的是:在本實施例中,其中一個該從屬裝置(即該第一控制裝置26或該第二控制裝置27)的該韌體被更新之後,並不需要直接重新啟動,而是於子步驟S43中完成子步驟S42所儲存的該等從屬位址所對應的該等從屬裝置所具有的該等韌體(被判斷需要更新的韌體)全部都更新完成後,才控制該第二電腦主機2或更新後的該等從屬裝置執行重新啟動,而在其他的實施例中,該控制方法還可以包含在步驟S4之後的步驟S5,藉由該第一電腦主機1對該第二電腦主機2或更新後的該從屬裝置執行重新啟動。舉例來說,該查找表還能儲存對應該從屬裝置的該韌體在更新之後是否需要重新啟動的一標記內容,則該第一電腦主機1能夠根據該標記內容決定是否需要對更新該韌體的該從屬裝置或該第二電腦主機2執行重新啟動。
此外,在其他實施例中,該控制方法還可以包含在步驟S1之前的步驟S0,該第一電腦主機1判斷該第二電腦主機2是否已啟動,當該第一電腦主機1判斷該第二電腦主機2未啟動時,藉由該第二電腦主機2的該網路控制器21及該第一電腦主機1的該網路控制器,執行一個網路喚醒指令(Wake-on-LAN,WoL),以啟動該第二電腦主機2。該網路喚醒指令例如是Linux –wakeup, wakeonlan、Windows –Magic Packet, WakeOnLANx等等,但不以此為限。
再者,在本實施例的步驟S4中,是藉由步驟S41先獲的該產品識別碼,再於步驟S42獲得該產品型號及該韌體識別碼,並在判斷該韌體需要更新時,才執行步驟S43的韌體更新。而在其他實施例中,步驟S4也可以先獲得並儲存所有從屬裝置的該等產品識別碼、該等產品型號、及該等韌體識別碼,再逐一判斷哪一者需要執行韌體更新。或者,也可以是其他的交叉組合的方式來執行韌體更新,都不在此限。另外,在本實施例中,每一該從屬裝置的該產品型號及該韌體識別碼是儲存於對應的該裝置暫存器的該從屬標頭,而在其他的實施例中,該產品型號及該韌體識別碼也可以是儲存在該裝置暫存器中的其他區域或位置。
綜上所述,藉由該第一電腦主機由遠端與該第二電腦主機建立連線,以執行屬於該SSH協定的該第一指令及該第二指令,而分別獲得該PCIe位址及該基地址,再根據預先儲存的該查找表判斷至少一個從屬裝置(如該第一控制裝置及該第二控制裝置)之其中的該產品識別碼及該產品型號分別與該預設產品識別碼及該預設產品型號相符合者,且該韌體識別碼與該預設韌體識別碼不相符者,進而由遠端的該第一電腦在無需預先知道所有本地端的該第二電腦上所分別設置的該等從屬裝置的數量、產品型號以及其所具有的韌體版本,對需要更新的該韌體執行更新,如此,在該第二電腦主機不具備基板管理控制器(BMC)的情況下,藉由該第一電腦主機更彈性且靈活的實施遠端執行該第二電腦主機的該從屬裝置的該韌體更新,故確實能達成本發明的目的。
惟以上所述者,僅為本發明的實施例而已,當不能以此限定本發明實施的範圍,凡是依本發明申請專利範圍及專利說明書內容所作的簡單的等效變化與修飾,皆仍屬本發明專利涵蓋的範圍內。
1········ 第一電腦主機 2········ 第二電腦主機 21······· 網路控制器 22······· 晶片組 23······· 中央處理器 24······· 記憶體 25······· 系統管理匯流排控制器 26······· 第一控制裝置 27······· 第二控制裝置 S1~S4· 步驟 |
本發明的其他的特徵及功效,將於參照圖式的實施方式中清楚地呈現,其中:
圖1是一方塊圖,說明本發明遠端更新韌體的控制方法所適用的一第一電腦主機及一第二電腦主機;及
圖2是一流程圖,說明本發明遠端更新韌體的控制方法的一實施例。
S1~S4· 步驟
Claims (10)
- 一種遠端更新韌體的控制方法,適用於一第一電腦主機及一第二電腦主機,該第一電腦主機與該第二電腦主機建立連線,該第二電腦主機包含一系統管理匯流排控制器(System Management Bus Controller,SMBus Controller)及至少一從屬裝置,每一該從屬裝置具有一韌體,並與該系統管理匯流排控制器之間以積體電路匯流排(Inter-Integrated Circuit Bus,I2C Bus)形成電連接,且以符合I2C協定作溝通,該控制方法包含下列步驟:(a)藉由該第一電腦主機執行一第一指令,以獲得該系統管理匯流排控制器的一PCIe位址(Address);(b)藉由該第一電腦主機根據該系統管理匯流排控制器的該PCIe位址,執行一第二指令,以獲得該系統管理匯流排控制器的一基地址(base address registers);(c)藉由該第一電腦主機根據一系統管理匯流排(SMBus)的一輸入輸出位址(I/O address)規範(Spec)及該基地址,依序掃描該系統管理匯流排控制器的多個從屬位址(Slave address),以獲得與該系統管理匯流排控制器之間以積體電路匯流排電連接的每一該從屬裝置的一產品識別碼;及(d)藉由該第一電腦主機根據與該系統管理匯流排控制器之間以積體電路匯流排電連接的每一該從屬裝置的該產品識別碼,獲得對應該產品識別碼的一產品型號及一韌體識別碼,並根據已知的一預設產品識別碼、一預設產 品型號、及一預設韌體識別碼,判斷該產品識別碼及該預設產品型號分別與該預設產品識別碼及該預設產品型號相符合時,且該韌體識別碼與該預設韌體識別碼不相符時,對所對應的該從屬裝置的該韌體作更新。
- 如請求項1所述的遠端更新韌體的控制方法,其中,在步驟(a)中,該第一指令為ssh root@IP address“lspci |grep-i smbus,IP address為該第二電腦主機的一網際網路協定位址。
- 如請求項2所述的遠端更新韌體的控制方法,其中,在步驟(b)中,該第二指令為ssh root@IP address“lspci-s該PCIe位址-x”。
- 如請求項3所述的遠端更新韌體的控制方法,其中,在步驟(b)中,該第一電腦主機根據該PCIe位址,由一第X1位元組(Byte)開始依序讀取數值,以獲得該基地址,X1是正整數。
- 如請求項1所述的遠端更新韌體的控制方法,其中,步驟(d)包括以下的子步驟:(d1)該第一電腦主機判斷該至少一從屬裝置之其中一者的該產品識別碼與該預設產品識別碼是否相符合;(d2)當該第一電腦判斷其中該者的該產品識別碼與該預設產品識別碼是相符合時,再判斷其中該者的該產品型號及該韌體識別碼分別與該預設產品型號及該預設韌體識別碼是否相符;及(d3)當該第一電腦判斷其中該者的該產品型號與該 預設產品型號相符合,且該韌體識別碼與該預設韌體識別碼不相符時,該第一電腦經由該第二電腦對其中該者的該韌體作更新。
- 如請求項5所述的遠端更新韌體的控制方法,其中,每一該從屬裝置的該產品識別碼、該產品型號、及該韌體識別碼是儲存於該從屬裝置的一裝置暫存器。
- 如請求項6所述的遠端更新韌體的控制方法,其中,每一該從屬裝置的該產品識別碼、該產品型號、及該韌體識別碼是儲存於該從屬裝置的該裝置暫存器的一從屬標頭(Header)。
- 如請求項1所述的遠端更新韌體的控制方法,還包含一在步驟(d)之後的步驟(e),藉由該第一電腦主機對該第二電腦主機執行重新啟動。
- 如請求項1所述的遠端更新韌體的控制方法,還包含一在步驟(d)之後的步驟(e),藉由該第一電腦主機對所對應的該從屬裝置執行重新啟動。
- 一種遠端更新韌體的控制方法,適用於一第一電腦主機及一第二電腦主機,該第一電腦主機與該第二電腦主機建立連線,該第二電腦主機包含一系統管理匯流排控制器(System Management Bus Controller,SMBus Controller)及至少一從屬裝置,每一該從屬裝置具有一韌體,並與該系統管理匯流排控制器之間以積體電路匯流排(Inter-Integrated Circuit Bus,I2C Bus)形成電連接,且以符合I2C協定作溝通,該控制方法包含下列步驟: (a)藉由該第一電腦主機執行一第一指令,以獲得該系統管理匯流排控制器的一PCIe位址(Address);(b)藉由該第一電腦主機根據該系統管理匯流排控制器的該PCIe位址,執行一第二指令,以獲得該系統管理匯流排控制器的一基地址(base address registers);(c)藉由該第一電腦主機根據預先設定的一預設產品識別碼、一系統管理匯流排(SMBus)的一輸入輸出位址(I/O address)規範(Spec)、及該基地址,依序掃描該系統管理匯流排控制器的多個從屬位址(Slave address),以獲得與該預設產品識別碼相符合且與該系統管理匯流排控制器之間以積體電路匯流排電連接的該從屬裝置的一產品識別碼;及(d)藉由該第一電腦主機根據與該系統管理匯流排控制器之間以積體電路匯流排電連接的每一該從屬裝置的該產品識別碼,獲得對應該產品識別碼的一產品型號及一韌體識別碼,並根據已知的一預設產品識別碼、一預設產品型號、及一預設韌體識別碼,判斷該產品識別碼及該預設產品型號分別與該預設產品識別碼及該預設產品型號相符合時,且該韌體識別碼與該預設韌體識別碼不相符時,對所對應的該從屬裝置的該韌體作更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108130188A TWI720594B (zh) | 2019-08-23 | 2019-08-23 | 遠端更新韌體的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108130188A TWI720594B (zh) | 2019-08-23 | 2019-08-23 | 遠端更新韌體的控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI720594B true TWI720594B (zh) | 2021-03-01 |
TW202109284A TW202109284A (zh) | 2021-03-01 |
Family
ID=76035619
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108130188A TWI720594B (zh) | 2019-08-23 | 2019-08-23 | 遠端更新韌體的控制方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI720594B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070234332A1 (en) * | 2006-02-22 | 2007-10-04 | Dell Products L.P. | Firmware update in an information handling system employing redundant management modules |
CN101815151A (zh) * | 2009-02-25 | 2010-08-25 | 佳能株式会社 | 固件更新装置及固件更新方法 |
TW201207731A (en) * | 2010-08-06 | 2012-02-16 | Universal Scient Ind Shanghai | Embedded system with plural firmware and firmware updating method thereof |
TW201224929A (en) * | 2010-12-09 | 2012-06-16 | Hon Hai Prec Ind Co Ltd | Multiprocessor device and method thereof for updating firmware |
TWI534622B (zh) * | 2009-12-31 | 2016-05-21 | 宏正自動科技股份有限公司 | 供ikvm伺服器使用的智慧型網路管理平台 |
TWI591540B (zh) * | 2012-11-05 | 2017-07-11 | 啟碁科技股份有限公司 | 韌體更新系統和方法 |
TWI613548B (zh) * | 2013-03-21 | 2018-02-01 | 系微股份有限公司 | 遠端平台管理之計算裝置實施方法、保存用於遠端平台管理的電腦可執行指令之非暫時性媒體、以及遠端管理式計算裝置 |
TWI668578B (zh) * | 2018-04-03 | 2019-08-11 | 神雲科技股份有限公司 | 具自動同步更新不同伺服器之間的相同基板管理控制器設定參數功能之伺服器機櫃系統及其自動同步方法 |
-
2019
- 2019-08-23 TW TW108130188A patent/TWI720594B/zh active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070234332A1 (en) * | 2006-02-22 | 2007-10-04 | Dell Products L.P. | Firmware update in an information handling system employing redundant management modules |
CN101815151A (zh) * | 2009-02-25 | 2010-08-25 | 佳能株式会社 | 固件更新装置及固件更新方法 |
TWI534622B (zh) * | 2009-12-31 | 2016-05-21 | 宏正自動科技股份有限公司 | 供ikvm伺服器使用的智慧型網路管理平台 |
TW201207731A (en) * | 2010-08-06 | 2012-02-16 | Universal Scient Ind Shanghai | Embedded system with plural firmware and firmware updating method thereof |
TW201224929A (en) * | 2010-12-09 | 2012-06-16 | Hon Hai Prec Ind Co Ltd | Multiprocessor device and method thereof for updating firmware |
TWI591540B (zh) * | 2012-11-05 | 2017-07-11 | 啟碁科技股份有限公司 | 韌體更新系統和方法 |
TWI613548B (zh) * | 2013-03-21 | 2018-02-01 | 系微股份有限公司 | 遠端平台管理之計算裝置實施方法、保存用於遠端平台管理的電腦可執行指令之非暫時性媒體、以及遠端管理式計算裝置 |
TWI668578B (zh) * | 2018-04-03 | 2019-08-11 | 神雲科技股份有限公司 | 具自動同步更新不同伺服器之間的相同基板管理控制器設定參數功能之伺服器機櫃系統及其自動同步方法 |
Also Published As
Publication number | Publication date |
---|---|
TW202109284A (zh) | 2021-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10333771B2 (en) | Diagnostic monitoring techniques for server systems | |
TWI526824B (zh) | 網路卡資訊管理方法及網路卡資訊管理系統 | |
US11921838B2 (en) | Method and system of secure configuration of at least one electronic device | |
US9094316B2 (en) | Dynamic name generation | |
CN109358876A (zh) | 一种版本同步方法及装置、设备、存储介质 | |
TW201546714A (zh) | 電腦系統及基本輸入輸出系統之設定方法 | |
CN110704115A (zh) | 服务器bmc配置的方法、装置及*** | |
US9319313B2 (en) | System and method of forwarding IPMI message packets based on logical unit number (LUN) | |
CN112434278A (zh) | 一种裸机认证方法、装置、设备及介质 | |
CN109560957A (zh) | 决定网络接口卡操作速度的方法及端口扇出配置*** | |
TW201433121A (zh) | 電腦系統及電腦裝置的遠端遙控方法 | |
TWI720594B (zh) | 遠端更新韌體的控制方法 | |
TWI501090B (zh) | 伺服器系統與節點偵測方法 | |
TWI799179B (zh) | 運算系統及網路裝置管理方法 | |
TWI694699B (zh) | 虛擬機器的通訊方法、電子裝置以及非暫態電腦可讀取記錄媒體 | |
TW201445446A (zh) | 機櫃伺服器開機配置系統及方法 | |
CN112579116B (zh) | 远端更新韧体的控制方法 | |
CN113238778B (zh) | 一种升级bios固件的方法、***、设备及介质 | |
TW201605214A (zh) | 網路協定位址之設定方法及伺服管理系統 | |
CN115080325A (zh) | 一种基于pdu的psu测试方法、***、装置及介质 | |
CN114510259A (zh) | 一种基于bmc导入导出bios配置的方法及装置 | |
JP5266997B2 (ja) | ネットワーク接続局情報出力装置、ネットワーク接続局情報出力方法、およびプログラム | |
TWM588928U (zh) | 用於遠端喚醒網路用戶裝置的系統 | |
CN115865660B (zh) | 一种局域网内自动更新摄像头固件的方法及*** | |
CN104660455A (zh) | 服务器***与节点检测方法 |