TW201502990A - 唯讀記憶體之修補啓動碼 - Google Patents
唯讀記憶體之修補啓動碼 Download PDFInfo
- Publication number
- TW201502990A TW201502990A TW103104936A TW103104936A TW201502990A TW 201502990 A TW201502990 A TW 201502990A TW 103104936 A TW103104936 A TW 103104936A TW 103104936 A TW103104936 A TW 103104936A TW 201502990 A TW201502990 A TW 201502990A
- Authority
- TW
- Taiwan
- Prior art keywords
- boot code
- boot
- memory
- code
- execution
- Prior art date
Links
- 230000015654 memory Effects 0.000 title claims abstract description 203
- 238000000034 method Methods 0.000 claims abstract description 68
- 230000008569 process Effects 0.000 claims abstract description 27
- 230000004913 activation Effects 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 7
- 238000012546 transfer Methods 0.000 claims description 3
- 238000012937 correction Methods 0.000 claims description 2
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000010304 firing Methods 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006266 hibernation Effects 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000007958 sleep Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4406—Loading of operating system
-
- 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
- G06F8/66—Updates of program code stored in read-only memory [ROM]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本案揭露一種裝置及方法,用於修補唯讀記憶體之啟動/開機碼,該方法包含:從一裝置之一唯讀記憶體開始執行一啟動碼;中斷從該唯讀記憶體執行之啟動碼,以使得能從另一記憶體執行另一啟動碼,例如修正之啟動碼或另外的啟動碼;當該另一啟動碼執行完後,恢復執行該唯讀記憶體之該啟動碼來繼續啟動該計算裝置。藉由此方式,修補啟動碼或另一啟動碼可在開機過程中有效的修補儲存於該唯讀記憶體中之該啟動碼。
Description
本申請案主張2013年2月22日申請之美國臨時專利申請案第61/768,097號之申請日的權利,將其揭示內容全文以引用的方式併入本文中。
本發明係關於一種裝置及其方法;具體而言,本發明係關於一修補唯讀記憶體中之啟動/開機碼之裝置及方法。
本背景說明之目的是為了能提供本發明揭示內容的背景。本案命名的發明者之作業,以本背景說明被描述之範圍,以及本背景說明中各方面可能不會被視為申請時的先前技術,既沒有明示或暗示地承認是為本揭露內容之先前技術。
計算及電子裝置通常在通電或開機時會執行啟動/開機碼以組態該裝置之資源或組件。一旦這些資源及組件被組態後,一操作系統會被該啟動碼裝載並執行。該裝置的控制權並且會被轉讓給執行中的操作系統,其中該操作系統會實現該裝置的功能或應用程序。
為防止未授權的軟件執行於該裝置上,該啟動碼可以驗證該操作系統及該啟動碼上方的各軟件層之真實性。由於在通電/開機時該啟動碼為執行中的最低層程式碼,啟動碼通常會被寫死(hard-coded)於裝置的硬體以確保啟動碼的真實性。隨然死寫啟動碼可防止該啟動碼被惡意的修改,然而使用死寫之方式也會阻擋到啟動碼之糾正錯誤的修改。因此,為了校正啟動碼中的錯誤,該裝置的硬件往往需要被重新設計及重新被製
造,這樣會消耗大量的時間、金錢及資源。
本案之一或多個實施方式之細節將如附圖及以下描述說明。其他特徵及優點將會從說明書及附圖顯而易見的。正因為如此,此處發明內容之本摘不應被認為是在描述必要特徵,也不應用於限制本案所要求保護的申請範圍。
本案提供一種方法,用於從一唯讀記憶體(Read Only Memory、ROM)中執行一第一啟動碼來啟動一計算裝置的開機程序。接著,該方法中斷該第一啟動碼之執行以使一第二啟動碼可從另一記憶體被執行。當該第二啟動碼被執行後,該第一次啟動碼的執行會被恢復以繼續該計算裝置的開機程序。
本案提供另一種方法,用於從一唯讀記憶體(ROM)開始執行啟動碼,其中該啟動碼之執行係藉由一程式計數器(program counter)被推進。因應於該程式計數器到達該啟動碼中之一預定位址,該啟動碼之執行會被中斷。然後,以替代性於部分該唯讀記憶體中之該啟動碼,該方法從一一次可程式記憶體(One Time Programmable memory、OTP memory)中執行另一啟動碼。因應於該另一啟動碼之執行,該程式計數器將會被返回到該啟動碼之有效於從該唯讀記憶體繼續執行該啟動碼之一位址。
本案提供一種系統單晶片(System-on-Chip、SoC),其包含處理器、唯讀記憶體、一次可程式記憶體及一中斷管理器,其中該中斷管理器係組態以因應該處理器之一程式計數器於該啟動碼遇到一預定位址時,中斷從該唯讀記憶體中該啟動碼之執行。中斷管理器進一步係被組態以使該處理器從該一次可程式記憶體執行另一啟動碼,並將該程式計數器返回到該啟動碼之有效於從該唯讀記憶體繼續執行該啟動碼之一位址。
一或多個實施方式之細節將如附圖及以下描述說明。其他特徵及優點將會從說明書及附圖顯而易見的。
100‧‧‧操作環境
102‧‧‧計算裝置
104‧‧‧智慧型手機
106‧‧‧平板電腦
108‧‧‧儲存器
110‧‧‧數位相機
112‧‧‧啟用網路協議電視
114‧‧‧處理器核心
116‧‧‧電腦可讀儲存媒體
118‧‧‧揮發性記憶體
120‧‧‧非揮發性記憶體
122‧‧‧靜態隨機記憶體
124‧‧‧動態隨機記憶體
126‧‧‧串列週邊介面快閃記憶體
128‧‧‧NAND快閃記憶體
130‧‧‧唯讀記憶體
132‧‧‧一次可程式記憶體
134‧‧‧中斷管理器
136‧‧‧輸入/輸出埠
138‧‧‧顯示器
140‧‧‧網路介面
200‧‧‧啟動架構
202‧‧‧硬體
204‧‧‧軟體
206‧‧‧啟動唯讀記憶體
208‧‧‧啟動唯讀記憶體修補碼
210、212‧‧‧開機管理程式
214‧‧‧開機管理程式
216、708‧‧‧操作系統
300、400、500、600‧‧‧方法
302~308‧‧‧步驟
402~408‧‧‧步驟
502、512、520‧‧‧位址
504‧‧‧二進位
506‧‧‧指令
508‧‧‧程式計數器
510‧‧‧啟動唯讀記憶體區
514‧‧‧中斷位址
516‧‧‧中斷處理程序
518‧‧‧修補二進位碼
522‧‧‧恢復位址
602~608‧‧‧步驟
700‧‧‧系統單晶片
702‧‧‧輸入/輸出邏輯控制器
704‧‧‧微處理器
706‧‧‧記憶體
在附圖中,標號的最左邊的數字標識該附圖首次出現之順序。在說明及附圖的不同情況下,使用相同的圖標表示為相同的元件。
圖1示出本案具包含計算裝置之一操作環境之一實施例;圖2示出一計算裝置之開機/啟動結構之一實施例;圖3示出從一唯讀記憶體中斷執行啟動碼的一方法;圖4示出用於從一次可程式記憶體中執行另一啟動碼之一方法;圖5示出啟動碼及一啟動修補碼之一實施例;圖6示出用於將啟動碼燒錄至一一次可程式記憶體之熔絲之方法;以及圖7示出一系統單晶片(SoC)之實施例。
傳統補修唯讀記憶體(Read-Only Memory、ROM)之開機/啟動碼通常需要重新製造被該啟動碼寫入(亦即,燒錄)之唯讀記憶體硬體。此種重新製造ROM的硬件通常包括另一輪矽前驗證(pre-silicon verification)、矽出帶(silicon tape-out)或掩蔽(masking)、ROM移植(porting)、製造ROM硬體/硬件以及後矽驗證(post-silicon verification)。因此,重新製作ROM的硬件來修補啟動碼會佔用了大量的時間、金錢及資源。
本發明描述一種用於修補ROM唯讀記憶體中的啟動碼(Boot code、開機碼),其可使其他啟動碼(例如,代替或額外的啟動碼)在一開機程序間從另一記憶體中被執行。在一實施例中,該另一記憶體係為一次可程式記憶體(One-Time Programmable Memory、OTP memory)。在包含該唯讀記憶體(ROM)之硬體被製造後,該另一啟動碼可被燒錄至該一次可程式記憶體。當啟動碼體現在一系統單晶片(System-on-Chip、SoC)時,該系統單晶片可提供其他程式碼(例如,修補碼patching code)一鎖定機制(lockout mechanism)。舉例而言,若在發運體現該啟動碼之產品前且在該啟動碼(例如,啟動唯讀記憶體、開機唯讀記憶體、BootROM)驗證後判斷無須
修補啟動碼時,該系統單晶片可停用該功能以確保該產品,於其產品壽命間,該產品之啟動碼的安全性。同樣地,若啟動碼需要進行修補的必要,在修補後但在硬體運出前,該系統單晶片可提供用於鎖定修補後之該一次可程式記憶體之剩下的區塊來確保該另一啟動碼之安全性。
以下說明描述一作業/操作環境、於該操作環境中可實施的技術以及可體現該操作環境之元件的一系統單晶片(SoC)。在下面的討論中,所參考到的操作環境僅作為示例。
操作環境
圖1示出具有計算裝置102之操作環境100之一實施例,其中各該計算裝置102都能夠進行通訊、讀取、呈現或處理各種資料。計算裝置102包括智慧型手機104、平板電腦106、網絡附加存儲器108(Network Attached Storage、NAS儲存器108),數位相機110以及互聯網協議功能的電視112(啟用網路協議電視、IP TV112)。雖然未示出,計算裝置102的其它構造也可被考慮,如桌上型計算機、服務器、移動網路設備(Mobile Internet Device、MID)、傳真機、印表機、數位攝影機、隨身型易網機(Netbook)、超簿筆記型電腦、遊戲機、家庭自動化終端、移動熱點、聯網的媒體播放器、等等。
一般來說,計算裝置102具有操作狀態,從“關”的狀態轉為“開”的狀態。這些操作狀態可以包括一完全關閉狀態(機械關閉)、休眠狀態(hibernation state)、休息狀態(sleep state)、暫停狀態(suspend state)、空閒狀態(idle state)、工作狀態(active state)等狀態。當從較下層的操作狀態轉變到更高層的操作狀態(例如,從關閉狀態到工作狀態),計算裝置102會被啟動/開機。將計算裝置102開機包含執行低級別的程式碼(例如,啟動碼/開機碼或二進位碼),其用於組態計算裝置102之元件或資源共一操作系統或更高層級的應用程式存取利用。
每個計算裝置102包含處理器核心114(例如,一應用程序的處理器核心)以及一電腦可讀存儲媒體116(Computer-readable storage media、CRM116)。雖然係示為單一個核心,處理器核心114可以為任何合適數量或種類的處理核心,其可以任何合適的方式被組態(例如,一個異
構多核心應用處理器)。在某些情況下,處理器核心114可以一微控制器、嵌入式控制器或數位信號處理器的核心被實現。
電腦可讀存儲媒體116包含揮發性記憶體118和非揮發性記憶體120,其可以包含為任何合適的類型、組合或任何數量之內部及/或外接儲存裝置。電腦可讀存儲媒體116的每個記憶體可以於硬件上的晶片區域(on-chip memory area)被實現或以一片外記憶體裝置(off-chip memory device)實現,其可經由一資訊介面或匯流排與處理器核心114傳輸資料。在本實施例中,揮發性記憶體118包括靜態隨機存取記憶體122(Static Random-Access Memory、SRAM122)及同步動態隨機存取記憶體124(synchronous dynamic random-access memory、DRAM124)。此外或附加地,揮發性記憶體118可包含其它合適類型的存儲器/記憶體,例如隨機存取記憶體(RAM)、非同步動態隨機存取記憶體、雙資料速率隨機存取記憶體(Double-data-rate RAM、DDR)等等。
非揮發性記憶體120包含串列週邊介面快(serial-peripheral interface、SPI)閃記憶體126、NAND快閃記憶體128、唯讀記憶體130以及一次可程式記憶體(OTP)132。其他非揮發性記憶體可包含非揮發性隨機存取記憶體(Non-volatile Ram、VRAM)、電可擦除可程式唯讀記憶體、嵌入式多媒體卡(embedded multimedia card、eMMC)的裝置、NOR快閃記憶體、單級單元(single-level cell、SLC)快閃記憶體、多級單元(multi-level cell、MLC)快閃記憶體、等等。在本實施例中,唯讀記憶體130及一次可程式記憶體132係以片上記憶體區域(on-chip memory areas)被實現,其係被製造成一晶片之各種金屬及半導體層。
當關機或暫停時,非揮發性記憶體120會持續地儲存計算裝置102之資料。計算裝置102的啟動碼係被存儲於一或多個非揮發性記憶體元件中,例如串列週邊介面快快閃記憶體126、NAND快閃記憶體128及唯讀記憶體130。舉例而言,最低級別或安全啟動碼係在製造包含唯讀記憶體130之晶片時被寫入或燒錄於唯讀記憶體130中。藉由此方式,唯讀記憶體130(也稱為開機片、開機唯讀記憶體、啟動唯讀記憶體、boot-ROM)在晶片被製造後不能被被修改。唯讀記憶體130之不可被修改的性質可保
證存儲於唯讀記憶體130中之啟動碼之安全性及真實性。計算裝置102之較高級層的啟動碼係以儲存於串列週邊介面快快閃記憶體126及NAND快閃記憶體128之開機程式(boot loaders)被實現。由於串列週邊介面快快閃記憶體12及NAND快閃記憶體128之內容可被修改或被用戶可讀取,存儲於這些裝置上的較高級層之是不安全的。
在一實施例中,啟動碼係寫入至一次可程式記憶體132中,其能夠被寫入一次。一次可程式記憶體132包含複數區塊之熔絲,其中每個熔絲代表一可設定之二進位之值(settable binary value)。具體而言,一次可程式記憶體132係以所有的熔絲處為一初始狀態被製造的,例如以全為1或0的區塊。在將資料寫入一次可程式記憶體132中時,相應的熔絲會從其初始狀態燒錄為一非初始狀態以代表一期望的二進位數值。因此,一旦一次可程式記憶體132的熔絲被燒錄為該非初始狀態時,該熔絲已再也不適用於在該一次可程式記憶體132中寫入其他資料。此外或附加地,一次可程式記憶體132,藉由燒錄未使用的熔絲區塊及相對於該未使用熔絲區塊之錯誤校正碼位元(error-correcting code bits),可被永久的鎖定/鎖住。
計算裝置102之操作系統、應用程式或用戶資料可以被揮發性記憶體118、非揮發性記憶體120或任何適合種類的電腦可讀存儲媒體116被儲存或自其被執行。此外或附加地,計算裝置120之操作系統及/或應用程式可以軟件(firmware)或其他處理器能執行指令、2進位(binaries)或程式碼被呈現。計算裝置102之操作系統及應用程式係被處理器核心114執行以提供計算裝置102之一使用者介面、各種功能及/或服務。
電腦可讀存儲媒體116還包含中斷管理器134,其在本實例中係以處理器可執行之指令體現,並且可被處理器核心114執行以實施各種功能。此外或附加地,中斷管理器134可,以部分或全部,經由軟件(firmware)或硬體(未示出)或任何合適的組合被實施。在某些情況下,中斷管理器134是在唯讀記憶體130製造過程中被硬編碼(hard-coded)於唯讀記憶體134之啟動碼或唯讀記憶體134所存在的一晶片。中斷管理器134可中斷從唯讀記憶體130中該啟動碼之執行,以使得啟動碼可從別的記憶體中被執行。中斷管理器134之各種使用及實施方式將被描述如下。
計算裝置102還可以包含輸入/輸出埠(Input/Output port)136、顯示器138、或網絡介面140。輸入/輸出埠136使計算裝置102可與其他設備或用戶有互動/交互。輸入/輸出埠136可以包含內建或外部的端口,例如USB端口、音頻端口、串行ATA(SATA)端口、基於PCI-Express之端口或卡插槽、安全數位輸入/輸出(SDIO)插槽及/或其它傳統端口。各種週邊設備可與輸入/輸出埠136耦合地被操作,例如人類輸入設備(human-input devices、HID)、外接電腦可讀儲存媒體或其他週邊設備。
顯示器138可呈現一使用者介面或呈現相對於計算裝置102之一操作系統或應用程式之影像。顯示器可包括觸摸輸入傳感器(未示出),例如觸摸面板或或觸摸覆蓋層。網絡介面140提供通訊連接功能到一或多個網絡及與其連接的其他設備。經由網路介面140傳輸的資料可被轉變為封包或幀,可依據計算裝置102在進行通信時所使用的通訊協議或標準來決定。網絡介面140可包括有線介面,例如用於本地網路、內聯網或互聯網之以太網或光纖介面。網絡介面140還可以包括無線介面,以促進在無線網絡上的通信,如無線局域網、手機網絡或無線個人區域網絡(例如,藍牙TM)。
圖2示出一計算裝置之一啟動/開機架構200之一實施例。在一開機程序中,啟動碼是於一計算裝置之硬體202及軟體204被執行。硬體202包括唯讀記憶體130,其中啟動碼(啟動唯讀記憶體206)之二進位值會再唯讀記憶體130製造中被燒錄至該唯讀記憶體130裡。啟動唯讀記憶體206會被執行以促進該計算裝置之一開機程序。由於啟動唯讀記憶體206係燒錄至唯讀記憶體130中且不能再修改,啟動唯讀記憶體206之執行可實現一可信任啟動程序,其中該啟動唯讀記憶體206可充當一“信任根據”(root of trust)。更具體而言,一旦啟動唯讀記憶體206係被寫入到唯讀記憶體130時,唯讀記憶體130的只能讀取之特性可確保啟動唯讀記憶體206的真實性及安全性。
硬件202還包括一次可程式記憶體132,其係被組態為具可儲存二進位值之多個熔絲之區塊。在本實施例中,一次可程式記憶體132儲存啟動唯讀記憶體修補碼208,其包括被計算裝置在開機序列期間執行的
二進位程式碼。在某些情況下,啟動唯讀記憶體修補碼208包括在執行的其他啟動碼,該其他啟動碼可替代部分啟動唯讀記憶體206,例如當部分該啟動唯讀記憶體206包含一誤差或錯誤時。在其他情況下,啟動唯讀記憶體修補碼208包括與啟動唯讀記憶體206一起執行之另外的啟動碼。在此情況下,該另外的啟動碼可於開機程序中實施該計算裝置的額外功能。被寫入一次可程式記憶體之程式碼的各種使用即實施方式將如下被描述。
在啟動程序/開機程序中,啟動唯讀記憶體206之執行會載裝一較高級層之開機管理程式(boot loader)於軟件204中,藉其裝載另一較高級層之開機管理程式,並且開機程序會繼續進行到一操作系統被載裝為止。在本實施例中,啟動唯讀記憶體206之執行會從SPI快閃記憶體126載裝第2級開機管理程式。在轉讓資源的控制權給第2級開機程式210前,啟動唯讀記憶體206會驗證開機管理程式之一密碼編譯簽章或一密碼編譯雜湊以確保該開機管理程式之真實性。藉由此方式,啟動唯讀記憶體206可以確保下個層級的開機管理程式會是安全的(例如,沒有被修改過)以及可從“信任的根據”到開機程序的一下個步驟產生一信任鏈(chain of trust)。
一旦對資源的控制權從啟動唯讀記憶體206轉讓給第2級開機管理程式210時,開機管理程式之執行會進一步的組態計算裝置之資源,並且會從NAND快閃記憶體128載裝第3級開機管理記憶體212。在此,為了繼續上述信任鏈,在第2級開機管理程式210轉讓資源的控制權給第3級開機管理程式212前,第2級開機管理程式210會驗證第3級開機管理程式212的真實性及安全性。如圖2所示,開機程序會繼續進行到第N級開機管理程式被載裝、驗證並執行,以順序繼續進行任何其間的開機管理程式。為了實現一個值得信賴的開機程序,每個級層之啟動碼或開機管理程式之真實性會被前次的開機管理程式驗證。
在總結開機程序時,第N級開機管理程式214之執行會從非揮發性記憶體120裝載操作系統216,並且會藉由確認操作系統214之一密碼編譯簽章或一密碼編譯雜湊以驗證操作系統214的真實性。藉由此方式,一可信任開機程序可被實現,以確保執行在計算裝置上的軟件是可信
且有授權的。可信開機程序之“信任根據”是啟動唯讀記憶體206,由於當啟動唯讀記憶體206在製造後無法被修改,可保證安全性。
唯讀記憶體之修補開機碼之技術
下面所討論之說明講解唯讀記憶體之啟動碼的修補技術。此些技術可以使用先前描述的環境或實體來實現,例如體現在計算裝置102中圖1之中斷管理器134。此些技術包括圖3、4及6所示之方法,其中每個被示為一組由一個或多個實體執行的操作程序。這些方法不一定係限於如圖所示之順序。此外,這些方法可彼此結合在一起(以全部或部分結合),可由同一實體、獨立的實體或者其任何組合來執行。在下面的討論中,將參照以圖1之操作環境100及圖2及5的各實體舉例解釋。所引用的不應被理解為只限於操作環境100中可實行,而應該是被視為作為示例性的各種實施例之一。
圖3描繪了用於中斷從唯讀記憶體執行之啟動碼之方法300,包括由圖1之中斷管理器134的操作。
在302中,開始從一唯讀記憶體(ROM)中執行一第一啟動碼。開始執行的第一啟動碼會開始計算裝置的開機程序。在某些情況下,第一啟動碼是一個安全啟動唯讀記憶體(secure boot-ROM),其係在製造該唯讀記憶體時被燒錄至硬體中。第一啟動碼之執行的初始化可以因應於所述計算裝置的電源通電。例如,當一智慧型手機或平板電腦通電後,一微處理器或硬件邏輯電路可以啟動執行啟動唯讀記憶體之二進位值(binary)。
在304,執行的第一啟動碼被中斷,以便從另一記憶體中執行第二啟動碼。第一啟動碼的執行會於一預定點被中斷並且有效於停止執行第一啟動碼。該預定點可以為該第一啟動碼之一位址或指令,其會觸發一中斷、斷線、跳過等等指令。當第一啟動碼不執行時,第二啟動碼可以從計算裝置的另一個記憶體中執行。在某些情況下,第二啟動碼會代替部分第一啟動碼執行,例如包含錯誤之部分。在其他情況下,第二啟動碼之執行可在開機程序中提供附加特徵或功能。
在306,在執行完第二啟動碼後第一啟動碼會從唯讀記憶體ROM中被恢復的執行。第一啟動碼會開始地繼續被執行並且繼續計算裝置
的開機程序。在某一些情況下,第一啟動碼的恢復執行會返回到預定點,例如一返回位址。第一啟動碼之繼續執行可能會載裝計算裝置之一高級層的開機管理程式或操作系統。在某些情況下,較高級層的開機管理程式或操作系統的真實性會在裝置資源之控制權從第一開機管理程式被轉讓前被驗證。這可有效地實現一可信任開機程序之方法,其中在每一較低層的開機管理程式在轉讓控制權前,會驗證接下來較高級層之開機程序的真實性。藉由從唯讀記憶體及一次可程式記憶體執行根級層(root)的啟動碼,最低級層的啟動碼的安全性可被保證(原因在於這些記憶不可修改的特性)。
圖4描繪了一種用於從一次性可程式記憶體中執行備用啟動碼(alternate code),包括由圖1之中斷管理器134執行的操作方法400。
在402,啟動執行的啟動代碼從只讀存儲器(ROM)。存儲在ROM中的啟動碼可包括被執行來啟動計算裝置的引導-ROM的二進制。在一些情況下,引導ROM被刻錄到光盤的物理導體或半導體層,並且不能修改。在這種情況下,引導ROM是一個安全的引導ROM,並且可以作為一個可信任引導過程“根信任的”功能。的啟動碼的執行是由通過引導的地址遞增,使執行的與每個地址相關聯的指令的程序計數器中高級。
作為一個例子,考慮一個用戶的電源上圖的智能電話104。1,這裡假設智能手機104由在其中的智能手機104的組件和資源被斷電一個“關”的狀態下引導到一個“on”狀態。啟動到“接通”狀態下,引導ROM206開始響應於電源接通智能手機104所示的用戶來執行。5,引導ROM206包括地址502和二進制504,它是從二進制轉換為機器代碼指令(指示506),當被執行時。智能手機104處理器核心114執行一行二進制504,或相應的指令506,如程序計數器508過程通過地址502。
在404中,從ROM中的啟動碼的執行被中斷。這可以是響應於一個程序計數器到達了引導碼的預定地址。預定地址可以被存儲在不同的存儲器中,如一次性可編程存儲器,以確保預定的地址不能被修改。在某些情況下,一個中斷服務例程(例如,基於硬件的中斷邏輯)被配置為當程序計數器達到在啟動碼的預定地址,觸發一個中斷。在這種情況下,燒成的中斷可能是有效的,以產生一個中斷處理程序,以執行其他代碼。
預定地址可以指示線的啟動碼,其包括一個錯誤或缺陷,則執行其中要被防止。交替地或附加地,該預定的地址可以是啟動碼的一部分,其包括一個錯誤或缺陷的第一地址。
在本實施例的上下文中,假定引導ROM部510包括誤差,響應於執行時,可以防止智能手機104通電。因此,處理512(0x5E0123FC)被選擇以引發一個中斷過程以防止“BNE”指令的執行。所選的射擊中斷地址被寫入到啟動唯讀記憶體修補碼208作為中斷地址514當程序計數器508到達中斷地址514,中斷管理器134觸發的中斷有效防止處理器核心114執行“BNE”指令。
在406,備用啟動碼從一次性可編程(OTP)存儲器執行。這個備用啟動碼被執行的,而不是存儲在ROM中的啟動碼的一部分。在某些情況下,備用啟動碼的執行是響應於執行從ROM中的啟動碼中燒製時產生中斷。在這種情況下,中斷可以通過配置為執行備用啟動碼中的中斷處理程序來清除。該中斷處理程序可以實現或更早執行的啟動碼中進行配置。
繼續正在進行的例子,中斷處理程序516通過清除中斷管理134發射中斷而啟動光盤206的執行被暫停,中斷處理程序516執行的啟動光盤片208,它存儲在OTP的二進制補丁518存儲器132在這裡,補丁二進制518被執行,而不是引導ROM部510,並且防止了在引導ROM部510中的錯誤代碼的執行。這樣一來,對引導ROM部分510的代碼可以修補,而無需更改或修改的ROM130另外的內容,因為補丁程序二進制518燒錄到OTP存儲器132的啟動代碼“信任的根”維持由於OTP存儲器的內容不能被修改一次燃燒。
在408,程序計數器被返回到一個地址中的啟動碼有效恢復執行從ROM中的啟動碼。在啟動碼的返回地址可被構造成使得啟動碼的一個或多個指令被跳過。任選地,方法400可以返回到操作404以中斷執行從ROM中的啟動碼。例如,在某些情況下,啟動碼的多個部分可能進行修補。因此,操作404通過方法400的408次迭代,可以執行任何適當的次數,以執行附加的二進制代碼補丁存儲在ROM中的啟動碼。
結論性的持續例如,假設地址520(0x5E01241C),它遵循
引導ROM部510中,燃燒成啟動唯讀記憶體修補碼208作為返回地址522此處,中斷處理程序516集程序計數器508,返回地址522執行補丁的二進制518之後,這是有效的,以使處理器核心114跳過引導ROM部510和恢復執行引導ROM206中的地址520之後執行的引導ROM206加載的智能電話104中的引導程序,引導光盤206驗證引導加載程序為真實,將控制權交給引導加載程序繼續引導智能手機104。
圖6描述了一種用於燃燒啟動碼到的一次性可編程存儲器的保險絲的方法600。
在602,啟動代碼燒錄到一次性可編程(OTP)存儲器的保險絲。啟動碼可以是補充存儲在一個只讀存儲器(ROM)等的啟動碼,如引導光盤二進制備用啟動碼或額外的啟動代碼。通過示例的方式,考慮一個可信任引導光盤二進制包含的代碼的多個部分,其中之一包含一個錯誤。修補程序二進制設計到位的引導ROM的錯誤部分的執行是燒入OTP存儲器的保險絲。因此,在執行的啟動序列期間燒入熔絲啟動碼可以是有效的修補在引導ROM中的錯誤(或者錯誤)。
在604,第一個地址中斷服務被燒到OTP的保險絲。當程序計數器遇到的第一個地址中的OTP存儲器該第一地址的夾雜物可有效地引起中斷的服務觸發一個中斷。交替地或附加地,所述第一地址是有效的引導序列期間,使執行的從OTP存儲器的啟動碼。在上面的例子的上下文中,位於前方的引導ROM中的錯誤的一個地址被燃燒到OTP存儲器的熔絲。通過選擇一個地址,它是前面的錯誤,在執行引導的ROM是由中斷服務中斷時所遇到的錯誤之前。此外,當一個程序計數器達到這個地址,中斷處理程序可以使得執行補丁二進制,而不是引導ROM的部分,其中包括錯誤。
在606,第二個地址中斷服務被燒到OTP的保險絲。在OTP存儲器這個第二地址的夾雜物可有效地引起中斷服務程序計數器設置為所述第二地址的中斷被服務之後。在一些情況下,所述第二地址位於內從ROM中執行,例如引導ROM的啟動碼。通過將程序計數器在引導ROM中的地址,在執行引導-ROM的可在該程序計數器設置的地址被收回。
在一些情況下,所述第二地址不立即跟隨從中斷開始的地址。在這種情況下,這可以有效地防止執行的啟動代碼的特定部分或部分的。持續不斷的例子,坐落在引導ROM中的錯誤後的地址燒入OTP存儲器的保險絲。因此,不執行啟動ROM位於燒入OTP存儲器的熔絲地址之間的二進制代碼。
任選608,OTP存儲器的額外保險絲燒毀,以確保先前燒入OTP存儲器的數據。附加保險絲是OTP存儲器的未使用的塊,並與未使用的塊相關聯的錯誤校正碼位的熔絲的熔絲。通過這樣做,OTP存儲器不能被修改,這是有效的,以確保在OTP存儲器中的內容,諸如啟動碼補丁。交替地或附加地,與OTP存儲器相關聯的庫存單位(SKU)號可以被更新或修改,以反映由燒入的OTP存儲器中的啟動碼提供的功能。例如,芯片,包括OTP存儲器存儲的引導光盤片的SKU號可以修改,以反映該芯片內部包含引導光盤補丁。
系統單晶片
圖7示出系統級芯片(SoC)的700,它可以實現對負載的啟動代碼的各個方面,從多個記憶。甲的SoC可以在任何合適的設備來實現,諸如視頻遊戲控制台,啟用IP的電視,智能電話,膝上型計算機,個人導航設備,接入點,無線路由器,蜂窩寬帶路由器,平板計算機,服務器,網絡-啟用打印機,機頂盒,打印機,掃描儀,照相機,圖像幀,家電,恆溫器,家庭自動化設備和/或任何其他類型的電子設備。
SoC700可以與需要的是提供一種設備的功能,例如電子電路,微處理器,存儲器,輸入輸出(I/O)邏輯控制,通信介面,其他硬件,固件和/或軟件集成任何上面所列的裝置。的SoC700還可以包括集成數據總線(未示出),連接所述的SoC的部件之間的數據通信的各種部件。一個電子或計算裝置,其包括的SoC700還可以具有不同的部件的多種組合來實現。在某些情況下,這些不同的部件可被配置成實現本文所描述的各種內部或外部的數據介面的概念。
在本實施例中,SOC700包括各種組件,例如輸入-輸出(I/O)邏輯控制702(例如,包括電子電路)和微處理器704的SoC700還包
括存儲器706,其可以是任何類型和/或RAM,SRAM,DRAM,閃存,低延遲非易失性存儲器,ROM,和/或其他合適的電子數據存儲器的組合。至少在一些方面中,系統芯片700的啟動碼被存儲在存儲器706被實現為ROM的一部分。
SoC700還包括一次性可編程存儲器132(OTP存儲器132),其中附加的或替代的啟動碼被存儲。此替代或額外的啟動碼可以如本文所述來實施補丁的ROM中的啟動碼中的一個或多個方面使用。通過實例,並在系統芯片700的範圍內的方式,能夠在需要的補丁地址陷阱是由系統級芯片實現的功能,基於132的OTP一次性可編程熔絲一旦其他的啟動代碼(例如:,補丁代碼)是響應於遇到所期望的補丁地址執行時,執行從ROM中的啟動碼被恢復,繼續引導其中的SoC700被實施的計算裝置。
可替換地或附加地,系統芯片700可包括數據介面(未示出),用於訪問附加的或外部的片外存儲器,諸如外部SRAM,DRAM或閃速存儲器。雖然未示出,外部存儲器(或存儲器706)可包括如參照圖1描述的多個非易失性存儲設備存儲多個各自的引導加載程序和/或啟動碼部分。1的SoC700還可以包括各種固件和/或軟件,諸如操作系統(次)708,它可以是由微處理器704的SoC由存儲器706維護和執行的計算機可執行指令700還可以包括其他各種通信介面和部件體現為硬件,固件,軟件,或任何合適的組合。
SoC700還包括中斷管理器134,其可以被體現為不同的或組合的組件,邏輯,程序或服務。這些不同的組件,功能和/或實體,以及它們相應的功能性的實例,參照環境100和各種結構的各個部件被描述為示出由圖2和5的中斷管理器134,獨立地或與其他實體(例如,一個中斷服務例程),可以被實現為通過存儲器706保持的計算機可執行指令和由微處理器704來執行各種實施例和/或特徵中執行組合本文中所描述。中斷管理器134也可以設置一體的SoC中的其他實體,例如硬件中斷邏輯與微處理器704或另一合適的軟件,固件或硬件組件中的SoC700可替換地或另外地相關聯,中斷管理器134和可以將其它成分它們是在與I/O邏輯控制702和/或其它信號處理和SoC700的控制電路連接實現被實現為硬件,固件,
固定邏輯電路,或其任何組合。
本發明已由上述相關實施例加以描述,然而上述實施例僅為實施本發明之範圍。必須指出的是,已揭露之實施例並未限制本發明之範圍。相反地,包含於申請專利範圍之精神及範圍之修改及均等設置包含於本發明之範圍內。
300‧‧‧方法
302、304、308‧‧‧步驟
Claims (20)
- 一種方法,包含:從一唯讀記憶體(ROM)開始執行一第一啟動碼以啟動一計算裝置之啟動程序;於該計算裝置之該啟動程序期間,中斷執行該第一啟動碼,以使得能從另一記憶體執行一第二啟動碼;以及在該第二啟動碼執行後,恢復該第一啟動碼以繼續該計算裝置之該啟動程序。
- 如請求項1所述之方法,其中該另一記憶體為燒錄該第二啟動碼之一次可程式唯讀記憶體。
- 如請求項1所述之方法,進一步包含:因應於該第一啟動碼之執行中斷,從該另一記憶體執行該第二啟動碼。
- 如請求項1所述之方法,其中中斷該第一啟動碼之執行係對應於,在執行該第一啟動碼時,一基於硬體中斷之發出。
- 如請求項4所述之方法,進一步包含:對應該基於硬體中斷之發出,清除發出之該基於硬體中斷,引起該第二啟動碼之執行,並且恢復至該第一啟動碼之執行的一預定點。
- 如請求項5所述之方法,其中該第一啟動碼之執行恢復至該預定點為不同於該第一啟動碼之執行被中斷之一點。
- 如請求項1所述之方法,其中在製造包含該唯讀記憶體之一裝置或晶片時,該第一啟動碼被寫入至該唯讀記憶體。
- 一種方法,包含:從一唯讀記憶體(ROM)開始執行一第一啟動碼,該第一啟動碼之執行係以一程式計數器推進;因應該程式計數器到達該第一啟動碼之一預定位址時,中斷該第一啟動碼之執行;以代替至少部分該第一啟動碼,從一一次可程式唯讀記憶體執行一第二啟動碼;以及因應於該第二啟動碼執行之完成,恢復該程式計數器至該第一啟動碼中 有效於恢復執行從該唯讀記憶體之該第一啟動碼的一位址。
- 如請求項8所述之方法,其中該第一啟動碼之執行被中斷之該預定位址或該程式計數器被恢復至的位址係儲存於該一次可程式唯讀記憶體。
- 如請求項8所述之方法,其中執行該第一啟動碼及該第二啟動碼係有效於載入一開機管理程式,該方法進一步包含:在轉讓控制權至該開機管理程式前,驗證該開機管理程式之一密碼編譯簽章或一密碼編譯雜湊以確保該開機管理程式之真實性。
- 如請求項8所述之方法,其中中斷執行該第一啟動碼包含發出一中斷,該方法進一步包含在執行該第二啟動碼前,清除發出之該中斷。
- 如請求項8所述之方法,其中該部分之該第一啟動碼包含一代碼錯誤,並且該程式計數器所恢復到的位址係位於該第一啟動碼之該代碼錯誤之後續位址,以使得該代碼錯誤不會被執行。
- 如請求項8所述之方法,其中該第一啟動碼是燒錄至該唯讀記憶體以及該第二啟動碼是燒錄至該一次可程式記憶體,以使得該第一啟動碼及該第二啟動碼至少實現部分一受信任之啟動程序。
- 一種系統單晶片,包含:一處理器被組態以經由一程式計數器執行程式代碼以啟動體現該系統單晶片之一裝置;一唯讀記憶體(ROM),用於為該裝置儲存一第一啟動碼;一一次可程式記憶體,用於儲存一第二啟動碼;以及一中斷管理器,係被組態以:因應於該程式計數器遇到該第一啟動碼之一預定位址,中斷從該唯讀記憶體之該第一啟動碼之執行;使該處理器從該一次可程式記憶體執行該第二啟動碼;以及在該第二啟動碼執行後,恢復該程式計數器至該第一啟動碼中有效於恢復執行從該唯讀記憶體之該第一啟動碼的一位址。
- 如請求項14所述之系統單晶片,其中該一次可程式記憶體包含一或多個區塊之熔絲來儲存資料,並且該第二啟動碼係燒錄至該一或多個區塊之熔絲。
- 如請求項15所述之系統單晶片,其中未使用之區塊的熔絲以及與其相關 之錯誤修正碼是被燒入以致使該一次可程式記憶體之內容無法再被修改。
- 如請求項14所述之系統單晶片,其中該系統單晶片包含一地址連接暫存器,該地址連接暫存器係組態以儲存執行完該第二啟動碼後該程式計數器會恢復到的位址。
- 如請求項17所述之系統單晶片,其中該中斷管理器進一步係被組態以設定該地址連接暫存器至該第一啟動碼被中斷之該預定位址的直接後續之位址。
- 如請求項17所述之系統單晶片,其中該中斷管理器進一步係被組態以設定該地址連接暫存器至非直接後續於該預定位址以有效使該處理器不執行一部分儲存於該唯讀記憶體之該第一啟動碼。
- 如請求項14所述之系統單晶片,其中體現該系統單晶片之該裝置包含為一計算裝置、電子裝置或通訊裝置其中之一。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361768097P | 2013-02-22 | 2013-02-22 | |
US61/768,097 | 2013-02-22 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201502990A true TW201502990A (zh) | 2015-01-16 |
TWI664574B TWI664574B (zh) | 2019-07-01 |
Family
ID=50236280
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103104936A TWI664574B (zh) | 2013-02-22 | 2014-02-14 | 唯讀記憶體之修補啟動碼的方法及系統單晶片 |
Country Status (7)
Country | Link |
---|---|
US (1) | US9880856B2 (zh) |
EP (1) | EP2959378A1 (zh) |
JP (1) | JP6318425B2 (zh) |
KR (1) | KR102026393B1 (zh) |
CN (1) | CN104981778A (zh) |
TW (1) | TWI664574B (zh) |
WO (1) | WO2014130338A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI738135B (zh) * | 2019-04-07 | 2021-09-01 | 新唐科技股份有限公司 | 監控系統開機之安全裝置及其方法 |
TWI784961B (zh) * | 2017-02-01 | 2022-12-01 | 南韓商三星電子股份有限公司 | 半導體系統以及操作半導體裝置的方法 |
TWI786793B (zh) * | 2021-05-24 | 2022-12-11 | 美商谷歌有限責任公司 | 用於修補啟動唯讀記憶體之方法、電腦可讀儲存媒體及電子設備 |
Families Citing this family (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2831787B1 (en) * | 2012-03-30 | 2020-07-08 | Irdeto B.V. | Method and system for preventing and detecting security threats |
EP2778910B1 (en) * | 2013-03-15 | 2021-02-24 | Maxim Integrated Products, Inc. | Systems and methods to extend rom functionality |
US20150286823A1 (en) * | 2014-04-07 | 2015-10-08 | Qualcomm Incorporated | System and method for boot sequence modification using chip-restricted instructions residing on an external memory device |
US9753874B2 (en) * | 2015-02-20 | 2017-09-05 | Qualcomm Incorporated | Multi-step programming of heat-sensitive non-volatile memory (NVM) in processor-based systems |
CN105468410B (zh) * | 2015-11-24 | 2019-02-12 | 小米科技有限责任公司 | 系统升级方法及装置 |
CN105335200B (zh) * | 2015-11-24 | 2019-05-07 | 小米科技有限责任公司 | 系统升级方法及装置 |
US11354117B2 (en) | 2016-07-13 | 2022-06-07 | Oracle International Corporation | Adaptable patching mechanism for mixed memory systems |
CN106445662B (zh) * | 2016-09-13 | 2019-09-10 | 广东欧珀移动通信有限公司 | 一种移植应用程序的方法及终端设备 |
US10382436B2 (en) * | 2016-11-22 | 2019-08-13 | Daniel Chien | Network security based on device identifiers and network addresses |
US10447512B2 (en) | 2017-08-07 | 2019-10-15 | Micron Technology, Inc. | Channel equalization for multi-level signaling |
US10277435B2 (en) | 2017-08-07 | 2019-04-30 | Micron Technology, Inc. | Method to vertically align multi-level cells |
US10530617B2 (en) | 2017-08-07 | 2020-01-07 | Micron Technology, Inc. | Programmable channel equalization for multi-level signaling |
US10853309B2 (en) | 2018-08-13 | 2020-12-01 | Micron Technology, Inc. | Fuseload architecture for system-on-chip reconfiguration and repurposing |
US10990384B2 (en) * | 2018-09-27 | 2021-04-27 | Intel Corporation | System, apparatus and method for dynamic update to code stored in a read-only memory (ROM) |
US11188622B2 (en) | 2018-09-28 | 2021-11-30 | Daniel Chien | Systems and methods for computer security |
KR102567097B1 (ko) | 2018-12-05 | 2023-08-14 | 삼성전자주식회사 | 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법 |
US10848489B2 (en) | 2018-12-14 | 2020-11-24 | Daniel Chien | Timestamp-based authentication with redirection |
US10826912B2 (en) | 2018-12-14 | 2020-11-03 | Daniel Chien | Timestamp-based authentication |
CN109739565B (zh) * | 2019-01-07 | 2022-03-29 | 深圳忆联信息系统有限公司 | 一种保证Bootrom正常运行的方法、装置、计算机设备及存储介质 |
WO2020223950A1 (zh) * | 2019-05-09 | 2020-11-12 | 深圳市德明利技术股份有限公司 | 一种防止 u 盘数据丢失和系统损坏的方法和装置以及设备 |
KR20210046418A (ko) | 2019-10-18 | 2021-04-28 | 삼성전자주식회사 | 보안 패치가 가능한 롬을 갖는 반도체 장치 및 그것의 패치 방법 |
US11677754B2 (en) | 2019-12-09 | 2023-06-13 | Daniel Chien | Access control systems and methods |
TWI707350B (zh) * | 2020-02-13 | 2020-10-11 | 大陸商北京集創北方科技股份有限公司 | 一次性編程唯讀記憶體之操作方法、處理器晶片及資訊處理裝置 |
US11037647B1 (en) * | 2020-02-19 | 2021-06-15 | Semiconductor Components Industries, Llc | Systems and methods for updating memory circuitry |
CN111694594B (zh) * | 2020-05-18 | 2023-03-03 | 成都盛芯微科技有限公司 | 补丁程序的控制方法和系统 |
US11438145B2 (en) | 2020-05-31 | 2022-09-06 | Daniel Chien | Shared key generation based on dual clocks |
US11509463B2 (en) | 2020-05-31 | 2022-11-22 | Daniel Chien | Timestamp-based shared key generation |
CN111752588A (zh) * | 2020-06-02 | 2020-10-09 | 深圳麦格米特电气股份有限公司 | 一种应用程序的更新方法和电子设备 |
CN112083961B (zh) * | 2020-08-05 | 2022-01-14 | 北京智芯微电子科技有限公司 | 嵌入式芯片的引导加载方法 |
EP3989478B1 (en) * | 2020-10-22 | 2023-10-18 | Moxa Inc. | Computing system and device for handling a chain of trust |
US11604655B2 (en) * | 2020-11-12 | 2023-03-14 | Ati Technologies Ulc | Sync point mechanism between master and slave nodes |
US11392450B1 (en) * | 2020-12-07 | 2022-07-19 | Amazon Technologies, Inc. | Data integrity check for one-time programmable memory |
CN113377565B (zh) * | 2021-06-10 | 2024-05-28 | 博流智能科技(南京)有限公司 | Bootrom修正系统及方法以及芯片 |
US11775284B2 (en) | 2022-01-27 | 2023-10-03 | Realtek Singapore Private Limited | Electronic device and code patching method |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4831517A (en) * | 1986-10-10 | 1989-05-16 | International Business Machines Corporation | Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system |
JPH04346127A (ja) * | 1991-05-23 | 1992-12-02 | Sony Corp | 電子装置 |
US5901225A (en) * | 1996-12-05 | 1999-05-04 | Advanced Micro Devices, Inc. | System and method for performing software patches in embedded systems |
JPH10232772A (ja) * | 1997-02-20 | 1998-09-02 | Nec Corp | プログラム変更装置 |
JP3727485B2 (ja) * | 1999-04-02 | 2005-12-14 | シャープ株式会社 | 不揮発性メモリ内蔵マイクロコンピュータ |
JP2001256044A (ja) * | 2000-03-14 | 2001-09-21 | Sony Corp | データ処理装置 |
JP3795744B2 (ja) * | 2000-11-21 | 2006-07-12 | 沖電気工業株式会社 | マイクロコントローラ |
US7310800B2 (en) * | 2001-02-28 | 2007-12-18 | Safenet, Inc. | Method and system for patching ROM code |
US6925521B2 (en) * | 2001-09-10 | 2005-08-02 | Texas Instruments Incorporated | Scheme for implementing breakpoints for on-chip ROM code patching |
JP2003196117A (ja) * | 2001-12-26 | 2003-07-11 | Toshiba Corp | マイクロプロセッサ |
US7039776B2 (en) * | 2003-04-17 | 2006-05-02 | Broadcom Corporation | Patch memory system for a ROM-based processor |
GB0424424D0 (en) * | 2004-11-04 | 2004-12-08 | St Microelectronics Belgium Nv | A code patching device |
US20060265692A1 (en) * | 2005-05-20 | 2006-11-23 | Mengjin Su | Method, apparatus, and computer program product for code patching |
US7523299B2 (en) | 2005-07-29 | 2009-04-21 | Broadcom Corporation | Method and system for modifying operation of ROM based boot code of a network adapter chip |
US7917762B2 (en) * | 2005-09-30 | 2011-03-29 | Phoenix Technologies Ltd. | Secure execution environment by preventing execution of unauthorized boot loaders |
US7739469B2 (en) * | 2005-11-08 | 2010-06-15 | Freescale Semiconductor, Inc. | Patching ROM code |
US7486534B2 (en) * | 2005-12-08 | 2009-02-03 | Macronix International Co., Ltd. | Diode-less array for one-time programmable memory |
US7644223B2 (en) * | 2006-10-30 | 2010-01-05 | Via Telecom Co., Ltd. | Circuit and method for patching for program ROM |
EP1983429A1 (fr) * | 2007-04-19 | 2008-10-22 | Proton World International N.V. | Implémentation de programmes correctifs par une unité de traitement |
US9348597B2 (en) * | 2008-06-30 | 2016-05-24 | Infineon Technologies Ag | Device and method for bypassing a first program code portion with a replacement program code portion |
US20100106953A1 (en) | 2008-10-23 | 2010-04-29 | Horizon Semiconductors Ltd. | Method for patching rom boot code |
WO2010073444A1 (ja) * | 2008-12-24 | 2010-07-01 | パナソニック株式会社 | バスコントローラ及び初期ブートプログラムのパッチ方法 |
US20100180104A1 (en) * | 2009-01-15 | 2010-07-15 | Via Technologies, Inc. | Apparatus and method for patching microcode in a microprocessor using private ram of the microprocessor |
CN102243587B (zh) * | 2010-05-14 | 2015-09-23 | 康佳集团股份有限公司 | 嵌入式系统中对rom程序的升级方法 |
CN101916348A (zh) * | 2010-08-16 | 2010-12-15 | 武汉天喻信息产业股份有限公司 | 一种用户操作系统的安全引导方法及引导系统 |
US8812832B2 (en) * | 2011-02-18 | 2014-08-19 | Avast Software A.S. | Method and system of using a non-native operating system for scanning and modifying system configuration data of a native operating system |
CN102163143B (zh) * | 2011-04-28 | 2013-05-01 | 北京北大众志微系统科技有限责任公司 | 一种实现值关联间接跳转预测的方法 |
-
2014
- 2014-02-13 EP EP14708381.0A patent/EP2959378A1/en not_active Ceased
- 2014-02-13 CN CN201480008317.8A patent/CN104981778A/zh active Pending
- 2014-02-13 JP JP2015558880A patent/JP6318425B2/ja active Active
- 2014-02-13 KR KR1020157025232A patent/KR102026393B1/ko active IP Right Grant
- 2014-02-13 WO PCT/US2014/016259 patent/WO2014130338A1/en active Application Filing
- 2014-02-13 US US14/180,030 patent/US9880856B2/en active Active
- 2014-02-14 TW TW103104936A patent/TWI664574B/zh not_active IP Right Cessation
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI784961B (zh) * | 2017-02-01 | 2022-12-01 | 南韓商三星電子股份有限公司 | 半導體系統以及操作半導體裝置的方法 |
TWI738135B (zh) * | 2019-04-07 | 2021-09-01 | 新唐科技股份有限公司 | 監控系統開機之安全裝置及其方法 |
TWI791244B (zh) * | 2019-04-07 | 2023-02-01 | 新唐科技股份有限公司 | 監控系統開機之安全裝置及其方法 |
TWI786793B (zh) * | 2021-05-24 | 2022-12-11 | 美商谷歌有限責任公司 | 用於修補啟動唯讀記憶體之方法、電腦可讀儲存媒體及電子設備 |
Also Published As
Publication number | Publication date |
---|---|
JP6318425B2 (ja) | 2018-05-09 |
KR20150120429A (ko) | 2015-10-27 |
JP2016507848A (ja) | 2016-03-10 |
EP2959378A1 (en) | 2015-12-30 |
US9880856B2 (en) | 2018-01-30 |
KR102026393B1 (ko) | 2019-11-04 |
TWI664574B (zh) | 2019-07-01 |
US20140244991A1 (en) | 2014-08-28 |
CN104981778A (zh) | 2015-10-14 |
WO2014130338A1 (en) | 2014-08-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI664574B (zh) | 唯讀記憶體之修補啟動碼的方法及系統單晶片 | |
US10324864B2 (en) | Storage system and method for performing and authenticating write-protection thereof | |
US10229271B2 (en) | System-on-chips and electronic devices including same | |
US11615035B2 (en) | Storage system and method for performing and authenticating write-protection thereof | |
US9880908B2 (en) | Recovering from compromised system boot code | |
US9015455B2 (en) | Processsor integral technologies for BIOS flash attack protection and notification | |
US9785596B2 (en) | Redundant system boot code in a secondary non-volatile memory | |
US9990255B2 (en) | Repairing compromised system data in a non-volatile memory | |
CN112789574B (zh) | 经由系统及电源管理微控制器的安全启动 | |
JP2017521768A (ja) | 耐性があるメモリストレージを伴うファームウェアインターフェイス |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |