TWI602122B - 韌體更新方法 - Google Patents
韌體更新方法 Download PDFInfo
- Publication number
- TWI602122B TWI602122B TW105118077A TW105118077A TWI602122B TW I602122 B TWI602122 B TW I602122B TW 105118077 A TW105118077 A TW 105118077A TW 105118077 A TW105118077 A TW 105118077A TW I602122 B TWI602122 B TW I602122B
- Authority
- TW
- Taiwan
- Prior art keywords
- packet
- value data
- firmware
- offset value
- updated
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
本發明是有關於一種韌體更新方法,特別是指一種用於輸入輸出模組的韌體更新方法。
在伺服器中,輸入輸出模組(Input/Output Module, IOM)通常經由主機匯流排介面卡(HBA,Host Bus Adapter)與主機相連,形成一訊息流動的通道,其中,一個IOM可與一主機相連,也可與多個主機相連。對於一輸入輸出模組來說,恐常會發生多個主機端於同一期間更新該輸入輸出模組的一韌體(firmware)。例如,在同一期間,一主機端A連續傳送一第一更新韌體檔案其中的多個封包至該輸入輸出模組,但另一主機端B亦連續傳送一第二更新韌體檔案其中的多個封包至該輸入輸出模組。當該輸入輸出模組接收到來自該主機端A或該主機端B的任一封包時,該輸入輸出模組將所接收到的該封包儲存於例如一儲存單元中。如此,由於在此期間中該輸入輸出模組過度頻繁地將來自該主機端A及該主機端B所有封包儲存於該儲存單元中,恐易造成該儲存單元的損毀。
此外,若該儲存單元僅能提供有限的儲存空間時,該輸入輸出模組恐無法確保該第一更新韌體檔案及該第二更新韌體檔案能被完整地儲存於該儲存單元中。
由上述可知,對於習知輸入輸出模組的韌體更新方法仍有很大的改善空間。
因此,本發明之目的,即在提供一種能夠避免多個主機端同時更新一輸入輸出模組的韌體更新方法。
於是,本發明韌體更新方法,適用於連接多個不同之主機端的一輸入輸出模組,該輸入輸出模組包括一儲存單元、及一電連接該儲存單元的處理單元,該儲存單元儲存有一韌體及相關於該韌體的更新狀態資料,該更新狀態資料包含總偏移值資料、及一狀態旗標,該狀態旗標的一旗標值是一指示出該韌體正處於一更新狀態的第一預定值、及一異於該第一預定值並指示出該韌體未處於該更新狀態的一第二預定值的其中一者,該韌體更新方法藉由該處理單元來實施,並包含以下步驟:
(A)在接收來自於該等主機端之其中一者的一更新韌體檔案其中的一封包後,其中該封包至少包含對應於該封包的長度值資料、及對應於該封包的偏移值資料,根據該偏移值資料及一預定初始偏移值判定該封包是否為該更新韌體檔案的一第一封包,該更新韌體檔案的該第一封包還包含對應於該更新韌體檔案的總封包長度值資料;
(B)當步驟(A)中判定出該封包為該更新韌體檔案的該第一封包時,判定該狀態旗標之該旗標值是否為該第一預定值;
(C)當步驟(B)中判定出該狀態旗標之該旗標值為該第二預定值時,將該旗標值更新為該第一預定值,並將該封包儲存於該儲存單元,且根據該封包的該長度值資料及該偏移值資料,更新該總偏移值資料;
(D)當步驟(A)中判定出該封包不為該更新韌體檔案的該第一封包時,根據該封包的該偏移值資料及該更新狀態資料的該總偏移值資料,判定該封包的該偏移值資料是否符合該總偏移值資料;
(E)當步驟(D)中判定出該封包的該偏移值資料符合該總偏移值資料時,將該封包儲存於該儲存單元,並根據該封包的該長度值資料及該偏移值資料,更新該總偏移值資料;
(F)根據該總偏移值資料及步驟(C)所儲存之該封包的該總封包長度值資料與該預定初始偏移值,判定該封包是否為該更新韌體檔案的一最後封包;及
(G)當步驟(F)中判定出該封包不為該更新韌體檔案的該最後封包時,重覆步驟(A)至步驟(F)直到判定出該封包為該更新韌體檔案的該最後封包。
參閱圖1,繪示了一系統100,該系統100被用來實施本發明韌體更新方法的一實施例,並示例地包含一輸入輸出模組1及多個主機端5。該輸入輸出模組1示例地包含一儲存單元2、一連接單元3、及一電連接該儲存單元2及該連接單元3的處理單元4。在本實施例中,該處理單元4例如為一擴展器(expander),但不以此為限。
該儲存單元2包括例如一第一儲存區21及一第二儲存區22,但不以此為限。該第一儲存區21儲存了一韌體211及相關於該韌體211的更新狀態資料212。該更新狀態資料212包含總偏移值(offset)資料、前一個封包之接收時間點的時間資料、及一狀態旗標。該總偏移值資料所指示之值起初被設定為一預定初始偏移值。該狀態旗標的一旗標值可為一指示出該韌體211正處於一更新狀態的第一預定值,例如1,或一異於該第一預定值並指示出該韌體211未處於該更新狀態的一第二預定值,例如0。該連接單元3例如一主機匯流排介面卡(HBA,Host Bus Adapter),連接該等主機端5,並包括例如一序列式小型電腦系統(serial attached SCSI, SAS)介面31、一乙太網路(Ethernet)介面32、及一積體電路匯流排(Inter-Integrated Circuit, I²C)介面33。在本實施例中,該序列式小型電腦系統介面31被用來連接該等主機端5,但不以此為限。然而,其他實施例中,該乙太網路介面32或該積體電路匯流排介面33可被用連接該等主機端5。
若任一主機端5的一使用者欲更新該輸入輸出模組1的該韌體211時,該使用者可使該主機端5傳送一所欲的更新韌體檔案至該輸入輸出模組1,值得注意的是,該主機端5是以一次傳送一個封包的方式,將該所欲的更新韌體檔案的封包傳送至該輸入輸出模組1。在此情況下,該所欲的更新韌體檔案的每一封包至少包含對應於該封包的長度值資料、及對應於該封包的偏移值資料,此外,該所欲的更新韌體檔案的第一封包還包含對應於該所欲的更新韌體檔案的總封包長度值資料。另一方面,該輸入輸出模組1在完整接收到並儲存了來自該主機端5的該所欲的更新韌體檔案之所有封包後,才完成了該韌體211的更新。
參閱圖1及圖2,說明該輸入輸出模組1的該處理單元4如何執行本發明韌體更新方法之該實施例。以下詳細說明該實施例所包含的步驟。
在步驟S200中,該處理單元4經由該連接單元3接收到來自於該等主機端5之其中一者的一更新韌體檔案其中的一封包。
在步驟S201中,該處理單元4判定步驟S200中該封包的接收時間點與儲存於該第一儲存區21的該更新狀態資料212之該前一個封包的接收時間點之間的一時間差是否長於一預定時間期間(亦即,判定前後兩封包的接收時間間隔是否長於該預定時間期間)。若該判定結果為肯定,則該流程進行步驟S202。否則,該流程進行步驟S203。在本實施例中,該預定時間期間,例如為1分鐘,但不以此為限。舉例來說,若該前一個封包的接收時間點(如,該前一個封包開始被該處理單元4接收之時間)為08:06:01,且步驟S200中該封包的接收時間點(如,該封包開始被該處理單元4接收之時間)為08:06:32,則前後兩封包的接收時間間隔(亦即,該時間差)為31秒,由於31秒短於該預定時間期間(1分鐘),故該流程進行步驟S203。
在步驟S202中,該處理單元4將該狀態旗標的該旗標值更新為該第二預定值,且根據該封包的接收時間點來更新該時間資料。
在步驟S203中,當該處理單元4判定出該時間差不長於該預定時間期間時,該處理單元4根據步驟S200中該封包的接收時間點來更新該時間資料。依照上述的舉例,該處理單元4會將該時間資料更新為08:06:32,以便該處理單元4下一次接收到封包時,可根據更新後的該時間資料判定前後兩封包的接收時間間隔是否長於該預定時間期間。
跟隨在步驟S202與步驟S203之後,在步驟S204中,該處理單元4根據步驟S200所接收之該封包的偏移值資料及該預定初始偏移值來判定該封包是否為該更新韌體檔案的一第一封包。若該判定結果為肯定,則該流程進行步驟S205。否則,該流程進行步驟S208。在本實施例中,該預定初始偏移值,例如為0,但不以此為限,而且當該處理單元4判定出該偏移值資料所指示之值為該預定初始偏移值時,該封包被判定為該更新韌體檔案的該第一封包。
在步驟S205中,該處理單元4在判定出該封包為該更新韌體檔案的該第一封包時,判定該狀態旗標之該旗標值是否為該第一預定值,也就是,判定該韌體211是否正處於一更新狀態。若該判定結果為肯定,則該流程進行步驟S206。否則,該流程進行步驟S207。
在步驟S206中,當該封包被判定為該更新韌體檔案的該第一封包且該韌體211被判定正處於一更新狀態時,該處理單元4經由該連接單元3傳送一指示出該韌體211正處於該更新狀態的佔用訊息到該主機端5。之後,該流程返回步驟S200。當該主機端5接收到來自該輸入輸出模組1的該佔用訊息時,該主機端5可在一如,10秒的預定等待時間期間後,再重新傳送該封包至該輸入輸出模組1。舉例來說,若一主機端如,5A正在進行韌體更新,且在該主機端5A進行韌體更新的過程中,又有一主機端如,5B傳送了一更新韌體檔案的一第一封包至該輸入輸出模組1,則由於該韌體211正回應於該主機端5A的更新而處於該更新狀態,故該處理單元4經由該連接單元3傳送指示出該韌體211正處於該更新狀態的佔用訊息到該主機端5B,且捨棄該主機端5B所傳送的第一封包而不儲存。
在步驟S207中,當該狀態旗標之該旗標值被判定出為該第二預定值時,該處理單元4將該旗標值更新為該第一預定值,並將該第一封包儲存於該儲存單元2的該第二儲存區22,且根據步驟S200所接收之該第一封包的長度值資料及該偏移值資料,更新該總偏移值資料。在本實施例中,該更新後的總偏移值資料所對應的該總偏移值資料所指示之值為該第一封包的該長度值資料所指示之值及該偏移值資料所指示之值之和,但不以此為限。
在步驟S208中,該處理單元4在步驟S204中判定出該封包不為該更新韌體檔案的該第一封包時,根據該封包的該偏移值資料及該總偏移值資料,判定該封包的該偏移值資料是否符合該總偏移值資料,若該判定結果為肯定,則該流程進行步驟S209。否則,該流程進行步驟S211。
在步驟S209中,該處理單元4在判定出該封包的該偏移值資料符合該總偏移值資料時,將該封包儲存於該儲存單元2的該第二儲存區22,並根據該封包的該長度值資料及該偏移值資料,更新該總偏移值資料。在本實施例中,相似地,該更新後的總偏移值資料所指示之值為該封包的該長度值資料所指示之值及該偏移值資料所指示之值之和,但不以此為限。
跟隨在步驟S207與步驟S209之後,在步驟S210中,該處理單元4根據該總偏移值資料及步驟S207所儲存之該封包(即該更新韌體檔案的該第一封包)的該總封包長度值資料與該預定初始偏移值,判定該封包是否為該更新韌體檔案的一最後封包。若該判定結果為肯定,則該流程進行步驟S212。否則,該流程進行步驟S211。在本實施例中,當該處理單元4判定出該總封包長度值資料所指示之值與該預定初始偏移值之總和等於該總偏移值資料所指示之值時,該封包被判定為該更新韌體檔案的該最後封包。
在步驟S211中,當該封包的該偏移值資料被判定出不符合該總偏移值資料(步驟S208)或者當該封包被判定出不為該更新韌體檔案的該最後封包時,該處理單元4經由該連接單元3傳送一目標封包請求至該主機端5。值得注意的是,該目標封包請求包含該總偏移值資料。之後,該流程返回步驟S200。
另一方面,當該主機端5接收到來自該輸入輸出模組1的該目標封包請求時,該主機端5會回應於該目標封包請求而傳送一目標封包至該輸入輸出模組1,該目標封包之該偏移值資料符合該總偏移值資料。舉例來說,理想地,在該封包為該更新韌體檔案的該第一封包的情況下,該目標封包為該更新韌體檔案的一第二封包,而在該封包不為該更新韌體檔案的該第一封包及該最後封包的情況下,該目標封包為該更新韌體檔案中相對於該封包的下一個封包。如此,該主機端5在傳送該更新韌體檔案的該第一封包後依序續回應於來自該輸入輸出模組1的該目標封包請求而分別傳送該更新韌體檔案的第二封包至該最後封包至該輸入輸出模組1。然而,實際上,該封包在傳送的過程中恐發生資料的損毀。特別是,當該處理單元4在步驟S200所接收之該封包的該偏移值資料出現損毀情況時:在一開始該封包為該更新韌體檔案的該第一封包的情況下,該處理單元4在步驟S204中無法正確判定出該封包為該更新韌體檔案的該第一封包,而在步驟S208中判定出該封包的該偏移值資料不符合該總偏移值資料 (即該預定初始偏移值),接著藉由在步驟S211所傳送至該主機端5且對於該更新韌體檔案的該第一封包的該目標封包請求,以使該主機端5再重傳一次該更新韌體檔案的該第一封包;而在該封包不為該更新韌體檔案的該第一封包的情況下,該處理單元4藉由步驟S208中判定出該封包的該偏移值資料不符合該總偏移值資料,並接著藉由在步驟S211所傳送至該主機端5且對於該封包的該目標封包請求,以使該主機端5再重傳一次該封包,如此,可確保該輸入輸出模組1可完整地接收到該更新韌體檔案的所有封包。
應注意的是,該處理單元4在尚未判定出步驟S200所接收的該封包為該更新韌體檔案的該最後封包(步驟S210)之前,是依據上述說明的邏輯選擇性地重複執行步驟S200~步驟S211。
在步驟S212中,當該處理單元4在步驟S210中判定出該封包為該更新韌體檔案的該最後封包時,該處理單元4判定已儲存於該儲存單元2之該第二儲存區22的所有封包是否為該更新韌體檔案,若判定結果為肯定,則該流程進行步驟S213。否則,該流程進行步驟S214。在本實施例中,步驟S212包含子步驟S301及步驟S302(見圖3),但不以此為限。此外,該更新韌體檔案的該第一封包還包含對應於該更新韌體檔案的參考校驗值資料。
再參閱圖1及圖3,進一步示例說明該處理單元4如何判定所有已儲存於該第二儲存區22的封包是否為該更新韌體檔案。
在步驟S301中,當該封包被判定為該更新韌體檔案的該最後封包時,該處理單元4根據已儲存於該儲存單元2之該第二儲存區22的所有封包,並利用一循環冗餘校驗(Cyclic redundancy check, CRC)技術,例如CRC32,獲得校驗值資料。
在步驟S302中,該處理單元4根據步驟S301中所獲得的該校驗值資料及該參考校驗資料,判定該校驗值資料是否符合該參考校驗值資料。若判定結果為肯定時,則該流程至步驟S213,否則該流程進行步驟S214。當該校驗值資料被判定出符合該參考校驗值資料時,該處理單元4判定出已儲存於該第二儲存區22的所有封包為該更新韌體檔案。當該校驗值資料被判定出不符合該參考校驗值資料時,該處理單元4判定出已儲存於該第二儲存區22的所有封包不為該更新韌體檔案。
在步驟S213中,該處理單元4在判定出已儲存於該第二儲存區22的所有封包為該更新韌體檔案時,將該更新韌體檔案作為該韌體211(亦即,捨棄原韌體而以該更新韌體檔案作為該輸入輸出模組的韌體211)且將該狀態旗標的該旗標值更新為該第二預定值。
在步驟S214中,當該處理單元4判定出已儲存於該第二儲存區22的所有封包不為該更新韌體檔案時,該處理單元4透過該連接單元3傳送一指示出該韌體211更新失敗的失敗訊息至該主機端5。值得一提的是,當該處理單元4判定出已儲存於該第二儲存區22的所有封包不為該更新韌體檔案時,該處理單元4可進一步清除該第二儲存區22所儲存的所有封包,但不以此為限。
值得一提的是,通常該輸入輸出模組1在實際使用該更新的韌體211(亦即,該更新韌體檔案)前,須先執行一重開機程序,直到該重開機程序被成功執行完後,該處理單元4會傳送一指示出該韌體211更新成功的成功訊息至該主機端5。
此外,進一步舉例說明該儲存單元2在韌體更新成功完成之前及之後的配置。例如,在韌體更新成功完成前,該儲存單元2中多個用於儲存該更新狀態資料212的記憶體位址0000~0002、及多個用於儲存該韌體211的記憶體位址0003~F000共同構成該第一儲存區21,且多個用於儲存該更新韌體檔案的記憶體位址F001~FFFF構成該第二儲存區22;而在韌體更新成功完成後,即成功完成該重開機程序後,該處理單元4使該等記憶體位址0000~0002及F001~FFFF構成該第一儲存區21,而使該等記憶體位址0003~F000構成該第二儲存區22,但不以此為限。如此,儲存於該第一儲存區21的該韌體211已被更新為該更新韌體檔案,以供該輸入輸出模組1之後的使用。
另外,值得注意的是,步驟S201中的該預定時間期間實質上是長於針對來自任一主機端5的一進行步驟S201~步驟S214一次所需的時間。換言之,步驟S201與步驟S202存在的目的係在於,避免該處理單元4在先前所執行且相關於前一次所接收之封包的步驟S201~步驟S214因故無法順利完成所造成的時間延宕,而使得其他主機端5因該輸入輸出模組1被佔用而無法進行所欲的韌體更新。因此,當前後2個封包的接收時間間隔過長時,狀態旗標的該旗標值將會被更新為該第二預定值,以釋放被佔用的該輸入輸出模組1。
綜上所述,根據本發明韌體更新方法,確實能在該處理單元4判定出該韌體211處於該更新狀態(亦即,該狀態旗標之該旗標值為該第一預定值)時不儲存當前所接收的封包,以確保完成相關的韌體更新操作,同時避免該處理單元4在同一時期內儲存來自不同主機端5的任一封包,藉此,在此期間中該處理單元4不會如上述習知技藝所遭遇過度頻繁地將來自其他主機端5的封包儲存於該儲存單元2中,因而可延長該儲存單元2之使用壽命。此外,相較於上述習知技藝,該儲存單元2的該第二儲存區22僅需提供足以儲存該更新韌體檔案之相對小的儲存空間,即可確保該更新韌體檔案被完整地儲存於該第二儲存區22中,故確實能達成本發明之目的。
惟以上所述者,僅為本發明之實施例而已,當不能以此限定本發明實施之範圍,凡是依本發明申請專利範圍及專利說明書內容所作之簡單的等效變化與修飾,皆仍屬本發明專利涵蓋之範圍內。
100‧‧‧系統
31‧‧‧序列式小型電腦系統介面
1‧‧‧輸入輸出模組
32‧‧‧乙太網路介面
2‧‧‧儲存單元
33‧‧‧積體電路匯流排介面
21‧‧‧第一儲存區
4‧‧‧處理單元
211‧‧‧韌體
5‧‧‧主機端
212‧‧‧更新狀態資料
S200~S214‧‧‧步驟
22‧‧‧第二儲存區
S301,S302‧‧‧步驟
3‧‧‧連接單元
31‧‧‧序列式小型電腦系統介面
1‧‧‧輸入輸出模組
32‧‧‧乙太網路介面
2‧‧‧儲存單元
33‧‧‧積體電路匯流排介面
21‧‧‧第一儲存區
4‧‧‧處理單元
211‧‧‧韌體
5‧‧‧主機端
212‧‧‧更新狀態資料
S200~S214‧‧‧步驟
22‧‧‧第二儲存區
S301,S302‧‧‧步驟
3‧‧‧連接單元
本發明之其他的特徵及功效,將於參照圖式的實施方式中清楚地呈現,其中: 圖1是一方塊圖,示例地繪示一用來實施本發明韌體更新方法之實施例的系統; 圖2是該實施例的一流程圖;及 圖3是一流程圖,示例地說明圖2之步驟S212的一判定程序。
S200~S214‧‧‧步驟
Claims (10)
- 一種韌體更新方法,適用於連接多個主機端的一輸入輸出模組,該輸入輸出模組包括一儲存單元、及一電連接該儲存單元的處理單元,該儲存單元儲存有一韌體及相關於該韌體的更新狀態資料,該更新狀態資料包含總偏移值資料、及一狀態旗標,該狀態旗標的一旗標值是一指示出該韌體正處於一更新狀態的第一預定值、及一異於該第一預定值並指示出該韌體未處於該更新狀態的一第二預定值的其中一者,該韌體更新方法藉由該處理單元來實施,並包含以下步驟: (A)在接收來自於該等主機端之其中一者的一更新韌體檔案其中的一封包後,其中該封包至少包含對應於該封包的長度值資料、及對應於該封包之偏移值資料,根據該偏移值資料及一預定初始偏移值判定該封包是否為該更新韌體檔案的一第一封包,該更新韌體檔案的該第一封包還包含對應於該更新韌體檔案的總封包長度值資料; (B)當步驟(A)中判定出該封包為該更新韌體檔案的該第一封包時,判定該狀態旗標之該旗標值是否為該第一預定值; (C)當步驟(B)中判定出該狀態旗標之該旗標值為該第二預定值時,將該旗標值更新為該第一預定值,並將該第一封包儲存於該儲存單元,且根據該第一封包的該長度值資料及該偏移值資料,更新該總偏移值資料; (D)當步驟(A)中判定出該封包不為該更新韌體檔案的該第一封包時,根據該封包的該偏移值資料及該更新狀態資料的該總偏移值資料,判定該封包的該偏移值資料是否符合該總偏移值; (E)當步驟(D)中判定出該封包的該偏移值資料符合該總偏移值資料時,將該封包儲存於該儲存單元,並根據該封包的該長度值資料及該偏移值資料,更新該總偏移值資料; (F)根據該總偏移值資料及該總封包長度值資料與該預定初始偏移值,判定該封包是否為該更新韌體檔案的一最後封包;及 (G)當步驟(F)中判定出該封包不為該更新韌體檔案的該最後封包時,重覆步驟(A)至步驟(F)直到判定出該封包為該更新韌體檔案的該最後封包。
- 如請求項1所述的韌體更新方法,該更新狀態資料還包含前一個封包之接收時間點的時間資料,其中,在該步驟(A)之前還包含以下步驟: (H)當接收到來自該主機端之該封包時,判定該封包的接收時間點與該前一個封包的接收時間點之間的一時間差是否長於一預定時間期間; (I)當步驟(H)中判定出該時間差不長於該預定時間期間時,根據該封包的接收時間點來更新該時間資料;及 (J)當步驟(H)中判定出該時間差長於該預定時間期間時,將該狀態旗標的該旗標值更新為該第二預定值,且根據該封包的接收時間點來更新該時間資料。
- 如請求項1所述的韌體更新方法,在步驟(G)之後,還包含以下步驟: (K)當步驟(G)中判定出該封包為該更新韌體檔案的該最後封包時,判定已儲存於該儲存單元的所有封包是否為該更新韌體檔案; (L)當步驟(K)中判定出已儲存於該儲存單元的所有封包為該更新韌體檔案時,將該更新韌體檔案作為該韌體且將該狀態旗標的該旗標值更新為該第二預定值;及 (M)當步驟(K)中判定出已儲存於該儲存單元的所有封包不為該更新韌體檔案時,傳送一指示出該韌體更新失敗的失敗訊息至該主機端。
- 如請求項3所述的韌體更新方法,該第一封包還包含對應於該更新韌體檔案的參考校驗值資料,其中,步驟(K)包含以下子步驟: (K-1)當步驟(G)中判定出該封包為該更新韌體檔案的該最後封包時,根據已儲存於該儲存單元的所有封包,利用一循環冗餘校驗技術,獲得校驗值資料,及 (K-2)根據子步驟(K-1)所獲得的該校驗值及該參考校驗值資料,判定該校驗值資料是否符合該參考校驗值資料,當判定出該校驗值被判定符合該參考校驗值資料時,已儲存於該儲存單元的所有封包被判定為該更新韌體檔案。
- 如請求項1所述的韌體更新方法,其中,在步驟(C)及步驟(E)中,該更新後的總偏移值資料所指示之值為該封包的該長度值資料所指示之值及該偏移值資料所指示之值之和。
- 如請求項1所述的韌體更新方法,在步驟(B)之後還包含一步驟: (N)當步驟(B)中判定出該狀態旗標的該旗標值為該第一預定值時,傳送一指示出該韌體正處於該更新狀態的佔用訊息到該主機端。
- 如請求項1所述的韌體更新方法,在步驟(D)之後還包含一步驟: (O)當步驟(D)中判定出該封包的該偏移值不符合該總偏移值資料時,傳送一目標封包請求至該主機端,該目標封包請求包含該總偏移值資料, 其中,當該主機端接收到來自該輸入輸出模組的該目標封包請求時,該主機端回應於該目標封包請求而傳送一目標封包至該輸入輸出模組,該目標封包之該偏移值資料符合該總偏移值資料。
- 如請求項1所述的韌體更新方法,其中,在步驟(G)中,在每次重複步驟(A)至步驟(F)之前,還包含一步驟: (P)當步驟(F)中判定出該封包不為該更新韌體檔案的該最後封包時,傳送一目標封包請求至該主機端,該目標封包請求包含該總偏移值資料, 其中,當該主機端接收到來自該輸入輸出模組的該目標封包請求時,該主機端回應於該目標封包請求而傳送一目標封包至該輸入輸出模組,該目標封包之該偏移值資料符合該總偏移值資料。
- 如請求項1所述的韌體更新方法,其中,在步驟(A)中,當該處理單元判定出該偏移值資料所指示之值為該預定初始偏移值時,該封包被判定為該更新韌體檔案的該第一封包。
- 如請求項1所述的韌體更新方法,其中,在步驟(F)中,當該處理單元判定出該總封包長度值資料所指示之值與該預定初始偏移值之總和等於該總偏移值資料所指示之值時,該封包被判定為該更新韌體檔案的該最後封包。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105118077A TWI602122B (zh) | 2016-06-08 | 2016-06-08 | 韌體更新方法 |
US15/496,170 US10001987B2 (en) | 2016-06-08 | 2017-04-25 | Method for updating a firmware file of an input/output module |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW105118077A TWI602122B (zh) | 2016-06-08 | 2016-06-08 | 韌體更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI602122B true TWI602122B (zh) | 2017-10-11 |
TW201743205A TW201743205A (zh) | 2017-12-16 |
Family
ID=60572748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105118077A TWI602122B (zh) | 2016-06-08 | 2016-06-08 | 韌體更新方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10001987B2 (zh) |
TW (1) | TWI602122B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221548A (zh) * | 2018-11-27 | 2020-06-02 | 环达电脑(上海)有限公司 | 用于现场可程序逻辑闸阵列的韧体更新方法 |
CN114594700A (zh) * | 2020-12-04 | 2022-06-07 | 昆达电脑科技(昆山)有限公司 | 整合控制管理*** |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108628622A (zh) * | 2018-03-28 | 2018-10-09 | 合肥凯利科技投资有限公司 | 一种电机控制器的***及其升级方法 |
CN108833526A (zh) * | 2018-06-08 | 2018-11-16 | 太仓市同维电子有限公司 | 一种智能网关升级方法 |
US10719310B1 (en) * | 2019-03-18 | 2020-07-21 | Dell Products, L.P. | Systems and methods for reducing keyboard, video, and mouse (KVM) downtime during firmware update or failover events in a chassis with redundant enclosure controllers (ECs) |
DE102019119487B3 (de) * | 2019-07-18 | 2020-09-10 | WAGO Verwaltungsgesellschaft mit beschränkter Haftung | Aktualisierung von komponenten eines modularen systems |
TWI779257B (zh) * | 2019-12-26 | 2022-10-01 | 聚眾聯合科技股份有限公司 | 韌體更新之方法及其韌體更新系統 |
TWI737106B (zh) * | 2019-12-31 | 2021-08-21 | 啟碁科技股份有限公司 | 韌體更新方法和韌體更新系統 |
EP4109237A1 (en) * | 2021-06-22 | 2022-12-28 | ABB Schweiz AG | Computer-implemented method for updating a process control system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6353926B1 (en) * | 1998-07-15 | 2002-03-05 | Microsoft Corporation | Software update notification |
US20090222650A1 (en) * | 2008-02-29 | 2009-09-03 | Hon Hai Precision Industry Co., Ltd. | Communication device and firmware update method thereof |
US20120072897A1 (en) * | 2010-09-20 | 2012-03-22 | American Megatrends, Inc. | Microcontroller firmware running from ram and applications of the same |
US20120246628A1 (en) * | 2011-03-25 | 2012-09-27 | Hon Hai Precision Industry Co., Ltd. | Firmware updating system and method |
US20130254527A1 (en) * | 2012-03-20 | 2013-09-26 | Hon Hai Precision Industry Co., Ltd. | Bios firmware updating method and electronic device |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5999561A (en) * | 1997-05-20 | 1999-12-07 | Sanconix, Inc. | Direct sequence spread spectrum method, computer-based product, apparatus and system tolerant to frequency reference offset |
CA2859422C (en) * | 2004-06-24 | 2016-04-19 | Freestyle Technology Pty Ltd | An alert device |
US7480245B2 (en) * | 2004-12-11 | 2009-01-20 | International Business Machines Corporation | Segmenting data packets for over-network transmission at adjustable fragment boundary |
TW200713037A (en) * | 2005-09-06 | 2007-04-01 | Benq Corp | System and method for updating firmware |
TWI320278B (en) * | 2006-11-10 | 2010-02-01 | Network device and method for upgrading firmware | |
CA2701491A1 (en) * | 2007-10-04 | 2009-04-09 | Openpeak Inc. | Firmware image update and management |
JP5478986B2 (ja) * | 2009-08-21 | 2014-04-23 | 株式会社日立ソリューションズ | 情報機器及びプログラム |
US8774213B2 (en) * | 2011-03-30 | 2014-07-08 | Amazon Technologies, Inc. | Frameworks and interfaces for offload device-based packet processing |
JP5786613B2 (ja) * | 2011-09-30 | 2015-09-30 | ブラザー工業株式会社 | 管理装置 |
CN103377061A (zh) * | 2012-04-27 | 2013-10-30 | 鸿富锦精密工业(深圳)有限公司 | 固件更新管理***及方法 |
US9780938B2 (en) * | 2015-06-25 | 2017-10-03 | Intel IP Corporation | Patch download with improved acknowledge mechanism |
-
2016
- 2016-06-08 TW TW105118077A patent/TWI602122B/zh active
-
2017
- 2017-04-25 US US15/496,170 patent/US10001987B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6353926B1 (en) * | 1998-07-15 | 2002-03-05 | Microsoft Corporation | Software update notification |
US20090222650A1 (en) * | 2008-02-29 | 2009-09-03 | Hon Hai Precision Industry Co., Ltd. | Communication device and firmware update method thereof |
US20120072897A1 (en) * | 2010-09-20 | 2012-03-22 | American Megatrends, Inc. | Microcontroller firmware running from ram and applications of the same |
US20120246628A1 (en) * | 2011-03-25 | 2012-09-27 | Hon Hai Precision Industry Co., Ltd. | Firmware updating system and method |
US20130254527A1 (en) * | 2012-03-20 | 2013-09-26 | Hon Hai Precision Industry Co., Ltd. | Bios firmware updating method and electronic device |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111221548A (zh) * | 2018-11-27 | 2020-06-02 | 环达电脑(上海)有限公司 | 用于现场可程序逻辑闸阵列的韧体更新方法 |
CN111221548B (zh) * | 2018-11-27 | 2023-03-24 | 环达电脑(上海)有限公司 | 用于现场可程序逻辑闸阵列的韧体更新方法 |
CN114594700A (zh) * | 2020-12-04 | 2022-06-07 | 昆达电脑科技(昆山)有限公司 | 整合控制管理*** |
CN114594700B (zh) * | 2020-12-04 | 2023-07-14 | 昆达电脑科技(昆山)有限公司 | 整合控制管理*** |
Also Published As
Publication number | Publication date |
---|---|
US20170357497A1 (en) | 2017-12-14 |
US10001987B2 (en) | 2018-06-19 |
TW201743205A (zh) | 2017-12-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI602122B (zh) | 韌體更新方法 | |
CN109964215B (zh) | 具有环形缓冲区镜像的远程直接存储器访问数据通信中的流控制 | |
JP4985565B2 (ja) | 送受信回路、受信回路及び送受信回路の制御方法 | |
US10153887B2 (en) | Patch download with improved acknowledge mechanism | |
US20170331699A1 (en) | Ecu for transmitting large data in hil test environment, system including the same and method thereof | |
US20130003751A1 (en) | Method and system for exponential back-off on retransmission | |
TWI778811B (zh) | 升級方法,電腦系統和遠端升級設備 | |
CN112579311A (zh) | 访问固态硬盘的方法及存储设备 | |
JP2014183401A (ja) | 情報処理システム、情報処理装置、データ転送装置及び情報処理システムの制御方法 | |
CN107665123B (zh) | 固件更新方法 | |
US6977901B2 (en) | Packet transmission/reception processor | |
US9451524B2 (en) | Wireless networking with flexibly-ordered relayers | |
JP5112246B2 (ja) | ストレージシステム及び通信方法 | |
CN112822002A (zh) | 基于spi的通信方法及装置、电子设备和存储介质 | |
WO2015100932A1 (zh) | 一种网络数据的传输方法、装置及*** | |
CN110169023A (zh) | 一种数据传输方法、数据接收设备及数据发送设备 | |
US20160080111A1 (en) | Receiver, transmitter and data transmission system | |
CN109587083B (zh) | 数据传输方法及相关装置 | |
JP2004326143A (ja) | Fpgaを具備するcpu装置とその初期化方法 | |
US10270705B1 (en) | Transmission of stateful data over a stateless communications channel | |
US20120072520A1 (en) | System and Method for Establishing Reliable Communication in a Connection-Less Environment | |
KR20220053386A (ko) | 효율적인 파일 전송을 위한 데이터 통신 방법 및 장치 | |
US20140321465A1 (en) | Apparatus and method for using link-tail of link list to store data pattern which is indicative of end of link list and auxiliary information | |
CN107818068B (zh) | Usb装置、数据传送***和数据传送方法 | |
CN114817100B (zh) | 一种用于单板的数据读取方法和装置 |