TWI594188B - 系統單晶片及其開機方法 - Google Patents
系統單晶片及其開機方法 Download PDFInfo
- Publication number
- TWI594188B TWI594188B TW102109076A TW102109076A TWI594188B TW I594188 B TWI594188 B TW I594188B TW 102109076 A TW102109076 A TW 102109076A TW 102109076 A TW102109076 A TW 102109076A TW I594188 B TWI594188 B TW I594188B
- Authority
- TW
- Taiwan
- Prior art keywords
- firmware image
- firmware
- signature
- memory
- code
- Prior art date
Links
Landscapes
- Stored Programmes (AREA)
Description
本發明是有關於一種晶片,且特別是有關於一種系統單晶片(System-on-Chip,SoC)及其開機方法。
一般來說,系統單晶片或稱為系統整合晶片(System-Level Integration,SLI)是指將一個完整的計算機系統放入一個晶片或積體電路中。舉例來說,常見的系統單晶片可包括中央處理器(Central Processing Unit,CPU)、記憶體、以及週邊電路等等。系統單晶片的主要概念是將某一種應用領域的電路縮小化及/或模組化,使此應用領域的大部分功能整合在一個晶片或積體電路中,從而達到使產品外形體積減小及/或便於攜帶之功效。
在系統單晶片的開機過程中,系統單晶片的中央處理器會從一儲存媒體中取得一個唯一的韌體映像檔,並執行此韌體映像檔進行開機。然而,當此韌體映像檔損毀或無法完整讀取時,可能會導致系統單晶片無法正常開機。
本發明提供一種系統單晶片及其開機方法,可有效提升系統單晶片開機時的韌體使用彈性。
本發明提出一種系統單晶片,此系統單晶片耦接一外部記憶體,此系統單晶片包括唯讀記憶體與處理器。唯讀記憶體用以儲存一第一韌體映像檔。處理器耦接唯讀記憶體,用以自唯讀記憶體讀取一第一韌體映像檔,並驗證第一韌體映像檔是否已毀損。
若第一韌體映像檔為正常的韌體映像檔,處理器執行第一韌體映像檔進行開機程序。若第一韌體映像檔已毀損,處理器自外部記憶體讀取一第二韌體映像檔,並驗證第二韌體映像檔是否為合法的韌體映像檔。若第二韌體映像檔為驗證成功,處理器執行第二韌體映像檔進行開機程序。
再從另一角度來看,本案也提出一種開機方法,此開機方法適用於一系統單晶片,此系統單晶片包括一處理器,此開機方法包括:提供一唯讀記憶體,其中唯讀記憶體儲存一第一韌體映像檔;提供一外部記憶體,其中外部記憶體儲存一第二韌體映像檔;由處理器自唯讀記憶體讀取第一韌體映像檔,並驗證第一韌體映像檔是否已毀損;若第一韌體映像檔為正常的韌體映像檔的,執行第一韌體映像檔進行開機程序;若第一韌體映像檔已毀損,自外部記憶體讀取第二韌體映像檔,並驗證第二韌體映像檔是否為合法的;若第二韌體映像檔驗證成功,執行第二韌體映像
檔進行開機程序。
基於上述,本發明的系統單晶片及其開機方法,可預先提供兩個或兩個以上的韌體映像檔,以在系統單晶片的開機過程中,載入合法及/或完整的韌體映像檔以完成開機程序。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
10‧‧‧開機系統
11‧‧‧外部記憶體
12‧‧‧系統單晶片
122‧‧‧唯讀記憶體
124‧‧‧資料記憶體
126‧‧‧可程式記憶體
128‧‧‧中央處理器
31‧‧‧第一儲存區
32‧‧‧第二儲存區
312、322‧‧‧晶片功能儲存區
314、324‧‧‧韌體映像檔儲存區
316、326‧‧‧韌體資訊儲存區
41‧‧‧映像檔長度欄位
42‧‧‧映像檔位元碼欄位
43‧‧‧簽章欄位
44‧‧‧檢查總和欄位
45‧‧‧校驗碼欄位
S202~S218、S502~S528‧‧‧步驟
圖1為根據本發明一實施例所繪示的系統單晶片的開機系統的示意圖。
圖2為根據本發明一實施例所繪示的開機方法。
圖3為根據本發明一實施例所繪示的外部記憶體儲存韌體映像檔的示意圖。
圖4為根據本發明一實施例所繪示的韌體映像檔之格式的示意圖。
圖5為根據本發明一實施例所繪示的開機方法的流程圖。
圖1為根據本發明一實施例所繪示的系統單晶片(System On a Chip,SoC)的開機系統的示意圖。請參照圖1,系統單晶片的開機系統10包括外部記憶體11以及系統單晶片12。外部記憶
體11例如是快閃記憶體(flash memory)等可用以儲存資料的各式儲存媒體。系統單晶片12是由處理器、記憶體等電子電路集成的單一晶片,例如,適用於處理通用串列匯流排(Universal Serial Bus,USB)2.0或USB 3.0之信號的系統單晶片等等,且本發明不限制系統單晶片12的種類。外部記憶體11與系統單晶片12之間例如是透過串列週邊介面(Serial Peripheral Interface,SPI)匯流排(bus)等各式匯流排相互耦接。
系統單晶片12包括唯讀記憶體(Read Only Memory,ROM)122、資料記憶體124、可程式記憶體126以及處理器128。唯讀記憶體122可用以儲存系統單晶片12出廠前就預先寫入的資料。資料記憶體124與可程式記憶體126例如是隨機存取記憶體(Random Access Memory,RAM)。特別是,由於可程式記憶體126主要是用來儲存二位元程式碼(binary code),且資料記憶體124主要是用來儲存其他的各種資料,因此資料記憶體124需具備較快速的讀寫速度,而可程式記憶體126的讀寫速度則不受限制。處理器128為系統單晶片12的核心元件,用以負責系統單晶片12的整體運作,並提供運算與資料處理功能。
在本實施例中,唯讀記憶體122儲存有第一韌體映像檔(firmware image),外部記憶體11儲存有第二韌體映像檔,並且此兩個韌體映像檔可分別帶有系統單晶片12中各個構件或電子電路的設定及/或驅動程式。第一韌體映像檔與第二韌體映像檔可以相同也可以不相同。舉例來說,第二韌體映像檔可以是第一韌體
映像檔的備份(backup)。或者,第一韌體映像檔與第二韌體映像檔也可以是不同版本的韌體映像檔(例如,驅動程式版本不同等等),視實務上的需求而定。
當儲存於唯讀記憶體122中的第一韌體映像檔損毀或處理器128無法完整對第一韌體映像檔進行讀取時,處理器128改為讀取外部記憶體11中的第二韌體映像檔,並利用第二韌體映像檔對系統單晶片11進行開機程序。
圖2為根據本案之一實施例所繪示的開機方法。以下將以系統單晶片的開機系統10搭配圖2對此方法進行詳細說明。請同時參照圖1與圖2,在步驟S202中,提供唯讀記憶體122,其中,唯讀記憶體122儲存一第一韌體映像檔。在步驟S204中,提供外部記憶體11,其中,外部記憶體11儲存一第二韌體映像檔。
在步驟S206中,當處理器128偵測到一開機訊號或偵測到系統單晶片12通電時,處理器128可以自唯讀記憶體122中讀取第一韌體映像檔。然後,在步驟S208中,處理器128驗證第一韌體映像檔是否為正常或完整的韌體映像檔。
若此第一韌體映像檔為正常的韌體映像檔或完整的,在步驟S210中,處理器128讀取第一韌體映像檔進行開機程序。若第一韌體映像檔已毀損或不完整的韌體映像檔,在步驟S212中,處理器128可接續自外部記憶體11讀取並執行第二韌體映像檔。
然後,在步驟S214中,處理器128驗證第二韌體映像檔是否為合法或完整的。若第二韌體映像檔為合法或完整的,在步
驟S214中,處理器128執行第二韌體映像檔進行開機程序。
在步驟S216中,若第二韌體映像檔為不完整或不合法的韌體映像檔時,處理器128可執行儲存於唯讀記憶體122的一基本開機程序,以在有限的條件下將系統單晶片12開機。特別是,若處理器128僅是利用基本開機程序將系統單晶片12開機,可能會導致系統單晶片12中的多數構件及/或電子電路沒有被完整的驅動(因為詳細的設定及/或驅動資訊是定義於韌體映像檔中),並使得系統單晶片12可提供的功能大幅地縮減。
圖3為根據本案之一實施例所繪示的儲存韌體映像檔的示意圖。請參照圖3,第一儲存區31位於唯讀記憶體122,第二儲存區32位於外部記憶體11。第一儲存區31用以儲存第一韌體映像檔與第一輔助資訊,第二儲存區32用以儲存第二韌體映像檔與第二輔助資訊。
詳細而言,第一儲存區31可包括晶片功能儲存區312、韌體映像檔儲存區314以及韌體資訊儲存區316。晶片功能儲存區312用來儲存系統單晶片12的一些額外設定資訊,例如系統單晶片12中各元件的電源(power)設定等等。韌體映像檔儲存區314用來儲存第一韌體映像檔。韌體資訊儲存區316用來儲存與第一韌體映像檔有關的使用者自訂資訊,例如,使用者名稱、使用者自訂的字串(string)及/或超時(time out)設定等等。
晶片功能儲存區312與韌體資訊儲存區316即儲存有第一輔助資訊。相類似地,第二儲存區32也可包括晶片功能儲存區
322、韌體映像檔儲存區324以及韌體資訊儲存區326,其中晶片功能儲存區322用來儲存系統單晶片12的一些額外設定資訊,韌體映像檔儲存區324用來儲存第二韌體映像檔,並且韌體資訊儲存區326用來儲存與第二韌體映像檔有關的使用者自訂資訊。晶片功能儲存區322與韌體資訊儲存區326即儲存有第二輔助資訊。然而,本案之實施例並不以此為限。
在本案中,唯讀記憶體122與/或外部記憶體11還可以包括其他的儲存區以儲存其他的韌體映像檔(例如,第三韌體映像檔)及/或輔助資訊(例如,第三輔助資訊)等等。
此外,圖4為根據本案之實施例所繪示的韌體映像檔之格式的示意圖。請參照圖4,以儲存第一韌體映像檔的韌體映像檔儲存區314為例,韌體映像檔儲存區314包括映像檔長度欄位41、映像檔位元碼(binary code)欄位42、簽章(signature)欄位43、檢查總和(checksum)欄位44以及校驗碼欄位45。
映像檔長度欄位41用來儲存第一韌體映像檔的長度資訊,並且此長度資訊可用來查詢其他欄位的資訊(例如,各欄位的起始位址或位元數)。位元碼欄位42用來儲存第一韌體映像檔的映像檔位元碼(以下統稱為第一映像檔位元碼),也就是第一韌體映像檔的程式主體。簽章欄位43用來儲存第一韌體映像檔的簽章(以下統稱為第一簽章),檢查總和欄位44用來儲存第一韌體映像檔的檢查總和,以及校驗碼欄位45用來儲存第一韌體映像檔的校驗碼(以下統稱為第一校驗碼)。在本實施例中,校驗碼例如
是循環冗餘校驗(Cyclic redundancy check,CRC),但可視實務上的需求改變校驗碼的種類。在本實施例中,韌體映像檔儲存區314及各個欄位的長度皆可以視實務上的需求加以調整。
特別是,簽章欄位43中第一韌體映像檔的簽章,檢查總和欄位44中第一韌體映像檔的檢查總和,以及校驗碼欄位45中第一韌體映像檔的校驗碼可同時或單獨用來驗證第一韌體映像檔是否合法或者是否完整。此外,第二韌體映像檔與韌體映像檔儲存區324的格式可從上述第一韌體映像檔與韌體映像檔儲存區314類推,在此便不贅述。
詳細而言,圖5為根據本案實施例所繪示的開機方法的流程圖。請同時參照圖1與圖5,在步驟S502中,處理器128偵測一開機訊號或驗證系統單晶片12是否通電。若處理器128偵測到開機訊號或系統單晶片12已通電,處理器128可自唯讀記憶體122讀取第一韌體映像檔中的第一簽章(例如,從圖4的簽章欄位43)。
以圖3為例,處理器128可從唯讀記憶體122中的位址0X0080開始讀取韌體映像檔儲存區314中的資訊。接著,在步驟S506中,處理器128從唯讀記憶體122中讀取預先儲存的一驗證簽章,並驗證第一簽章是否與此驗證簽章相同。若第一簽章與此驗證簽章相同,則在步驟S508中,處理器128自唯讀記憶體122讀取第一韌體映像檔中的第一校驗碼與第一映像檔位元碼(例如,從圖4的校驗碼欄位45與映像檔位元碼欄位42),將第一校
驗碼儲存於資料記憶體124,並將第一映像檔位元碼儲存於可程式記憶體126。
然後,在步驟S510中,處理器128根據第一映像檔位元碼計算第一評估碼。接著,在步驟S512中,處理器128驗證第一評估碼是否與第一校驗碼相同。若第一評估碼與第一校驗碼相同,表示第一韌體映像檔為正常的韌體映像檔或完整的,因此,在步驟S514中,處理器128執行儲存於可程式記憶體126中第一韌體映像檔的第一映像檔位元碼進行開機程序。
此外,在步驟S506中,若第一簽章與驗證簽章不相同,或者在步驟S512中,若第一評估碼與第一校驗碼不相同,表示第一韌體映像檔已毀損或完整的。因此,在步驟S516中,處理器128可以接續自外部記憶體11讀取第二韌體映像檔中的簽章(以下統稱為第二簽章),並將第二簽章儲存於資料記憶體124。
以圖3為例,處理器128可以從外部記憶體11中的位址0X10080開始讀取韌體映像檔儲存區324中的資訊。然後,在步驟S518中,處理器128同樣驗證第二簽章是否與預先儲存於唯讀記憶體122中的上述驗證簽章相同。若第一簽章與此驗證簽章相同,則在步驟S520中,處理器128自外部記憶體11讀取第二韌體映像檔中的校驗碼(以下統稱為第二校驗碼)與映像檔位元碼(以下統稱為第二映像檔位元碼),將第二校驗碼儲存於資料記憶體124,並將第二映像檔位元碼儲存於可程式記憶體126。
然後,在步驟S522中,處理器128根據第二映像檔位元
碼計算第二評估碼。接著,在步驟S524中,處理器128驗證第二評估碼是否與第二校驗碼相同。若第二評估碼與第二校驗碼相同,表示第二韌體映像檔為合法或完整的,因此,在步驟S526中,處理器128執行儲存於可程式記憶體126中第二韌體映像檔的第二映像檔位元碼進行開機程序。
此外,在步驟S518中,若第二簽章與驗證簽章不相同,或者在步驟S524中,若第二評估碼與第二校驗碼不相同,表示第二韌體映像檔驗證失敗或不是完整的,因此,在步驟S528中,處理器128會執行儲存於唯讀記憶體122中的基本開機程序。
在本實施例中,處理器128還會將一重試次數記錄於資料記憶體124,並且在每次偵測到開機訊號或系統單晶片12通電時,將此重試次數初始化(例如,歸零)。在第一韌體映像檔的驗證階段中,若處理器128驗證第一韌體映像檔已毀損,則處理器128可根據此重試次數判斷是重複執行對於第一韌體映像檔的驗證,或者切換至第二韌體映像檔的驗證階段。在第二韌體映像檔的證階段中,處理器128同樣可根據此重試次數判斷是重複執行對於第二韌體映像檔的驗證,或者切換至執行基本開機程序。
此外,在本實施例中,若處理器128決定執行第一韌體映像檔進行開機程序,則處理器128也可自唯讀記憶體122讀取上述第一輔助資料,以根據此第一輔助資料執行對於系統單晶片12的第一設定操作。以圖3為例,第一輔助資料例如是儲存於晶片功能儲存區312及/或韌體資訊儲存區316的資料。
若處理器128決定執行第二韌體映像檔進行開機程序,則處理器128也可自外部記憶體11讀取第二輔助資料,以根據此第二輔助資料執行對於系統單晶片12的第二設定操作。以圖3為例,此第二輔助資料例如是儲存於晶片功能儲存區322及/或韌體資訊儲存區326的資料。此外,此第一設定操作與第二設定操作例如是針對系統單晶片12的電源等硬體相關資源進行的額外設定,或在系統中加入使用者自訂的名稱或字串等等。
此外,在一實施例中,外部記憶體11還可儲存一第三韌體映像檔。若處理器128驗證第二韌體映像檔,且驗證失敗時,處理器128可自外部記憶體11讀取此第三韌體映像檔,並驗證此第三韌體映像檔是否為合法或完整的。
若此第三韌體映像檔為合法或完整的,則處理器128執行此第三韌體映像檔進行開機程序。若處理器128驗證此第三韌體映像檔同樣驗證失敗或完整的,則執行基本開機程序。
在本實施例中,處理器128也可接收來自一輸入介面的更新指令,並根據此更新指令更新儲存於外部記憶體11的第二韌體映像檔,或新增一第三韌體映像檔於外部記憶體11中。舉例來說,假設系統單晶片12為支援USB 3.0的系統單晶片,則系統單晶片12會包括一USB介面,並且處理器128可接收來自此USB介面的更新指令。例如,此更新指令可包括一寫入指令與一新的韌體映像檔。
在處理器128接收到此更新指令之後,處理器128可根
據此更新指令中的寫入指令選定外部記憶體11中的一個或多個韌體映像檔,並以此新的韌體映像檔更新被選定的一個或多個韌體映像檔。以圖3為例,若此寫入指令指定以一新的韌體映像檔更新儲存於外部記憶體11的韌體映像檔儲存區324中的韌體映像檔,則處理器128可從外部記憶體11中的位址0x10080開始將此新的韌體映像檔覆蓋於韌體映像檔儲存區314中。
此外,處理器128也可根據此更新指令同時或單獨更新儲存於外部記憶體11之晶片功能儲存區322、韌體映像檔儲存區324及/或韌體資訊儲存區326中的資訊,以提升本發明使用上的彈性。
值得一提的是,上述第一韌體映像檔與第二韌體映像檔儲存在外部記憶體11及/或唯讀記憶體122中的位址,也可以是在系統單晶片12的開機過程中,由處理器128適應性地決定。換言之,以圖3為例,處理器128實際上可將儲存於第一儲存區31的韌體映像檔視為第一韌體映像檔,並將儲存於第二儲存區32的韌體映像檔視為第二韌體映像檔。或者,處理器128也可將儲存於第二儲存區32的韌體映像檔視為第一韌體映像檔,並將儲存於第一儲存區31的韌體映像檔視為第二韌體映像檔,視不同的情況而可以有不同的選擇。
舉例來說,在一實施例中,當處理器128更新儲存於外部記憶體11中的韌體映像檔時,處理器128可同步更新儲存於外部記憶體11中的一韌體更新資訊。然後,在系統單晶片12的開
機過程中,處理器128可以查詢此韌體更新資訊,並根據此韌體更新資訊決定第一韌體映像檔與第二韌體映像檔的位址。例如,透過查詢此韌體更新資訊,處理器128可從唯讀記憶體122中的一個或多個韌體映像檔中選擇版本最新或讀取優先順序最高的韌體映像檔作為上述第一韌體映像檔而優先讀取並驗證,並從外部記憶體11中的一個或多個韌體映像檔中選擇版本最新或讀取優先順序最高的韌體映像檔作為上述第二韌體映像檔等等。而在版本最新或讀取優先順序最高的第一及/或第二韌體映像檔驗證失敗之後,處理器128同樣可根據此韌體更新資訊讀取其他的韌體映像檔,並重複上述驗證動作,在此不一一贅述。
此外,此韌體更新資訊也可以是由處理器128根據使用者的操作而加以設定,例如定義各個韌體映像檔的讀取優先順序等等。
特別是,上述韌體更新資訊還可以包括各個韌體映像檔儲存區中的韌體映像檔之更新時間等各種識別資訊。藉此,處理器128可根據此韌體更新資訊將外部記憶體11中更新時間較晚的韌體映像檔作為第二韌體映像檔,並將外部記憶體11中更新時間較早的韌體映像檔作為第二韌體映像檔驗證失敗之後讀取的第三韌體映像檔等等,本發明不對其限制。
綜上所述,本發明的系統單晶片及其開機方法,可預先提供兩個或兩個以上的韌體映像檔,以在系統單晶片的開機過程中,載入合法及/或完整的韌體映像檔以完成開機程序。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S202~S218‧‧‧步驟
Claims (17)
- 一種系統單晶片,耦接一外部記憶體,該系統單晶片包括:一唯讀記憶體,用以儲存一第一韌體映像檔和一基本開機程序;一處理器,耦接該唯讀記憶體,用以自該唯讀記憶體讀取該第一韌體映像檔,並驗證該第一韌體映像檔之狀態,若該第一韌體映像檔為正常狀態,該處理器執行該第一韌體映像檔以進行一開機程序,若該第一韌體映像檔為已毀損狀態,該處理器自該外部記憶體讀取一第二韌體映像檔,並驗證該第二韌體映像檔是否合法;若該第二韌體映像檔驗證為合法,該處理器執行該第二韌體映像檔以執行該開機程序;若該第二韌體映像檔為不合法的韌體映像檔時,該處理器執行該基本開機程序。
- 如申請專利範圍第1項所述的系統單晶片,其中該處理器自該唯讀記憶體讀取該第一韌體映像檔中的一第一簽章,並判斷該第一簽章是否與預設的一驗證簽章相同,若該第一簽章與該驗證簽章不相同,該處理器判定該第一韌體映像檔為已毀損韌體映像檔。
- 如申請專利範圍第2項所述的系統單晶片,其中若該第一簽章與該驗證簽章相同,該處理器自該唯讀記憶體讀取該第一韌體映像檔中的一第一校驗碼與一第一映像檔位元碼,根據該第一 映像檔位元碼計算一第一評估碼,並驗證該第一評估碼是否與該第一校驗碼相同,其中若該第一評估碼與該第一校驗碼相同,該處理器判定該第一韌體映像檔為正常的韌體映像檔的。
- 如申請專利範圍第1項所述的系統單晶片,其中該處理器自該外部記憶體讀取該第二韌體映像檔中的一第二簽章,並驗證該第二簽章是否與預設的一驗證簽章相同,其中若該第二簽章與該驗證簽章不相同,該處理器判定該第二韌體映像檔驗證失敗。
- 如申請專利範圍第4項所述的系統單晶片,其中若該第二簽章與該驗證簽章相同,該處理器自該外部記憶體讀取該第二韌體映像檔中的一第二校驗碼與一第二映像檔位元碼,根據該第二映像檔位元碼計算一第二評估碼,並判斷該第二評估碼是否與該第二校驗碼相同,其中若該第二評估碼與該第二校驗碼相同,該處理器判定該第二韌體映像檔驗證成功。
- 如申請專利範圍第1項所述的系統單晶片,其中該處理器更根據一更新指令,更新儲存於該外部記憶體的該第二韌體映像檔,或新增一第三韌體映像檔於該外部記憶體中。
- 如申請專利範圍第1項所述的系統單晶片,其中該唯讀記憶體具有一第一儲存區,該第一儲存區儲存有該第一韌體映像檔與一第一輔助資料,該外部記憶體具有一第二儲存區,並且該第二儲存區儲存有該第二韌體映像檔與一第二輔助資料, 其中若該處理器執行該第一韌體映像檔執行該開機程序,該處理器自該唯讀記憶體讀取該第一輔助資料,以根據該第一輔助資料執行對於該系統單晶片的一第一設定操作,其中若該處理器執行該第二韌體映像檔執行該開機程序,該處理器更自該外部記憶體讀取該第二輔助資料,以根據該第二輔助資料執行對於該系統單晶片的一第二設定操作。
- 如申請專利範圍第1項所述的系統單晶片,其中該外部記憶體儲存一第三韌體映像檔,其中若該第二韌體映像檔驗證失敗,該處理器自該外部記憶體讀取該第三韌體映像檔,並驗證該第三韌體映像檔是否為合法的,其中若該第三韌體映像檔驗證成功,該處理器執行該第三韌體映像檔執行該開機程序。
- 一種開機方法,適用於一系統單晶片,該系統單晶片包括一處理器,該開機方法包括:提供一唯讀記憶體,其中該唯讀記憶體儲存一第一韌體映像檔和一基本開機程序;提供一外部記憶體,其中該外部記憶體儲存一第二韌體映像檔;由該處理器自該唯讀記憶體讀取該第一韌體映像檔,並驗證該第一韌體映像檔之狀態;若該第一韌體映像檔為正常的狀態,執行該第一韌體映像檔進行一開機程序; 若該第一韌體映像檔為已毀損狀態,自該外部記憶體讀取該第二韌體映像檔,並驗證該第二韌體映像檔是否為合法的;以及若該第二韌體映像檔驗證成功,執行該第二韌體映像檔執行該開機程序;若該第二韌體映像檔為不合法的韌體映像檔時,該處理器執行該基本開機程序。
- 如申請專利範圍第9項所述的開機方法,其中該處理器自該唯讀記憶體讀取該第一韌體映像檔,並驗證該第一韌體映像檔是否已毀損之步驟包括:自該唯讀記憶體讀取該第一韌體映像檔中的一第一簽章;驗證該第一簽章是否與預設的一驗證簽章相同;以及若該第一簽章與該驗證簽章不相同,判定該第一韌體映像檔已毀損。
- 如申請專利範圍第10項所述的開機方法,其中由該處理器自該唯讀記憶體讀取該第一韌體映像檔,並驗證該第一韌體映像檔是否已毀損之步驟更包括:若該第一簽章與該驗證簽章相同,自該唯讀記憶體讀取該第一韌體映像檔中的一第一校驗碼與一第一映像檔位元碼;根據該第一映像檔位元碼計算一第一評估碼;驗證該第一評估碼是否與該第一校驗碼相同;以及若該第一評估碼與該第一校驗碼相同,判定該第一韌體映像檔為正常的韌體映像檔。
- 如申請專利範圍第9項所述的開機方法,其中自該外部記憶體讀取該第二韌體映像檔,並驗證該第二韌體映像檔是否為合法的之步驟包括:自該外部記憶體讀取該第二韌體映像檔中的一第二簽章;驗證該第二簽章是否與預設的一驗證簽章相同;以及若該第二簽章與該驗證簽章不相同,判定該第二韌體映像檔驗證失敗。
- 如申請專利範圍第12項所述的開機方法,其中自該外部記憶體讀取該第二韌體映像檔,並驗證該第二韌體映像檔是否為合法的之步驟更包括:若該第二簽章與該驗證簽章相同,自該外部記憶體讀取該第二韌體映像檔中的一第二校驗碼與一第二映像檔位元碼;根據該第二映像檔位元碼計算一第二評估碼;驗證該第二評估碼是否與該第二校驗碼相同;以及若該第二評估碼與該第二校驗碼相同,判定該第二韌體映像檔驗證成功的。
- 如申請專利範圍第9項所述的開機方法,更包括:根據一更新指令,更新儲存於該外部記憶體的該第二韌體映像檔,或新增一第三韌體映像檔於該外部記憶體中。
- 如申請專利範圍第14項所述的開機方法,更包括:同步更新一韌體更新資訊;以及在該系統單晶片的開機過程中,查詢該韌體更新資訊,以根 據該韌體更新資訊決定該第一韌體映像檔與該第二韌體映像檔的位址。
- 如申請專利範圍第9項所述的開機方法,其中執行該第一韌體映像檔執行該開機程序的步驟包括:自該唯讀記憶體讀取一第一輔助資料,以根據該第一輔助資料執行對於該系統單晶片的一第一設定操作,其中執行該第二韌體映像檔執行該開機程序的步驟包括:自該外部記憶體讀取一第二輔助資料,以根據該第二輔助資料執行對於該系統單晶片的一第二設定操作。
- 如申請專利範圍第9項所述的開機方法,更包括:若該第二韌體映像檔驗證失敗,自該外部記憶體讀取一第三韌體映像檔,並驗證該第三韌體映像檔是否為合法的;以及若該第三韌體映像檔驗證成功,執行該第三韌體映像檔執行該開機程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/858,112 US9256744B2 (en) | 2012-04-10 | 2013-04-08 | System-on-chip and booting method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201261622017P | 2012-04-10 | 2012-04-10 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342238A TW201342238A (zh) | 2013-10-16 |
TWI594188B true TWI594188B (zh) | 2017-08-01 |
Family
ID=49771470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102109076A TWI594188B (zh) | 2012-04-10 | 2013-03-14 | 系統單晶片及其開機方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI594188B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI755695B (zh) * | 2020-03-12 | 2022-02-21 | 智微科技股份有限公司 | 系統單晶片的開機方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9619377B2 (en) | 2014-05-29 | 2017-04-11 | Apple Inc. | System on a chip with always-on processor which reconfigures SOC and supports memory-only communication mode |
US9778728B2 (en) | 2014-05-29 | 2017-10-03 | Apple Inc. | System on a chip with fast wake from sleep |
US10031000B2 (en) | 2014-05-29 | 2018-07-24 | Apple Inc. | System on a chip with always-on processor |
US9479331B2 (en) | 2014-08-20 | 2016-10-25 | Apple Inc. | Managing security in a system on a chip (SOC) that powers down a secure processor |
TWI763192B (zh) * | 2020-12-18 | 2022-05-01 | 技嘉科技股份有限公司 | 電子裝置以及資料完整性的檢驗方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060159023A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | CRC error history mechanism |
TW201019161A (en) * | 2008-11-07 | 2010-05-16 | Socle Technology Corp | Control system and a security checking method thereof |
TW201027324A (en) * | 2009-01-14 | 2010-07-16 | Giga Byte Tech Co Ltd | Embedded electronic device free from being stuck in update failure and method of making the same |
US20120047366A1 (en) * | 2010-08-19 | 2012-02-23 | Samsung Sds Co., Ltd. | Soc with security function and device and scanning method using the same |
-
2013
- 2013-03-14 TW TW102109076A patent/TWI594188B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060159023A1 (en) * | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | CRC error history mechanism |
TW201019161A (en) * | 2008-11-07 | 2010-05-16 | Socle Technology Corp | Control system and a security checking method thereof |
TW201027324A (en) * | 2009-01-14 | 2010-07-16 | Giga Byte Tech Co Ltd | Embedded electronic device free from being stuck in update failure and method of making the same |
US20120047366A1 (en) * | 2010-08-19 | 2012-02-23 | Samsung Sds Co., Ltd. | Soc with security function and device and scanning method using the same |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI755695B (zh) * | 2020-03-12 | 2022-02-21 | 智微科技股份有限公司 | 系統單晶片的開機方法 |
Also Published As
Publication number | Publication date |
---|---|
TW201342238A (zh) | 2013-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI594188B (zh) | 系統單晶片及其開機方法 | |
US9256744B2 (en) | System-on-chip and booting method thereof | |
TWI525542B (zh) | Uefi bios開機及更新之系統及方法、記錄媒體及電腦程式產品 | |
CN103930878B (zh) | 用于存储器验证的方法、装置及系统 | |
TWI501253B (zh) | 於裝置開機期間處置來自非揮發性記憶體之錯誤 | |
US8751783B2 (en) | Booting computing devices with EFI aware operating systems | |
US7900091B2 (en) | Method for recovering basic input output system and computer device thereof | |
JP2008016020A (ja) | Biosの実行を加速化する方法 | |
WO2013013396A1 (zh) | 基本输入/输出系统bios配置数据管理方法及系统 | |
EP2660713A1 (en) | Patch mechanism in embedded controller for memory access | |
TW201818253A (zh) | 檢測系統及檢測方法 | |
US9348603B2 (en) | Electronic apparatus and booting method | |
TW201331841A (zh) | 電子裝置及其基本輸入輸出系統的更新裝置 | |
TWI537826B (zh) | 主晶片開機方法 | |
TW201314574A (zh) | 用於電腦系統之基本輸入輸出系統程式更新方法及更新裝置 | |
US9507665B2 (en) | Computing device and method for accessing BIOS using middleware controller of the computing device | |
WO2012155439A1 (zh) | 一种bios启动系统和方法 | |
US9983885B2 (en) | BIOS system with non-volatile data memory | |
US9311075B2 (en) | Electronic apparatus and BIOS updating apparatus thereof | |
TWI556172B (zh) | 電腦裝置及其開機方法 | |
JP2008065725A (ja) | Nand型フラッシュメモリデバイス及びこれを利用したコンピューティングシステムの起動方法 | |
CN106611124A (zh) | 计算机装置及其开机方法 | |
TWI544392B (zh) | 電容式觸控電子裝置、觸控裝置及其模式選擇方法 | |
TWI796178B (zh) | 電子裝置及程式碼修補方法 | |
JP5333262B2 (ja) | 処理装置,bios更新方法およびbios更新用プログラム |