TW201830242A - 半導體系統以及操作半導體裝置的方法 - Google Patents
半導體系統以及操作半導體裝置的方法 Download PDFInfo
- Publication number
- TW201830242A TW201830242A TW106124990A TW106124990A TW201830242A TW 201830242 A TW201830242 A TW 201830242A TW 106124990 A TW106124990 A TW 106124990A TW 106124990 A TW106124990 A TW 106124990A TW 201830242 A TW201830242 A TW 201830242A
- Authority
- TW
- Taiwan
- Prior art keywords
- patch code
- code
- patch
- semiconductor system
- memory
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1014—One time programmable [OTP] memory, e.g. PROM, WORM
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
- Semiconductor Integrated Circuits (AREA)
- Bipolar Transistors (AREA)
Abstract
一種半導體系統包括存儲補丁代碼的非揮發性記憶體,補丁代碼包括唯一識別符。內部唯讀記憶體存儲啟動代碼,啟動代碼包括用於執行補丁代碼的補丁代碼執行功能及用於規定將要執行的補丁代碼的存儲位置的連結暫存器位址。靜態隨機存取記憶體在存儲位置處存儲補丁代碼的複本,補丁代碼的複本包括唯一識別符。處理器從存儲位置執行補丁代碼的複本。處理器根據比較結果來執行存儲在靜態隨機存取記憶體中的存儲位置處的補丁代碼的複本。
Description
本發明是有關於一種半導體系統及操作與半導體系統相關聯的半導體裝置的方法。
在包括半導體系統的電子系統(例如,採用應用處理器(application processor,AP)的系統)的啟動過程期間可能會出現各種問題。如果確定存在與內部唯讀記憶體(internal read-only memory,IROM)的啟動代碼相關聯的問題(例如,與啟動過程相關聯的問題),則重新製造內部唯讀記憶體可為耗時且成本高昂的。舉例來說,用於對啟動代碼問題進行定址的代碼模擬及驗證過程以及基於經過修改的啟動代碼對內部唯讀記憶體進行的重新製造可消耗資源。另外,在對遮罩式唯讀記憶體(Read-Only Memory,ROM)進行修改以製造內部唯讀記憶體時會額外地消耗成本及資源。
本發明的各個方面提供一種能夠在改變內部唯讀記憶體的啟動代碼的運行的同時節約時間及成本的半導體系統。
在本發明的一些實施例中,提供一種用於操作半導體系統的方法,所述方法能夠在解決與內部唯讀記憶體的啟動代碼相關聯的問題的同時節約時間及成本。
然而,所屬領域中的普通技術人員將理解,本發明的各個方面並非僅限於本文所述的方面且存在許多其他實施例。通過參照說明書、權利要求書、及隨附圖式,對本發明實施例所屬領域中的普通技術人員來說本發明的各個方面將變得更顯而易見。
根據本發明的一方面,提供一種半導體系統,所述半導體系統包括:非揮發性記憶體,存儲補丁代碼,所述補丁代碼包括唯一識別符(unique identifier,ID);內部唯讀記憶體(IROM),存儲啟動代碼,所述啟動代碼包括用於執行所述補丁代碼的補丁代碼執行功能及用於規定將要執行的所述補丁代碼的存儲位置的連結暫存器(linked register,LR)位址;靜態隨機存取記憶體(static random memory,SRAM),在所述存儲位置處存儲所述補丁代碼的副本,所述補丁代碼的所述副本包括唯一識別符;以及處理器,從所述存儲位置執行所述補丁代碼的所述副本,其中當執行所述補丁代碼執行功能時,所述補丁代碼執行功能利用比較來將存儲在所述非揮發性記憶體中的所述補丁代碼的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址進行比較,且其中所述處理器根據所述比較結果來執行存儲在所述靜態隨機存取記憶體中的所述存儲位置處的所述補丁代碼的所述複本。
根據本發明的另一方面,提供一種半導體系統,所述半導體系統包括:非揮發性記憶體,存儲補丁代碼,所述補丁代碼包括唯一識別符ID;內部唯讀記憶體(IROM),存儲啟動代碼,所述啟動代碼包括用於執行所述補丁代碼的補丁代碼執行功能及用於規定將要執行所述補丁代碼的存儲位置的連結暫存器(LR)位址;以及處理器,其中當執行所述補丁代碼執行功能時,所述補丁代碼執行功能將存儲在所述非揮發性記憶體中的所述補丁代碼的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址進行比較,且其中所述處理器根據所述比較結果來執行所述補丁代碼。
根據本發明的再一方面,提供一種操作半導體系統的方法,所述方法包括:提供非揮發性記憶體,所述非揮發性記憶體存儲包括唯一識別符(ID)的補丁代碼;提供存儲啟動代碼的內部唯讀記憶體(IROM),所述啟動代碼包括用於執行所述補丁代碼的補丁代碼執行功能及用於規定將要執行的所述補丁代碼的存儲位置的連結暫存器(LR)位址;提供靜態隨機存取記憶體(SRAM),所述靜態隨機存取記憶體在所述存儲位置處存儲所述補丁代碼的複本,所述補丁代碼的所述複本包括所述唯一識別符;當執行所述補丁代碼執行功能時,將存儲在所述非揮發性記憶體中的所述補丁代碼的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址進行比較;以及根據所述比較結果來執行存儲在所述靜態隨機存取記憶體中的所述補丁代碼的所述複本。
根據本發明的再一方面,提供一種操作半導體系統的方法。所述方法包括提供其中存儲有補丁代碼的非揮發性記憶體,所述補丁代碼包括唯一識別符(ID)。內部唯讀記憶體存儲啟動代碼,所述啟動代碼包括用於執行所述補丁代碼的補丁代碼執行功能且進一步存儲用於規定將要執行的所述補丁代碼的存儲位置的連結暫存器位址。將所述補丁代碼的複本存儲在隨機存取記憶體中的存儲位置處,所述補丁代碼的所述複本包括所述唯一識別符。回應於對所述唯一識別符與所述連結暫存器位址進行的比較來執行存儲在所述存儲位置處的所述補丁代碼的所述複本。
圖1是說明根據本發明一些實施例的半導體系統的示意圖。
參照圖1,根據本發明一些實施例的半導體系統1包括處理器10、內部唯讀記憶體(IROM)20、靜態隨機存取記憶體(SRAM)30、及一次性可程式化記憶體(one-time programmable memory,OTP)40。處理器10、內部唯讀記憶體20、靜態隨機存取記憶體30及一次性可程式化記憶體40可沿著匯流排50彼此交換資料、位址及命令。
處理器10被配置成執行程式碼以控制半導體系統1。在本發明的一些實施例中,處理器10可包括中央處理器(central processing unit,CPU)、圖形處理器(graphic processing unit,GPU)、應用處理器(application processor,AP)、數位訊號處理器(digital signal processor,DSP)及所屬領域中的普通技術人員所知的其他類型的處理器。本發明的範圍並非僅限於此處作為示例性處理器類型所列出的這些處理器類型。
內部唯讀記憶體20包括存儲在內部唯讀記憶體20中的程式碼。在半導體系統1運行期間可利用程式碼。一般來說,存在於內部唯讀記憶體中的程式碼保持靜態且不會在運行期間改變。在本發明中,內部唯讀記憶體被用於操作性用途。舉例來說,如本文所公開,內部唯讀記憶體20可包括與半導體系統1的啟動步驟相關的程式碼(也被稱為啟動代碼)。內部唯讀記憶體20在已被製造成產品時通常無法改變其內容。
如圖中所示,靜態隨機存取記憶體30是在操作期間可存儲例如由處理器10執行的程式編碼等資料的位置的實例。靜態隨機存取記憶體的內容在操作期間可有所變化,例如作為由處理器10執行的讀取/寫入/命令指令的結果。儘管本實施例中示出靜態隨機存取記憶體30,然而本發明的範圍並非僅限於此,且舉例來說,可在靜態隨機存取記憶體30的位置使用動態隨機存取記憶體(dynamic random access memory,DRAM)或者允許對電子資料進行讀取及寫入的其他存儲裝置。
一次性可程式化記憶體40是僅可進行單次程式化的記憶體裝置,因此一旦對其寫入資料,存儲在其中的資料值便無法改變。在此實施例中,說明了一次性可程式化記憶體40裝置,然而本發明的範圍並非僅限於此。對所屬領域中的普通技術人員來說顯而易見的是各種類型的非揮發性記憶體裝置均可被用作一次性可程式化記憶體裝置40。
當在處理器10的啟動過程期間出現問題或錯誤時,這可能存在各種原因。然而,如果發現所述問題的原因在於存儲在內部唯讀記憶體20中的啟動代碼,則修改內部唯讀記憶體20的啟動代碼可為耗時且成本高昂的,這是因為無法在操作期間改變存儲在內部唯讀記憶體中的代碼/資料。為了修正或修改存儲在內部唯讀記憶體中的代碼/資料,有必要準備經過修改的啟動代碼、執行模擬以驗證經過修改的啟動代碼、製造用於反映經驗證的啟動代碼的經更新的遮罩唯讀記憶體(ROM)、且使用經更新的遮罩唯讀記憶體製造內部唯讀記憶體。此過程通常可需要製造商花費大量時間及成本。
本發明概念的實施例會解決這些限制。舉例來說,根據本文所述本發明的實施例,在克服此耗時且成本高昂的缺陷時,會執行補丁代碼。以這種方式執行補丁代碼會防止由於啟動代碼中的缺陷而出現的故障,而無須直接修改內部唯讀記憶體20。具體來說,根據本發明的實施例中的一些實施例,可執行補丁代碼,所述補丁代碼能夠執行用戶所期望的期望操作,同時維持啟動代碼複雜度方面的相對簡單性。
圖2是表示根據本發明一些實施例的半導體系統中所使用的啟動代碼的示意圖。
參照圖2,說明了傳統啟動代碼100及根據本發明概念而構成的本發明啟動代碼200。如本文所述,本發明啟動代碼200可用于根據本發明實施例的半導體系統1中。
當在本文中提及啟動代碼100、200中的邏輯運算及指令時,邏輯運算是通過大寫字母A、B、C、D、...等表現形式來表示,而指令是通過小寫字母a、b、c、d、...等表現形式來表示。
根據傳統啟動代碼100,依序執行邏輯運算A、邏輯運算B、指令a、指令b、邏輯運算C、邏輯運算D及指令c。此處,邏輯是指用於以一定的邏輯循序執行包括多個指令的一系列操作的代碼。
在啟動代碼200的情形中,如目前所公開,在啟動代碼中在某些代碼操作之間可插入一個或多個補丁代碼執行功能(補丁運行程式(patchrun))。舉例來說,補丁代碼執行功能(補丁運行程式)可被插入於以下操作之間:邏輯運算A、邏輯運算B、指令a、指令b、邏輯運算C、邏輯運算D、及指令c。在一些實施例中,補丁代碼執行功能(補丁運行程式)從啟動代碼200接收連結暫存器(linked register,LR)位址(即,用於在執行補丁代碼執行功能之後進行返回的返回位址(return address))。也就是說,連結暫存器位址使得可對啟動代碼200中的將要執行的補丁代碼的位置進行規定。在本發明的一些實施例中,連結暫存器(LR)可為當在執行程式期間調用某功能(子常式(sub-routine))時存儲執行程式的處理器中的返回位址的暫存器。
應注意,由補丁代碼執行功能(補丁運行程式)從啟動代碼200接收的連結暫存器位址可視需要以不同的方式設定。舉例來說,根據在內部唯讀記憶體20的啟動代碼上可出現的各種狀況,可在適當的位置處執行各種補丁代碼以克服可能會使啟動代碼200出現問題的各種狀況。
舉例來說,如果存在要在執行邏輯運算A之前提前進行處理的任務,則可通過在執行邏輯運算A之前調用補丁代碼執行功能(補丁運行程式)來執行所述任務。在這種情形中,由補丁代碼執行功能(補丁運行程式)接收的連結暫存器位址可包括邏輯運算A開始的位址。因此,在完成執行補丁代碼執行功能(補丁運行程式)之後,可執行邏輯運算A。在一些實施例中,可存在補丁運行程式在執行某些邏輯運算(A、B、C或D)之後出現的某種順序或次序。
作為另一實例,如果期望由另一個邏輯運算E來取代邏輯運算B(舉例來說,這是因為確定邏輯運算B含有嚴重錯誤),則可通過在執行邏輯運算B之前調用補丁代碼執行功能(補丁運行程式)來執行邏輯運算E而不執行邏輯運算B。在這種情形中,由補丁代碼執行功能(補丁運行程式)接收的連結暫存器位址可包括邏輯運算B之後的位址(例如,指令a的位址)。因此,在完成執行補丁代碼執行功能(補丁運行程式)之後可恰當地省略邏輯運算B的執行,且可調用邏輯運算E的執行來取代邏輯運算B。此實例說明其中可執行補丁運行程式以防止出現錯誤的邏輯運算(即,邏輯運算B)的運行的實施例。
在另一個示例性實施例中,可採用補丁運行程式操作以在邏輯運算C與邏輯運算D之間插入可選的延遲操作。具體來說,在類比電路的情形中,為穩定地確定電路節點處的值,可考慮因電路特性引起的時間差(例如,傳播延遲)、偶爾的因電路元件及設計特性引起的時間差、或者所屬領域中的普通技術人員所知的其他時間相關特性。為此,通過在執行邏輯運算D之前、在執行邏輯運算C之後調用補丁代碼執行功能(補丁運行程式),可能使得能夠在邏輯運算C與邏輯運算D之間執行延遲邏輯。在這種情形中,由補丁代碼執行功能(補丁運行程式)接收到的連結暫存器位址可包括邏輯運算D的位址。因此,在完成執行邏輯運算C之後,可使得能夠出現延遲,其中所述延遲的長度是由補丁代碼執行功能(補丁運行程式)界定。在延遲操作之後,可開始執行邏輯運算D。
在另一個示例性實施例中,可期望改變邏輯運算A及邏輯運算B的執行順序。為此,可通過在執行邏輯運算A之前調用具有包括邏輯運算B的位址的連結暫存器位址的補丁代碼執行功能(補丁運行程式)來首先執行邏輯運算B。在此實例中,接下來,在執行邏輯運算B之後,可通過調用具有包括邏輯運算A的位址的連結暫存器位址的補丁代碼執行功能(補丁運行程式)來執行邏輯運算A。在這種情形中,將插入適當的代碼以確保程式運行不會因執行補丁代碼而陷入閉環(infinite loop)。
因此,補丁代碼執行功能(補丁運行程式)使得能夠執行可執行使用者所需要的任意數目的操作的補丁代碼,同時將啟動代碼的複雜度保持為相對簡單。這使得能夠實現符合半導體系統的各種需要的多種變化,且使得能夠實現在初始製造之後對系統進行後期修改的一定的靈活性。
圖3是表示根據本發明一些實施例的半導體系統的操作的實例的示意圖。
參照圖3,一次性可程式化記憶體40可被配置成存儲補丁代碼41。換句話說,補丁代碼41可被程式化到一次性可程式化記憶體40中,一次性可程式化記憶體40依次與內部唯讀記憶體20、處理器10、及靜態隨機存取記憶體30共用匯流排50。在一些實施例中,出於將要進行判斷的目的,補丁代碼41可包括唯一身份值(identification value,ID)。在本發明的一些實施例中,唯一身份值可包括與本文所述連結暫存器位址相同的位址值。
在本發明的一些實施例中,一次性可程式化記憶體40可原樣地存儲補丁代碼。具體來說,一次性可程式化記憶體40可如在傳統情形的故障中一樣,包含可根據在啟動操作期間可能出現的故障類型來選擇性地執行的補丁代碼操作。然而,在一些實施例中,一次性可程式化記憶體40可包括補丁代碼本身,所述補丁代碼包括使用者所需的任意指令,而不論在啟動期間可能出現何種故障類型。舉例來說,如本文所述,可對獨立操作進行程式設計及調用來實現具體邏輯運算(A、B、C、D)的取代、邏輯運算的重新排序(A<>B)、延遲操作等。這種補丁代碼操作使得一次性可程式化記憶體即使在系統1壽命的後期才會被調用但在被程式設計之後便保持有用,這是因為稍後可對補丁運行程式進行存取。在一些情形中,當出現故障時,如果所述故障對應於特定類型的故障,則可能克服所述故障。在一些情形中,可能使補丁代碼操作在啟動操作期間為有用的以在稍後提供解決方案來處理在各種不同的處理點處的任意類型的故障。
靜態隨機存取記憶體30可被配置成例如在特定位址處存儲補丁代碼的複本31。在一些實施例中,由於靜態隨機存取記憶體30存儲在一次性可程式化記憶體40中存儲的補丁代碼的複本31,因此存儲在靜態隨機存取記憶體30中的補丁代碼的複本31也包括具有與一次性可程式化記憶體40的唯一身份值相同的值的唯一身份值。在一些示例性實施例中,可由資料值(例如,資料值‘0’)來表示唯一身份值。
存儲在一次性可程式化記憶體40中的補丁代碼41可在半導體系統1的啟動階段處被複製到靜態隨機存取記憶體30。這種情況是其中通過靜態隨機存取記憶體30執行補丁代碼的情形。
作為另外一種選擇,如果存儲在一次性可程式化記憶體40中的補丁代碼41的唯一身份值是‘0’,則補丁代碼41不被複製到靜態隨機存取記憶體30,且‘0’可被記錄在靜態隨機存取記憶體30的唯一身份區域中。舉例來說,如果啟動操作按照計畫繼續進行而不需要補丁代碼,則可記錄‘0’。在這種情形中,確定在執行存在於內部唯讀記憶體20中的啟動代碼期間不執行補丁代碼。另一方面,當存在補丁代碼的另一唯一身份值值時(例如,資料值‘1’),則使得可執行補丁代碼。
在本實施例中,為使說明簡單,將‘0’記錄為唯一身份值以便不執行補丁代碼,但本發明的範圍並非僅限於此。對所屬領域中的普通技術人員顯而易見的是,與補丁代碼的不執行(non-performance)相關聯的值可為除了‘0’之外的值,例如,為值‘1’或者除了‘1’或‘0’之外的某個值。
在本發明的一些實施例中,靜態隨機存取記憶體30可被配置成或以其他方式被程式設計為額外地存儲返回指令(RET指令)作為在執行補丁代碼的複本31中所含有的指令之後將要執行的下一指令。
圖4是表示根據本發明實施例的半導體系統的操作的實例的示意圖。
參照圖4,在其中靜態隨機存取記憶體30中所含有的補丁代碼的複本31的唯一身份值33是‘0’的情形中,處理器10(參見圖1)以不執行補丁代碼來作為回應。在這種情形中,啟動過程被視為正在正確地運行。
在本實施例中,為使說明簡單,將為‘0’的唯一身份值確定為與補丁代碼的不執行(non-execution)相關聯,但本發明的範圍並非僅限於此。對所屬領域中的普通技術人員顯而易見的是,不執行值可變為除了‘0’之外的值。
在本實施例中,當使用補丁代碼執行功能時,如果確定存儲在靜態隨機存取記憶體30中的補丁代碼的複本31的唯一身份值33與由啟動代碼200提供的連結暫存器位址60相同,則處理器10執行補丁代碼的邏輯部分35。這種邏輯運算適用於修正在啟動過程中出現的缺陷。
此處,當根據由半導體系統採用的架構調用補丁代碼執行功能時,在系統中可自動地確認連結暫存器位址60。
另一方面,當執行補丁代碼執行功能時,如果確定存儲在靜態隨機存取記憶體30中的補丁代碼的複本31的唯一身份值33與從啟動代碼200提供的連結暫存器位址60不同,則處理器10可被配置成不執行補丁代碼的邏輯部分35。
在此實施例中,如本文中所說明,存儲在靜態隨機存取記憶體30中的補丁代碼的複本31是回應於存儲在靜態隨機存取記憶體30中的唯一身份值33與補丁代碼執行功能的連結暫存器位址60進行的比較來執行。顯而易見的是,如所屬領域中的普通技術人員所理解般本發明的範圍並非僅限於此。
在本發明的一些實施例中,存儲在一次性可程式化記憶體40中的補丁代碼41可回應於存儲在一次性可程式化記憶體40中的唯一身份值與補丁代碼執行功能的連結暫存器位址60進行的比較來執行。
在這種情形中,如果一次性可程式化記憶體40的補丁代碼41的唯一身份值是‘0’,則處理器10以不執行補丁代碼來作為回應。
在本實施例中,為使說明簡單,將‘0’確定為與補丁代碼的不執行相關聯的唯一身份值,然而,本發明的範圍並非僅限於此。對所屬領域中的普通技術人員顯而易見的是,與補丁代碼的不執行相關聯的值可被確定為除了‘0’之外的值,例如,‘1’或者某個其他值。
當執行補丁代碼執行功能時,如果存儲在一次性可程式化記憶體40中的補丁代碼41的唯一身份值與從啟動代碼200提供的連結暫存器位址60相同,則處理器10以執行補丁代碼41的邏輯部分作為回應。
另一方面,當執行補丁代碼執行功能時,在其中存儲在一次性可程式化記憶體40中的補丁代碼41的唯一身份值與從啟動代碼200提供的連結暫存器位址60不同的情形中,處理器10可以不執行補丁代碼41的邏輯部分作為回應。
再次參照圖2,將闡述其中將要改變或更改邏輯運算A及邏輯運算B的執行順序以滿足啟動過程的需要的情形。
補丁代碼41的唯一身份值被存儲在一次性可程式化記憶體40中。存儲在一次性可程式化記憶體40中的補丁代碼41被複製到靜態隨機存取記憶體30且接著在執行在執行邏輯運算A之前調用的補丁代碼執行功能(補丁運行程式)時被用於與從啟動代碼200提供的連結暫存器位址進行比較。如果在執行邏輯運算A之前調用的補丁代碼執行功能(補丁運行程式)已被執行且靜態隨機存取記憶體30的唯一身份值33與連結暫存器位址相同,則執行存儲在靜態隨機存取記憶體30中的補丁代碼的複本31(具體來說,邏輯部分35)。
存儲在靜態隨機存取記憶體30中的補丁代碼的複本31會改變唯一身份值33以使得補丁代碼能夠由在執行邏輯運算B之後調用的補丁代碼執行功能(補丁運行程式)來執行,且複本31會進行跳轉,以使得邏輯運算B可在執行邏輯運算A之前立即執行。
在執行邏輯運算B之後,當由在執行邏輯運算B之後再次調用的補丁代碼執行功能(補丁運行程式)從啟動代碼200接收的連結暫存器位址與靜態隨機存取記憶體30的唯一身份值33相同以使得補丁代碼的複本31(具體來說,邏輯部分35)被執行時,可從補丁代碼調用邏輯運算A並執行邏輯運算A。接著,可根據啟動代碼的運行來執行指令a。
圖5是說明根據本發明一些實施例的操作半導體裝置的方法的流程圖。
參照圖5,根據本發明一些實施例的操作半導體裝置的方法可包括以下步驟。儘管出於說明目的將圖中所示步驟繪示為具體順序,然而各步驟的排序並非僅限於此而可採用其他順序。
在此實施例中,步驟S501至S511說明初始化步驟。
在此實施例中,大寫字母S表示‘步驟’這一用語,舉例來說,S501表示步驟501。另外,字母Y及N分別表示對判斷步驟的應答‘是’及‘否’。
在步驟S501中,判斷是否使用補丁代碼執行功能以執行及採用在半導體系統中。如果補丁代碼執行功能在半導體系統1中被禁用(在S501中為Y),則過程返回(S511)。
另一方面,在其中在半導體系統1中補丁代碼執行功能被啟用的情形中(S501,N),過程前進至步驟S503。在步驟503處,判斷一次性可程式化記憶體40的唯一身份值(unique ID,UID)是否是‘0’。
在其中唯一身份值UID對應於‘0’的情形中(在S503中為Y),靜態隨機存取記憶體30的唯一身份值在步驟S505中也被記錄為‘0’且接著所述過程返回(S511)。
另一方面,如果唯一身份值不對應於‘0’(在S503中為N),則在步驟S507中將補丁代碼從一次性可程式化記憶體40複製到靜態隨機存取記憶體30。
在本發明各實施例中的一些實施例中,為說明簡單,將‘0’記錄為唯一身份值以對應於補丁代碼的不執行。然而,如本文所述,本發明的範圍並非僅限於此。對所屬領域中的普通技術人員顯而易見的是,與不執行相關聯的值可被改變為除了‘0’之外的值,例如,‘1’或者某個其他合適的值。
之後,在步驟509(S509)中,在補丁代碼的複本31之後額外地存儲返回指令(RET指令)。在這之後,所述過程返回(S511)。
綜上所述,首先判斷補丁代碼是被啟用還是被禁用。如果補丁代碼被禁用,則所述程式返回。如果補丁代碼被啟用,則判斷唯一身份值是否等於預定值(例如,‘0’)。如果等於‘0’,則將靜態隨機存取記憶體的唯一身份值寫入到‘0’且所述程式返回。
如果一次性可程式化記憶體的唯一身份值不等於預定值‘0’,則將補丁代碼從一次性可程式化記憶體複製到靜態隨機存取記憶體。在一些實施例中,可將返回指令RET添加到補丁代碼的末尾。
圖6是說明根據本發明一些實施例的操作半導體裝置的方法的流程圖。
參照圖6,根據本發明實施例的操作半導體裝置的方法可包括以下步驟。
在此實施例中,步驟S601至S609表示初始化步驟之後的步驟。
在此實施例中,大寫字母S表示‘步驟’這一用語,例如S601表示步驟601。另外,字母Y及N分別表示對判斷步驟的應答‘是’及‘否’。
在步驟S601處,判斷是否在半導體系統中使用補丁代碼執行功能以執行所述補丁代碼。如果設定在半導體系統1中禁用補丁代碼執行功能(在S601中為Y),則所述過程返回(S609)。
作為另外一種選擇,如果設定在半導體系統1中啟用補丁代碼執行功能(在S601中為N),則在步驟S603中判斷靜態隨機存取記憶體30的唯一身份值是否是‘0’或者判斷唯一身份值是否被設定為除了‘0’之外的一些值。如果唯一身份值對應於‘0’(在S603中為Y),則所述過程返回(S609)。
在本實施例中,為使說明簡單,將‘0’記錄為唯一身份值以使補丁代碼不被執行;然而本發明的範圍並非僅限於此。對所屬領域中的普通技術人員顯而易見的是,對應於不執行的值可被改變為除了‘0’之外的預定值(例如,‘1’)或者某個其他值。
另一方面,如果靜態隨機存取記憶體的唯一身份值不對應於‘0’(在S603中為N),則在步驟S605處判斷靜態隨機存取記憶體30的唯一身份值是否與連結暫存器位址60相同。
如果靜態隨機存取記憶體30的唯一身份值與連結暫存器位址60不同(在S605中為N),則所述過程返回(S607)。
另一方面,如果靜態隨機存取記憶體30的唯一身份值與連結暫存器位址60相同(在S605中為Y),則執行存儲在靜態隨機存取記憶體30中的補丁代碼(S609)。
另外,根據本發明實施例的操作半導體裝置的方法可包括提供非揮發性記憶體,所述非揮發性記憶體存儲包括唯一身份值的補丁代碼,以及提供存儲啟動代碼的內部唯讀記憶體。在此實施例中,啟動代碼可包括用於執行補丁代碼的補丁代碼執行功能及用於規定將要執行及運行的補丁代碼的位置的連結暫存器位址。
此實施例可進一步包括提供靜態隨機存取記憶體,所述靜態隨機存取記憶體存儲所述補丁代碼的複本。此處,補丁代碼的複本可包括唯一身份值。
所述方法可進一步包括當執行補丁代碼執行功能時,將存儲在非揮發性記憶體中的補丁代碼的唯一身份值與從啟動代碼提供的連結暫存器位址進行比較,以及根據比較結果來執行存儲在靜態隨機存取記憶體中的補丁代碼。
綜上所述,首先判斷針對補丁代碼的使用及運行而調用的功能是否是被禁用的功能。如果是被禁用的,則程式返回。如果不是被禁用的,則判斷靜態隨機存取記憶體的唯一身份值是否是預定值(例如‘0’)。如果唯一身份值是‘0’,則程式返回。如果不是被禁用的,則判斷靜態隨機存取記憶體的唯一身份值是否與連結暫存器位址相同。如果相同,則操作跳轉到靜態隨機存取記憶體的補丁代碼。如果不相同,則程式運行返回。
根據本發明的各種實施例,執行補丁代碼來防止因啟動代碼中的缺陷而導致的故障而不直接修改內部唯讀記憶體20。具體來說,根據本發明的實施例,可執行補丁代碼,所述補丁代碼能夠執行使用者所期望的任意數目的操作,同時維持啟動代碼複雜度方面的相對簡單性。因此,可在解決存在於內部唯讀記憶體的啟動代碼內的問題的同時節約時間及成本。
儘管已參照本發明的示例性實施例具體示出並闡述了本發明,然而所屬技術領域中的普通技術人員應理解,在不背離由以上權利要求所界定的本發明的精神及範圍的條件下,可對本發明各實施例作出形式及細節上的各種變化。各示例性實施例應被視為僅具有說明性意義而非用於限制目的。
1‧‧‧半導體系統
10‧‧‧處理器
20‧‧‧內部唯讀記憶體
30‧‧‧靜態隨機存取記憶體
31‧‧‧複本
33‧‧‧唯一身份值
35‧‧‧邏輯部分
40‧‧‧一次性可程式化記憶體
41‧‧‧補丁代碼
50‧‧‧匯流排
60‧‧‧連結暫存器位址
100‧‧‧傳統啟動代碼/啟動代碼
200‧‧‧本發明啟動代碼/啟動代碼
S501、S503、S505、S507、S509、S511、S601、S603、S605、S607、S609‧‧‧步驟
通過參照附圖詳細闡述本發明的示例性實施例,本發明的這些及其它方面及特徵將變得顯而易見,在附圖中:
圖1是說明根據本發明一些實施例的半導體系統的示意圖。 圖2是表示根據本發明一些實施例的半導體系統中所使用的啟動代碼的示意圖。 圖3是表示根據本發明一些實施例的半導體系統的操作的實例的示意圖。 圖4是表示根據本發明一些實施例的半導體系統的操作的實例的示意圖。 圖5是說明根據本發明一些實施例的操作半導體裝置的方法的流程圖。 圖6是說明根據本發明一些實施例的操作半導體裝置的方法的流程圖。
Claims (20)
- 一種半導體系統,包括: 非揮發性記憶體,存儲補丁代碼,所述補丁代碼包括唯一識別符; 內部唯讀記憶體,存儲啟動代碼,所述啟動代碼包括用於執行所述補丁代碼的補丁代碼執行功能及用於規定將要執行的所述補丁代碼的存儲位置的連結暫存器位址; 靜態隨機存取記憶體,在所述存儲位置處存儲所述補丁代碼的複本,所述補丁代碼的所述複本包括所述唯一識別符;以及 處理器,從所述存儲位置執行所述補丁代碼的所述複本, 其中當執行所述補丁代碼執行功能時,所述補丁代碼執行功能將存儲在所述非揮發性記憶體中的所述補丁代碼的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址進行比較,且 其中所述處理器根據所述比較結果來執行存儲在所述靜態隨機存取記憶體中的所述存儲位置處的所述補丁代碼的所述複本。
- 如申請專利範圍第1項所述的半導體系統,其中所述非揮發性記憶體原樣地存儲所述補丁代碼。
- 如申請專利範圍第1項所述的半導體系統,其中所述非揮發性記憶體包括一次性可程式化記憶體。
- 如申請專利範圍第3項所述的半導體系統,其中所述補丁代碼被程式設計到包括所述一次性可程式化記憶體的所述非揮發性記憶體中。
- 如申請專利範圍第1項所述的半導體系統,其中在所述半導體系統的啟動操作期間,存儲在所述非揮發性記憶體中的所述補丁代碼被複製到所述靜態隨機存取記憶體中。
- 如申請專利範圍第1項所述的半導體系統,其中如果存儲在所述靜態隨機存取記憶體中的所述補丁代碼的所述複本的所述唯一識別符是預定值,則所述處理器不執行所述補丁代碼。
- 如申請專利範圍第1項所述的半導體系統,其中如果存儲在所述靜態隨機存取記憶體中的所述補丁代碼的所述複本的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址相同,則所述處理器執行所述補丁代碼。
- 如申請專利範圍第1項所述的半導體系統,其中如果存儲在所述靜態隨機存取記憶體中的所述補丁代碼的所述複本的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址不同,則所述處理器不執行所述補丁代碼。
- 一種半導體系統,包括: 非揮發性記憶體,存儲補丁代碼,所述補丁代碼包括唯一識別符; 內部唯讀記憶體,存儲啟動代碼,所述啟動代碼包括用於執行所述補丁代碼的補丁代碼執行功能及用於規定將要執行的所述補丁代碼的存儲位置的連結暫存器位址;以及 處理器, 其中當執行所述補丁代碼執行功能時,所述補丁代碼執行功能將存儲在所述非揮發性記憶體中的所述補丁代碼的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址進行比較,且 其中所述處理器根據所述比較結果來執行所述補丁代碼。
- 如申請專利範圍第9項所述的半導體系統,其中所述非揮發性記憶體原樣地存儲所述補丁代碼。
- 如申請專利範圍第9項所述的半導體系統,其中所述非揮發性記憶體包括一次性可程式化記憶體。
- 如申請專利範圍第11項所述的半導體系統,其中所述補丁代碼被程式設計到包括所述一次性可程式化記憶體的所述非揮發性記憶體中。
- 如申請專利範圍第9項所述的半導體系統,其中如果所述補丁代碼的所述唯一識別符是‘0’,則所述處理器不執行所述補丁代碼。
- 如申請專利範圍第9項所述的半導體系統,其中如果所述補丁代碼的所述唯一識別符與所述補丁代碼執行功能的所述連結暫存器位址相同,則所述處理器執行所述補丁代碼。
- 如申請專利範圍第9項所述的半導體系統,其中如果所述補丁代碼的所述唯一識別符與所述補丁代碼執行功能的所述連結暫存器位址不同,則所述處理器不執行所述補丁代碼。
- 一種操作半導體系統的方法,包括: 提供非揮發性記憶體,所述非揮發性記憶體存儲包括唯一識別符的補丁代碼; 提供存儲啟動代碼的內部唯讀記憶體,所述啟動代碼包括用於執行所述補丁代碼的補丁代碼執行功能及用於規定將要執行的所述補丁代碼的存儲位置的連結暫存器位址; 提供靜態隨機存取記憶體,所述靜態隨機存取記憶體在所述存儲位置處存儲所述補丁代碼的複本,所述補丁代碼的所述複本包括所述唯一識別符; 當執行所述補丁代碼執行功能時,將存儲在所述非揮發性記憶體中的所述補丁代碼的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址進行比較;以及 根據所述比較結果來執行存儲在所述靜態隨機存取記憶體中的所述補丁代碼的所述複本。
- 如申請專利範圍第16項所述的方法,其中在所述半導體系統的啟動操作期間,存儲在所述非揮發性記憶體中的所述補丁代碼被複製到所述靜態隨機存取記憶體。
- 如申請專利範圍第16項所述的方法,其中如果存儲在所述靜態隨機存取記憶體中的所述補丁代碼的所述複本的所述唯一識別符是預定值,則所述處理器不執行所述補丁代碼。
- 如申請專利範圍第16項所述的方法,其中如果存儲在所述靜態隨機存取記憶體中的所述補丁代碼的所述複本的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址相同,則所述處理器執行所述補丁代碼。
- 如申請專利範圍第16項所述的方法,其中如果存儲在所述靜態隨機存取記憶體中的所述補丁代碼的所述複本的所述唯一識別符與從所述啟動代碼提供的所述連結暫存器位址不同,則所述處理器不執行所述補丁代碼。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2017-0014216 | 2017-02-01 | ||
??10-2017-0014216 | 2017-02-01 | ||
KR1020170014216A KR102629408B1 (ko) | 2017-02-01 | 2017-02-01 | 반도체 시스템 및 반도체 장치의 동작 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201830242A true TW201830242A (zh) | 2018-08-16 |
TWI784961B TWI784961B (zh) | 2022-12-01 |
Family
ID=62979795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106124990A TWI784961B (zh) | 2017-02-01 | 2017-07-26 | 半導體系統以及操作半導體裝置的方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10459715B2 (zh) |
KR (1) | KR102629408B1 (zh) |
CN (1) | CN108376085B (zh) |
TW (1) | TWI784961B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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) |
KR102567097B1 (ko) | 2018-12-05 | 2023-08-14 | 삼성전자주식회사 | 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법 |
US11335405B2 (en) | 2018-12-17 | 2022-05-17 | Samsung Electronics Co., Ltd. | Nonvolatile memory device and operation method thereof |
KR20200075184A (ko) | 2018-12-17 | 2020-06-26 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 동작 방법 |
CN110187920B (zh) * | 2019-04-01 | 2022-06-10 | 深圳市德明利技术股份有限公司 | 基于otp的主控芯片的boot代码扩展方法 |
CN110308920B (zh) * | 2019-05-31 | 2023-05-12 | 北京控制工程研究所 | 一种不影响正常运行的在轨修改星上产品软件的方法 |
CN112329373A (zh) * | 2021-01-04 | 2021-02-05 | 南京芯视界微电子科技有限公司 | 用于飞行时间测距芯片的数据处理系统及其方法 |
CN115543487A (zh) * | 2022-11-25 | 2022-12-30 | 北京得瑞领新科技有限公司 | 基于otp的只读存储器中启动代码扩展方法及芯片 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6260157B1 (en) * | 1999-02-16 | 2001-07-10 | Kurt Schurecht | Patching of a read only memory |
US6891765B2 (en) * | 2003-08-05 | 2005-05-10 | Via Telecom, Inc. | Circuit and/or method for implementing a patch mechanism for embedded program ROM |
US20060265692A1 (en) * | 2005-05-20 | 2006-11-23 | Mengjin Su | Method, apparatus, and computer program product for code patching |
US20070083713A1 (en) * | 2005-10-11 | 2007-04-12 | Antonio Torrini | System on a chip integrated circuit, processing system and methods for use therewith |
US20070113064A1 (en) * | 2005-11-17 | 2007-05-17 | Longyin Wei | Method and system for secure code patching |
US9348730B2 (en) | 2007-01-31 | 2016-05-24 | Standard Microsystems Corporation | Firmware ROM patch method |
US20090031103A1 (en) | 2007-07-24 | 2009-01-29 | Via Technologies | Mechanism for implementing a microcode patch during fabrication |
US20090271593A1 (en) * | 2008-04-29 | 2009-10-29 | Mediatek Inc. | Patching device for patching rom code, method for patching rom code, and electronic device utilizing the same |
WO2009156790A1 (en) | 2008-06-23 | 2009-12-30 | Freescale Semiconductor, Inc. | Patching of a read-only memory |
US20100106953A1 (en) | 2008-10-23 | 2010-04-29 | Horizon Semiconductors Ltd. | Method for patching rom boot code |
CN102265263A (zh) * | 2008-12-24 | 2011-11-30 | 松下电器产业株式会社 | 总线控制器及初始引导程序的修补方法 |
KR101542878B1 (ko) * | 2009-02-13 | 2015-08-07 | 삼성전자주식회사 | 버퍼램을 포함하는 불휘발성 메모리 장치 및 그것의 부트 코드 관리 방법 |
EP2660713B1 (en) * | 2012-05-03 | 2015-03-04 | Nxp B.V. | Patch mechanism in embedded controller for memory access |
CN104981778A (zh) * | 2013-02-22 | 2015-10-14 | 马维尔国际贸易有限公司 | 修补只读存储器的引导代码 |
EP2778905A1 (en) * | 2013-03-15 | 2014-09-17 | Dialog Semiconductor B.V. | Integrated circuit with a patching function |
KR102108838B1 (ko) | 2013-06-18 | 2020-05-11 | 삼성전자주식회사 | 임베디드 메모리 장치 및 그것을 포함한 메모리 컨트롤러 |
US9471785B2 (en) * | 2013-08-30 | 2016-10-18 | Freescale Semiconductor, Inc. | Systems and methods for secure boot ROM patch |
US20150242213A1 (en) | 2014-02-23 | 2015-08-27 | Qualcomm Incorporated | System and method for modification of coded instructions in read-only memory using one-time programmable memory |
US9547489B2 (en) | 2014-03-31 | 2017-01-17 | Qualcomm Incorporated | System and method for modifying a sequence of instructions in a read-only memory of a computing device |
US9395975B2 (en) | 2014-07-21 | 2016-07-19 | Sandisk Technologies Llc | Method and system for generating a ROM patch |
-
2017
- 2017-02-01 KR KR1020170014216A patent/KR102629408B1/ko active Active
- 2017-07-25 US US15/658,976 patent/US10459715B2/en active Active
- 2017-07-26 TW TW106124990A patent/TWI784961B/zh active
- 2017-10-18 CN CN201710971575.1A patent/CN108376085B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108376085A (zh) | 2018-08-07 |
KR102629408B1 (ko) | 2024-01-24 |
KR20180089631A (ko) | 2018-08-09 |
US20180217834A1 (en) | 2018-08-02 |
US10459715B2 (en) | 2019-10-29 |
CN108376085B (zh) | 2023-10-20 |
TWI784961B (zh) | 2022-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201830242A (zh) | 半導體系統以及操作半導體裝置的方法 | |
JP4534498B2 (ja) | 半導体装置およびその起動処理方法 | |
WO2012149759A1 (zh) | 实现不同处理器兼容的方法及装置 | |
KR100717110B1 (ko) | 롬 데이터 패치 회로, 이를 포함하는 임베디드 시스템 및롬 데이터 패치 방법 | |
JP2875842B2 (ja) | プログラマブルコントローラ | |
KR100894251B1 (ko) | 다중화된 에스피디 롬을 가지는 메모리 모듈 시스템 및 그부팅 방법 | |
JP2005071303A (ja) | プログラム起動装置 | |
US7096351B2 (en) | Single-chip microcomputer and boot region switching method thereof | |
TWI685793B (zh) | 同步方法 | |
US8719646B2 (en) | Non-volatile memory (NVM) reset sequence with built-in read check | |
US7340561B2 (en) | Computer memory initialization | |
JP6708596B2 (ja) | 電子制御装置及び制御プログラム検証方法 | |
US20100146332A1 (en) | Data correction circuit and semiconductor integrated circuit | |
CN114647461A (zh) | 一种嵌入式系统的启动方法和系统 | |
US20010052114A1 (en) | Data processing apparatus | |
CN114281632A (zh) | 用于在SoC验证中初始化Romcode的方法及装置 | |
JP5322855B2 (ja) | 修正記憶部を有するプログラム更新システム及びその方法 | |
JP2018180608A (ja) | プログラム実行装置およびプログラム実行方法 | |
CN117894362A (zh) | 一次性可编程存储器修改方法、装置和电子设备 | |
TWI775578B (zh) | 嵌入式電子裝置、啟動方法及內儲程式之嵌入式電子裝置可讀取記錄媒體 | |
JP2011150383A (ja) | ファームウェア書き込み方法 | |
US20060136711A1 (en) | Disk device using disk to rewrite firmware and firmware determination method | |
KR20100127492A (ko) | 제어 프로그램 수정 방법을 수행하는 프로그램이 기록된 비휘발성 입력 및 수정 가능 기록 매체 | |
US20150355914A1 (en) | Information processing apparatus and program | |
JP3828040B2 (ja) | マイクロコンピュータの制御方法 |