TW202122996A - 電子處理裝置及記憶體控制方法 - Google Patents
電子處理裝置及記憶體控制方法 Download PDFInfo
- Publication number
- TW202122996A TW202122996A TW108144856A TW108144856A TW202122996A TW 202122996 A TW202122996 A TW 202122996A TW 108144856 A TW108144856 A TW 108144856A TW 108144856 A TW108144856 A TW 108144856A TW 202122996 A TW202122996 A TW 202122996A
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- memory block
- program
- code
- application
- Prior art date
Links
Images
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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1416—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
- G06F12/1425—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
- G06F12/1441—Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
-
- 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/0604—Improving or facilitating administration, e.g. storage management
-
- 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
-
- 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
- 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/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Human Computer Interaction (AREA)
- Storage Device Security (AREA)
- Stored Programmes (AREA)
Abstract
一種電子處理裝置,其具有記憶體以及微控制器。記憶體包含兩個記憶體區塊。微控制器執行第一記憶體區塊所儲存之第一程式碼以將更新程式碼寫入第二記憶體區塊,於更新程式碼寫入第二記憶體區塊完成時,設定將重新執行程式的起始位置從第一記憶體區塊重新映射到第二記憶體區塊,以及觸發重新執行程式以執行第二記憶體區塊所儲存之更新程式碼。
Description
本申請係有關於記憶體管理技術,特別係有關於一種適用於電子處理裝置的記憶體控制方法。
相較於個人電腦內部所配置的通用處理器,微控制器(Micro Control Unit,MCU)具有自供應(不用外接硬體)、節約成本、以及體積小等優點,因此更適用於消費性電子、工業控制、汽車電子、以及通信系統等領域。
隨著技術發展,現今微控制器的效能越來越強大,其應用層面也開始擴展到物聯網,透過遍及的網路,各種電子產品甚至可在遠端控制下進行軟/韌體的更新或系統升級,大幅減少了時間及人力成本。舉例來說,傳統的路燈若需要更新應用程式(如:軟/韌體)時,一般係由人力手動拆卸來進行更新,相較之下,經由物聯網則可採用空中下載(Over The Air,OTA)的方式來進行更新。
然而,以現行做法來說,經由物聯網進行更新的方法大致上都包括:需要將更新的應用程式進行兩次燒寫、需要根據應用程式的簽章來判斷新舊版本、需要載入程式(loader code)來執行新舊版本的應用程式、以及需要開機程式(boot code)來選擇執行載入程式或應用程式等步驟。
第1圖係顯示現行做法在進行應用程式更新的記憶體操作過程。如第1圖所示,記憶體儲存空間包括:在線升級(In System Programing,ISP)唯讀記憶體(ISP Loader ROM,LDROM)、以及應用程式唯讀記憶體(Application Program Read Only Memory,APROM),其中在線升級唯讀記憶體儲存了載入程式(loader code),應用程式唯讀記憶體包括第一記憶庫(bank)(在圖中標示為BANK0)以及第二記憶庫(在圖中標示為BANK1)。
首先,在開機後,開機程式(boot code)會執行在線升級唯讀記憶體所儲存的載入程式,由載入程式去執行第一記憶庫所儲存的應用程式APP1。
接著,當應用程式APP1接收到更新請求時,會將更新應用程式APP2寫入第二記憶庫,待更新應用程式APP2完全寫入第二記憶庫時,則觸發重新執行程式(或可稱為重開機(reboot)),重新由開機程式執行載入程式,載入程式會判斷是否有新版的應用程式簽章存在,若有,則將更新應用程式APP2覆寫到第一記憶庫。
最後,當覆寫完成時,再次重新執行程式,此時開機程式執行載入程式後會接著去執行第一記憶庫剛被覆寫完成的更新應用程式APP2。
由此可知,現行做法在進行應用程式更新時包含了兩次寫入應用程式的作業,且需要載入程式來管理應用程式的版本簽章。因此,其複雜性將拉長開機時間也拖慢了更新的速度,且應用程式更新期間所涉及的第二次寫入需要先將更新應用程式讀出,將會有資料外洩或被竄改的風險。
為了解決上述問題,本申請提出一種電子處理裝置及記憶體控制方法,在應用程式更新時不需要管理應用程式的版本簽章,因此不需要載入程式,也不需要二次寫入,將可改善整體流程的複雜性並提升開機速度,同時,也能降低資料外洩或被竄改的風險。
本申請之一實施例提供了一種電子處理裝置,包括一記憶體以及一微控制器。上述記憶體包括一第一記憶體區塊、以及一第二記憶體區塊。上述微控制器執行上述第一記憶體區塊所儲存之一第一程式碼以將一更新程式碼寫入上述第二記憶體區塊,於上述更新程式碼寫入上述第二記憶體區塊完成時,設定將重新執行程式的起始位置從上述第一記憶體區塊重新映射到上述第二記憶體區塊,以及觸發重新執行程式以執行上述第二記憶體區塊所儲存之上述更新程式碼。
較佳的情況是,上述記憶體還包括一儲存空間用以儲存一配置,上述微控制器係根據上述配置來決定重新執行程式的起始位置。
上述微控制器係於上述配置為一第一數值時,執行上述第一記憶體區塊所儲存之上述第一程式碼,以及上述重新映射之步驟還包括:將上述配置設定為一第二數值以觸發重新執行程式時執行上述第二記憶體區塊所儲存之上述更新程式碼。
上述微控制器還將上述第一記憶體區塊之全部或部份設置為僅限執行記憶體(Execute Only Memory,XOM),並且將上述第二記憶體區塊的相應位置也設置為僅限執行記憶體,以保護上述第一程式碼以及上述更新程式碼中的關鍵程式碼。
上述記憶體為一應用程式唯讀記憶體、或一序列周邊介面(Serial Peripheral Interface,SPI)快閃記憶體(flash memory)。
本申請之另一實施例提供了一種記憶體控制方法,適用於包括一微控制器以及一記憶體之一電子處理裝置。上述記憶體控制方法包括以下步驟:執行上述記憶體之一第一記憶體區塊所儲存之一第一程式碼以將一更新程式碼寫入上述記憶體之一第二記憶體區塊;於上述更新程式碼寫入上述第二記憶體區塊完成時,設定將重新執行程式的起始位置從上述第一記憶體區塊重新映射到上述第二記憶體區塊;以及觸發重新執行程式以執行上述第二記憶體區塊所儲存之上述更新程式碼。
較佳的情況是,上述記憶體還包括一儲存空間用以儲存一配置,上述記憶體控制方法還包括:根據上述配置來決定重新執行程式的起始位置。
上述第一程式碼係執行於上述配置為一第一數值時,上述重新映射之步驟還包括:將上述配置設定為一第二數值,以觸發重新執行程式時執行上述第二記憶體區塊所儲存之上述更新程式碼。
上述記憶體控制方法還包括:將上述第一記憶體區塊之全部或部份設置為僅限執行記憶體;以及將上述第二記憶體區塊的相應位置也設置為僅限執行記憶體,以保護上述第一程式碼以及上述更新程式碼中的關鍵程式碼。
上述記憶體為一應用程式唯讀記憶體、或一序列周邊介面快閃記憶體。
關於本申請其他附加的特徵與優點,此領域之熟習技術人士,在不脫離本申請之精神和範圍內,當可根據本案實施方法中所揭露之電子處理裝置以及記憶體控制方法做些許的更動與潤飾而得到。
本章節所敘述的是實施本申請之較佳方式,目的在於說明本申請之精神而非用以限定本申請之保護範圍,當可理解的是,使用於本說明書中的「包含」、「包括」等詞,係用以表示存在特定的技術特徵、數值、方法步驟、作業處理、元件以及/或組件,但並不排除可加上更多的技術特徵、數值、方法步驟、作業處理、元件、組件,或以上的任意組合。
第2圖係根據本申請一實施例所述之電子處理裝置之示意圖。
如第2圖所示,電子處理裝置100包括:微控制器110、記憶體120、以及輸入輸出(Input/Output,I/O)介面130,其中微控制器110係分別耦接至記憶體120及輸入輸出介面130,用以對記憶體120進行操作管理(如:執行及更新應用程式碼)、以及透過輸入輸出介面130接收及輸出數位信號(如:接收要更新的應用程式碼)。
在一實施例,電子處理裝置100可以是指單晶片微控制器(Single Chip Micro-controller),也就是將微控制器、記憶體、以及輸入輸出介面整合在同一個晶片中。
在其他實施例,微控制器110也可以是微處理器(Micro Processing Unit,MPU)、或數位信號處理器(Digital Signal Processor,DSP)等其他具有資料運算功能的微型處理單元。
進一步說明,記憶體120可劃分為不同的儲存區域、或可由不同的記憶體單元所組成,其中每個記憶體單元可以是相同或不同的記憶體類型,例如:快閃記憶體(flash memory)。此外,每個記憶體單元可屬於同一個記憶體晶片(如:同位屬於一個微處理器快閃記憶體)、或屬於不同的記憶體晶片(如:分別屬於微處理器快閃記憶體、以及序列周邊介面(Serial Peripheral Interface,SPI)快閃記憶體)。
如第2圖所示,記憶體120包括:記憶體單元121、以及記憶體單元122。
記憶體單元121係用以儲存各種設定,其至少包括:一第一配置,用以決定重新執行程式的起始位置。舉例來說,當第一配置為第一數值(如:0)時,重新執行程式的起始位置為記憶體單元122的第一記憶體區塊(在圖中標示為BANK0);當第一配置為第二數值(如:1)時,重新執行程式的起始位置為記憶體單元122的第二記憶體區塊(在圖中標示為BANK1)。
在一實施例,記憶體單元121可以是任一儲存空間,例如:一字組(word)或一暫存器(register)。
記憶體單元122至少包括兩個記憶體區塊,每個記憶體區塊可儲存一應用程式之程式碼。
在一實施例,記憶體單元122可以是應用程式唯讀記憶體,而每個記憶體區塊為一記憶庫(bank),且微控制器110可選擇性地將記憶體區塊中之全部或部份設置為僅限執行記憶體(Execute Only Memory,XOM),使得該區域內的資料無法被讀取,避免資料外洩或被竄改。
在另一實施例,記憶體單元122可以是序列周邊介面(Serial Peripheral Interface,SPI)快閃記憶體。
輸入輸出介面130可包括一或多個通訊埠、按鈕、以及/或喇叭等,用以接收及輸出數位信號(如:接收要更新的應用程式碼)。
當可理解的是,第2圖所示之元件僅用以提供一說明之範例,並非用以限制本申請之保護範圍。舉例來說,電子處理裝置100還可包括其他元件,例如:更多硬體資源。同樣的,記憶體120還可包括其他記憶體單元,例如:在線升級唯讀記憶體、以及/或資料儲存記憶體(data flash),其中在線升級唯讀記憶體係用以儲存一些特殊的程式碼(如:載入程式、以及/或韌體升級所需的在線升級碼),資料儲存記憶體則可用於儲存用戶資料。
第3圖係根據本申請一實施例所述進行應用程式更新的記憶體操作過程。
如第3圖所示,本申請的記憶體控制方法在進行應用程式更新時僅需要用到包括兩個記憶庫的應用程式唯讀記憶體(如:記憶體單元122),而無需在線升級唯讀記憶體及其所儲存的載入程式。
在此實施例,所述之記憶體單元為應用程式唯讀記憶體,而每個記憶體區塊為一記憶庫。
首先,在開機後,微控制器110可根據第一配置的數值(如:初始化為0)而去執行第一記憶庫所儲存的應用程式APP1,並且由應用程式APP1去處理應用程式的更新請求,將更新應用程式APP2寫入第二記憶庫。
接著,當更新應用程式APP2寫入完成時,則設定將重新執行程式的起始位置從上述第一記憶庫重新映射到上述第二記憶庫。
明確來說,微控制器110可將第一配置的數值設為不同數值(如:重設為1),從而實現上述記憶庫之重新映射。
當可理解的是,在第3圖中,記憶庫之重新映射完成後雖然顯示為第二記憶庫在第一記憶庫之上,但其並非用以表示第一及第二記憶庫進行了實質的儲存空間調換,而是透過第一配置的數值重設讓微處理器所認為的重新執行程式的起始位置有所改變。
之後,微控制器110可再觸發重新執行程式,並根據第一配置的數值而去執行第二記憶庫所儲存的更新應用程式APP2。
第4圖係根據本申請另一實施例所述進行應用程式更新的記憶體操作過程。
相較於第3圖之實施例,本實施例一樣僅需要用到包括兩個記憶庫的應用程式唯讀記憶體,然而,本實施例還可將記憶庫中之全部或部份設置為僅限執行記憶體,使得該區域內的資料無法被讀取,進一步達到避免資料外洩或被竄改之效果。
首先,在開機後,微控制器110可根據第一配置的數值(如:初始化為0)而去執行第一記憶庫所儲存的應用程式APP1,並且由應用程式APP1去處理應用程式的更新請求,將更新應用程式APP2寫入第二記憶庫。
特別是,在處理應用程式的更新請求之前或在處理的過程中,微控制器110可將第一記憶庫的部份區域(在圖中標示為XOM0、XOM1)設為僅限執行記憶體,該區域可以是儲存演算法、以及/或關鍵程式碼等機密數據的部分。或者,微控制器110亦可選擇將第一記憶庫全部都設為僅限執行記憶體。
相應地,當第一記憶庫的全部或部份被設置為僅限執行記憶體時,微控制器110也會將第二記憶庫的相應部分(在圖中標示為new XOM0、new XOM1)設置為僅限執行記憶體,使得更新應用程式的機密部分也會獲得保護。
接著,當更新應用程式APP2寫入完成時,則設定將重新執行程式的起始位置從上述第一記憶庫重新映射到上述第二記憶庫。
明確來說,微控制器110可將第一配置的數值設為不同數值(如:重設為1),從而實現上述記憶庫之重新映射。
當可理解的是,在第4圖中,記憶庫之重新映射完成後雖然顯示為第二記憶庫在第一記憶庫之上,但其並非用以表示第一及第二記憶庫進行了實質的儲存空間調換,而是透過第一配置的數值重設讓微處理器所認為的重新執行程式的起始位置有所改變。
之後,微控制器110可再觸發重新執行程式,並根據第一配置的數值而去執行第二記憶庫所儲存的更新應用程式APP2。
第5圖係根據本申請又一實施例所述進行應用程式更新的記憶體操作過程。
在此實施例,所述之記憶體單元為序列周邊介面快閃記憶體,此情形特別適用於當應用程式碼的尺寸較大而無法儲存在微處理器內建的快閃記憶體時。此時所述的每個記憶體區塊可以是指序列周邊介面快閃記憶體中的任意區塊,尺寸可依應用程式碼的尺寸而定。舉例來說,可將記憶體位址0x8000000~0x8FFFFFF設定為第一記憶體區塊、將記憶體位址0x9000000~0x9FFFFFF設定為第二記憶體區塊,但不限制於此。
首先,在開機後,微控制器110可根據第一配置的數值(如:初始化為0)而去執行第一記憶體區塊所儲存的應用程式APP1,並且由應用程式APP1去處理應用程式的更新請求,將更新應用程式APP2寫入第二記憶體區塊。
接著,當更新應用程式APP2寫入完成時,則設定將重新執行程式的起始位置從上述第一記憶體區塊重新映射到上述第二記憶體區塊。
明確來說,微控制器110可將第一配置的數值設為不同數值(如:重設為1),從而實現上述記憶體區塊之重新映射。
當可理解的是,在第5圖中,記憶體區塊之重新映射完成後雖然顯示為第二記憶體區塊在第一記憶體區塊之上,但其並非用以表示第一及第二記憶體區塊進行了實質的儲存空間調換,而是透過第一配置的數值重設讓微處理器所認為的重新執行程式的起始位置有所改變。
之後,微控制器110可再觸發重新執行程式,並根據第一配置的數值而去執行第二記憶體區塊所儲存的更新應用程式APP2。
第6圖係根據本申請一實施例所述之記憶體控制方法之流程圖。
在此實施例,記憶體控制方法係適用於包括微控制器(如:微控制器110)以及記憶體(如:記憶體120)之電子處理裝置(如:電子處理裝置100),並且由微控制器執行以操作記憶體。
首先,執行記憶體之第一記憶體區塊所儲存之第一程式碼(如:APP1)以將更新程式碼(如:APP2)寫入記憶體之第二記憶體區塊(步驟S610)。
接著,於更新程式碼寫入第二記憶體區塊完成時,設定將重新執行程式的起始位置從第一記憶體區塊重新映射到第二記憶體區塊(步驟S620)。
明確來說,上述記憶體區塊的重新映射可以透過設定一特定配置值來實現,而每次重新執行程式即根據該特定配置值來決定起始位置是第一記憶體區塊、或第二記憶體區塊。
在一實施例,上述特定配置值可以是一字組或一暫存器,當被設置為0時,表示重新執行程式的起始位置是第一記憶體區塊;當被設置為1時,表示重新執行程式的起始位置是第二記憶體區塊。
之後,觸發重新執行程式以執行第二記憶體區塊所儲存之更新程式碼(步驟S630),流程結束。
在一實施例,上述記憶體可以是應用程式唯讀記憶體(如第3~4圖之範例)、或序列周邊介面快閃記憶體(如第5圖之範例)。然而,第3~5圖所示的記憶體類型僅用以提供說明之範例,並非用以限制本申請之保護範圍,其他類型的記憶體亦可適用於本申請之記憶體控制方法。
根據上述實施例,當可理解的是,本申請的記憶體控制方法僅需一次寫入,且不需要載入程式來管理應用程式的版本簽章。因此,有效地改善了整體流程的複雜性並提升了開機速度。此外,由於不需要二次寫入,所以不會將更新應用程式讀出,此將可有效能避免資料外洩或被竄改的風險。
本申請雖以各種實施例揭露如上,然而其僅為範例參考而非用以限定本申請的範圍,任何熟習此項技藝者,在不脫離本申請之精神和範圍內,當可做些許的更動與潤飾。因此上述實施例並非用以限定本申請之範圍,本申請之保護範圍當視後附之申請專利範圍所界定者為準。
於申請專利範圍中所使用的「第一」、「第二」等詞係用來修飾權利要求中的元件,並非用來表示之間具有優先權順序,先行關係,或者是一個元件先於另一個元件,或者是執行方法步驟時的時間先後順序,僅用來區別具有相同名字的元件。
100:電子處理裝置
110:微控制器
120:記憶體
121、122:記憶體單元
130:輸入輸出介面
APP1、APP2:應用程式
BANK0、BANK1:記憶庫
XOM0、XOM1、new XOM0、new XOM1:僅限執行記憶體
S610、S620、S630:步驟
第1圖係顯示現行做法在進行應用程式更新的記憶體操作過程。
第2圖係根據本申請一實施例所述之電子處理裝置之示意圖。
第3圖係根據本申請一實施例所述進行應用程式更新的記憶體操作過程。
第4圖係根據本申請另一實施例所述進行應用程式更新的記憶體操作過程。
第5圖係根據本申請又一實施例所述進行應用程式更新的記憶體操作過程。
第6圖係根據本申請一實施例所述之記憶體控制方法之流程圖。
100:電子處理裝置
110:微控制器
120:記憶體
121、122:記憶體單元
130:輸入輸出介面
Claims (10)
- 一種電子處理裝置,包括: 一記憶體,包括一第一記憶體區塊、以及一第二記憶體區塊;以及 一微控制器(Micro Control Unit,MCU),執行上述第一記憶體區塊所儲存之一第一程式碼以將一更新程式碼寫入上述第二記憶體區塊,於上述更新程式碼寫入上述第二記憶體區塊完成時,設定將重新執行程式的起始位置從上述第一記憶體區塊重新映射到上述第二記憶體區塊,以及觸發重新執行程式以執行上述第二記憶體區塊所儲存之上述更新程式碼。
- 如申請專利範圍第1項所述之電子處理裝置,其中上述記憶體還包括一儲存空間用以儲存一配置(configuration),上述微控制器係根據上述配置來決定重新執行程式的起始位置。
- 如申請專利範圍第2項所述之電子處理裝置,其中上述微控制器係於上述配置為一第一數值時,執行上述第一記憶體區塊所儲存之上述第一程式碼,以及上述重新映射之步驟還包括:將上述配置設定為一第二數值以觸發重新執行程式時執行上述第二記憶體區塊所儲存之上述更新程式碼。
- 如申請專利範圍第1項所述之電子處理裝置,其中上述微控制器還將上述第一記憶體區塊之全部或部份設置為僅限執行記憶體(Execute Only Memory,XOM),並且將上述第二記憶體區塊的相應位置也設置為僅限執行記憶體,以保護上述第一程式碼以及上述更新程式碼中的關鍵程式碼。
- 如申請專利範圍第1項所述之電子處理裝置,其中上述記憶體為一應用程式唯讀記憶體(Application Program Read Only Memory,APROM)、或一序列周邊介面(Serial Peripheral Interface,SPI)快閃記憶體(flash memory)。
- 一種記憶體控制方法,適用於包括一微控制器以及一記憶體之一電子處理裝置,上述記憶體控制方法包括: 執行上述記憶體之一第一記憶體區塊所儲存之一第一程式碼以將一更新程式碼寫入上述記憶體之一第二記憶體區塊; 於上述更新程式碼寫入上述第二記憶體區塊完成時,設定將重新執行程式的起始位置從上述第一記憶體區塊重新映射到上述第二記憶體區塊;以及 觸發重新執行程式以執行上述第二記憶體區塊所儲存之上述更新程式碼。
- 如申請專利範圍第6項所述之記憶體控制方法,其中上述記憶體還包括一儲存空間用以儲存一配置,上述記憶體控制方法還包括: 根據上述配置來決定重新執行程式的起始位置。
- 如申請專利範圍第7項所述之記憶體控制方法,其中上述第一程式碼係執行於上述配置為一第一數值時,上述重新映射之步驟還包括:將上述配置設定為一第二數值,以觸發重新執行程式時執行上述第二記憶體區塊所儲存之上述更新程式碼。
- 如申請專利範圍第6項所述之記憶體控制方法,還包括: 將上述第一記憶體區塊之全部或部份設置為僅限執行記憶體;以及 將上述第二記憶體區塊的相應位置也設置為僅限執行記憶體,以保護上述第一程式碼以及上述更新程式碼中的關鍵程式碼。
- 如申請專利範圍第6項所述之記憶體控制方法,其中上述記憶體為一應用程式唯讀記憶體、或一序列周邊介面快閃記憶體。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108144856A TWI726524B (zh) | 2019-12-09 | 2019-12-09 | 電子處理裝置及記憶體控制方法 |
CN201911378130.8A CN113032008B (zh) | 2019-12-09 | 2019-12-27 | 电子处理装置及存储器控制方法 |
US17/114,932 US11307795B2 (en) | 2019-12-09 | 2020-12-08 | Electronic processing devices and memory control methods thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW108144856A TWI726524B (zh) | 2019-12-09 | 2019-12-09 | 電子處理裝置及記憶體控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI726524B TWI726524B (zh) | 2021-05-01 |
TW202122996A true TW202122996A (zh) | 2021-06-16 |
Family
ID=76210510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108144856A TWI726524B (zh) | 2019-12-09 | 2019-12-09 | 電子處理裝置及記憶體控制方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11307795B2 (zh) |
CN (1) | CN113032008B (zh) |
TW (1) | TWI726524B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11537389B2 (en) * | 2017-12-12 | 2022-12-27 | Infineon Technologies LLC | Memory devices, systems, and methods for updating firmware with single memory device |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6070012A (en) * | 1998-05-22 | 2000-05-30 | Nortel Networks Corporation | Method and apparatus for upgrading software subsystems without interrupting service |
US20080155524A1 (en) * | 2006-12-26 | 2008-06-26 | Fuja Shone | Firmware Updating and Extending Method for Application Specific Integrated Circuit |
TW200903334A (en) * | 2007-07-06 | 2009-01-16 | Asustek Comp Inc | Basic input/output system and data updating method using the same |
TWI346895B (en) * | 2007-11-30 | 2011-08-11 | Inventec Corp | A bootloader self-update system and method thereof |
US9104546B2 (en) * | 2010-05-24 | 2015-08-11 | Silicon Motion Inc. | Method for performing block management using dynamic threshold, and associated memory device and controller thereof |
TWI447579B (zh) * | 2011-05-18 | 2014-08-01 | Phison Electronics Corp | 程式碼載入與存取方法、記憶體控制器與記憶體儲存裝置 |
CN103377129B (zh) * | 2012-04-11 | 2016-04-06 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器储存装置 |
US9690695B2 (en) * | 2012-09-20 | 2017-06-27 | Silicon Motion, Inc. | Data storage device and flash memory control method thereof |
CN102929674B (zh) * | 2012-11-02 | 2016-02-10 | 威盛电子股份有限公司 | 电子装置以及开机方法 |
US9632880B2 (en) * | 2013-12-26 | 2017-04-25 | Silicon Motion, Inc. | Data storage device and flash memory control method |
US9535688B2 (en) * | 2014-07-23 | 2017-01-03 | Verizon Patent And Licensing Inc. | Efficient deployment of application revisions and implementation of application rollbacks across multiple application servers |
TWI597665B (zh) * | 2016-12-27 | 2017-09-01 | 緯創資通股份有限公司 | 在一儲存系統中更新軟體的方法及儲存系統 |
TWI629591B (zh) * | 2017-08-30 | 2018-07-11 | 慧榮科技股份有限公司 | 存取快閃記憶體模組的方法及相關的快閃記憶體控制器與電子裝置 |
US10552145B2 (en) * | 2017-12-12 | 2020-02-04 | Cypress Semiconductor Corporation | Memory devices, systems, and methods for updating firmware with single memory device |
TWI647615B (zh) * | 2018-03-29 | 2019-01-11 | 緯創資通股份有限公司 | 使用多嵌入式控制器韌體的韌體系統的開機方法 |
-
2019
- 2019-12-09 TW TW108144856A patent/TWI726524B/zh active
- 2019-12-27 CN CN201911378130.8A patent/CN113032008B/zh active Active
-
2020
- 2020-12-08 US US17/114,932 patent/US11307795B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
CN113032008A (zh) | 2021-06-25 |
CN113032008B (zh) | 2023-12-15 |
TWI726524B (zh) | 2021-05-01 |
US11307795B2 (en) | 2022-04-19 |
US20210173584A1 (en) | 2021-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110032405B (zh) | ***开机码存储器管理方法、存储器装置与应用其的电子*** | |
US7322029B2 (en) | Method and system for recovering program code in a computer system | |
US6725178B2 (en) | Use of hidden partitions in a storage device for storing BIOS extension files | |
US10228745B2 (en) | Resuming a system-on-a-chip device | |
TW201624273A (zh) | 韌體變量更新方法 | |
EP3080693B1 (en) | Devices, updaters, methods for controlling a device, and methods for controlling an updater | |
US7512777B2 (en) | Method and system for maintaining system management BIOS | |
US20070101115A1 (en) | Information processing device, bios processing method and program | |
JP2015153198A (ja) | コンピュータの動作不良を防止する方法、コンピュータ・プログラムおよびコンピュータ | |
US10642623B1 (en) | Preserving firmware settings during firmware updates | |
US10235183B2 (en) | Booting a system-on-a-chip device | |
US9411605B2 (en) | Device-less and system agnostic unified extensible firmware interface (UEFI) driver | |
US10977050B2 (en) | Method for managing system boot code memory, memory device and electronic system using the same | |
US7546596B2 (en) | Non-disruptive method, system and program product for overlaying a first software module with a second software module | |
CN105556461B (zh) | 用于预os镜像重写以提供跨架构支持、安全性自省和性能优化的技术 | |
TWI726524B (zh) | 電子處理裝置及記憶體控制方法 | |
US20030084232A1 (en) | Device and method capable of changing codes of micro-controller | |
US7958345B2 (en) | Method for adjusting setup default value of BIOS and main board thereof | |
JP2971267B2 (ja) | フラッシュメモリをbios−romとして使用したパーソナルコンピュータ | |
US20040068632A1 (en) | Method and apparatus for using an ACPI NVS memory region as an alternative CMOS information area | |
WO2022046105A1 (en) | Bios update | |
TWI733284B (zh) | 硬體設定裝置及其硬體設定方法 | |
TW201430698A (zh) | 具高可靠性的博奕應用系統執行方法及其電子裝置 | |
JP2004295397A (ja) | コンピュータシステム、コンピュータシステムの起動方法及びそのプログラム |