TW201525870A - 可更新積體電路無線電 - Google Patents

可更新積體電路無線電 Download PDF

Info

Publication number
TW201525870A
TW201525870A TW103140368A TW103140368A TW201525870A TW 201525870 A TW201525870 A TW 201525870A TW 103140368 A TW103140368 A TW 103140368A TW 103140368 A TW103140368 A TW 103140368A TW 201525870 A TW201525870 A TW 201525870A
Authority
TW
Taiwan
Prior art keywords
firmware module
software application
new
boot loader
memory
Prior art date
Application number
TW103140368A
Other languages
English (en)
Other versions
TWI625672B (zh
Inventor
Martin Tverdal
Joel David Stapleton
Original Assignee
Nordic Semiconductor Asa
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nordic Semiconductor Asa filed Critical Nordic Semiconductor Asa
Publication of TW201525870A publication Critical patent/TW201525870A/zh
Application granted granted Critical
Publication of TWI625672B publication Critical patent/TWI625672B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/66Updates of program code stored in read-only memory [ROM]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/50Service provisioning or reconfiguring

Abstract

一種積體電路無線電通訊裝置包含處理手段、記憶體、及無線電通訊邏輯。該記憶體儲存(i)一啟動載入器,(ii)在韌體記憶區域的一韌體模組,以及(iii)在軟體應用記憶區域的一軟體應用,該韌體模組包含指令以根據預定的無線電協定來控制無線電通訊邏輯,以及軟體應用包括指令以調用該韌體模組的無線電通訊功能,該啟動載入器或該韌體模組包含指令以使用無線電通訊邏輯來接收一新韌體模組,以及該啟動載入器或該韌體模組包含指令以儲存新韌體模組於軟體應用記憶區域,使得至少軟體應用的一部分被新韌體模組所覆寫。該啟動載入器包含指令以從軟體應用記憶區域移動或複製新韌體模組到韌體記憶區域。

Description

可更新積體電路無線電
本發明係關於積體電路無線電通訊裝置及更新此等裝置之方法。
積體電路無線電通訊裝置通常整合一處理器、記憶體、以及無線電通訊邏輯在一矽晶片上。一天線可製作於矽晶片上或為外接形式。該裝置通常具有針腳以將其連接到一電源供應、時鐘源、及任何外部周邊設備,例如:感測器、計時器、數位類比轉換器、以及輸出裝置。該處理器與無線通訊邏輯介接以管理由該裝置接收及/或發送的無線電訊息。
目前這樣的無線通訊裝置可以被使用在許多無線產品,例如:無線鍵盤滑鼠、遊戲機的控制器、腳踏車速度計、遙控器、車庫門遙控器、無線揚聲器等等。
在這樣一個裝置中的處理器可以在該裝置上運行儲存在非揮發性記憶體的軟體(如:電子可抹除可程式化唯讀記憶體或快閃記憶體),據以根據一預定的無線電協定,例如:藍芽(BluetoothTM)或群蜂(ZigBeeTM),來控制該無 線通訊邏輯。
這樣裝置的一個例子係為申請人的nRF51822無線電單晶片(radio-on-a-chip),其包括:一無線電收發機以及一具有256kB嵌入快閃記憶體和16kB隨機存取記憶體的32位元ARMTM CortexTM M0中央處理單元(CPU)。它可以供應給客戶一已經載入到快閃記憶體之預編譯及連結的二位元韌體模組,或是該韌體模組可供應為一二位元影像給客戶以載入至裝置上。該韌體模組可提供無線電之軟體控制以及其他功能,在運送成品給合併該積體電路無線電裝置(例如一無線電腦鍵盤)之終端使用者之前,客戶也可增加自己的軟體應用至快閃記憶體,以成為一獨立預先連結的二位元模組。
因此申請人了解到可能需要更改或更新韌體模組中的程式碼(例如:增加新功能或修復錯誤),即使該韌體模組以及軟體應用已經載入至一裝置上。在某些情況中,該裝置在終端使用者擁有時或許會希望更改程式碼。
本發明之目的係尋求提供一種有效的方法以方便程式碼更新。
從第一個方面,本發明提供一種更新一積體電路無線電通訊裝置之方法,其中:該裝置包含一處理手段、一記憶體、及一無線電通訊邏輯;以及該記憶體儲存(i)一啟動載入器,(ii)在一韌體記憶區域的一韌體模組,以及(iii) 在一軟體應用記憶區域的一軟體應用,該韌體模組包含指令以根據一預定的無線電協定來控制該無線電通訊邏輯,以及該軟體應用包括指令以調用該韌體模組的一無線電通訊功能;該方法包含:該處理手段執行來自該啟動載入器或該韌體模組的指令以使用該無線電通訊邏輯來接收一新韌體模組,以及執行來自該啟動載入器或該韌體模組的指令以儲存該新韌體模組於該軟體應用記憶區域,使得至少該軟體應用的一部分被該新韌體模組所覆寫;以及該處理手段執行來自該啟動載入器的指令以從該軟體應用記憶區域移動或複製該新韌體模組到該韌體記憶區域。
從第二個方面,本發明提供一種積體電路無線電通訊裝置,包含:一處理手段;一記憶體;以及一無線電通訊邏輯,其中,該記憶體儲存(i)一啟動載入器,(ii)在一韌體記憶區域的一韌體模組,以及(iii)在一軟體應用記憶區域的一軟體應用,該韌體模組包括指令以根據一預定的無線電協定來控制該無線通信邏輯,以及該軟體應用包括指令以調用該韌體模組的一無線電通訊功能;該啟動載入器或該韌體模組包含指令以使用該無線電通訊邏輯來接收一新韌體模組,以及該啟動載入器或韌體模組包含指令以儲存該新韌體模組於該軟體應用記憶區域,使得至少該軟體應用的一部分被該新韌體模組所覆寫;以及該啟動載入器包含指令以從該軟體應用記憶區域移動或複製該新韌體模組到該韌體記憶區域。
因此,熟悉本領域的技術人員可以看出,根據 本發明一種積體電路無線電通訊裝置可使用現有的韌體模組藉由無線電接收一新韌體模組,以及在新的韌體模組更新或取代舊的韌體模組之前,利用一軟體應用記憶區域暫時儲存新韌體模組。以這種方式就不需要保留一專用的記憶體區域來接收新的韌體模組;這係需要的,因為一較大記憶體的要求將會增加至該裝置的尺寸及成本。此更新可由終端使用者很方便地執行,因為可以無線方式進行,不需要將該無線電裝置通過電纜連接到一主機計算裝置。
在一較佳實例中,該啟動載入器或該韌體模組包含指令以使用該無線電通訊邏輯來接收一新韌體模組,以及該啟動載入器或新韌體模組包含指令以儲存該新軟體應用於該軟體應用記憶區域。如果舊韌體模組的一複製本保留在新接收到的軟體應用時,該軟體應用記憶區域中之至少該舊韌體模組的一部分被該新軟體應用所覆寫。該新軟體應用也許可相同於舊軟體應用,或者包含至少一些差異,例如是新的程式碼或刪除的程式碼。
當儲存在該軟體應用記憶區域時,該新韌體模組或許會完全覆寫該舊軟體應用;舉例而言,可能係該新韌體模組大於該軟體應用所會有的情況。
該記憶體包含任一或更多種:唯讀記憶體、非揮發性記憶體、以及揮發性記憶體。在某些實施例中,還至少包含或包括非揮發性讀寫記憶體,像是電子可抹除可程式化唯讀記憶體、快閃記憶體(例如NOR類型快閃記憶體),或任何其他適合的技術。該韌體記憶體區域和/或該軟體應 用記憶區域較佳地每一個都包含非揮發性讀寫記憶體,該記憶體較佳地允許隨機存取使得程式碼可以直接從記憶體執行(儘管這非必須)。該處理手段較佳地在韌體模組和/或在軟體應用中直接執行來自記憶體的指令,可能經由一個處理器快取記憶體,但沒有先複製整個韌體模組或軟體應用至隨機存取記憶體。該記憶體可包含可個別抹除的分頁。該記憶體的一非揮發性部分或許不能在比一個分頁更細的比例下被抹除,例如:沒有在一個個別的位元、位元組或字級。抹除在這裡的意思為重設記憶體內容為預設狀態(通常係全為二位元“1”或全為二位元“0”),由此,該個別位元或位元組的狀態可以在寫入操作時改變。
覆寫可以包含隨著一寫入操作後執行一抹除操作或執行單一操作,取決於記憶體型態而定。
該裝置較佳地也包含揮發性記憶體,例如隨機存取記憶體,然而,在較佳實例中,隨機存取記憶體的數量或可用的隨機存取記憶體數量係小於該軟體應用記憶區域。該新韌體模組通常大於該隨機存取記憶體或可用的隨機取記憶體,儲存該新韌體模組至該軟體應用記憶區域較佳地與接收該新韌體模組在時間上重疊。
該韌體模組較佳地佔有一單獨連續範圍的記憶體位址,然而這不是必要的,且該韌體記憶區域包含兩個或多個不連續子區域;類似的,該軟體應用記憶區域佔據一單獨連續範圍的記憶體位址,然而這不是必要的,且該軟體應用記憶區域可包含兩個或多個不連續子區域;該 韌體記憶區域與軟體應用記憶區域係不同區域(即不重疊)。
該軟體應用較佳地係位於一預定的軟體應用記憶位址(即一些或全部軟體應用占據一個範圍的記憶體位址,延伸自預定的記憶體位址),此預定位址可提供給軟體應用開發者,以供連結及/或載入該軟體應用至該裝置時使用,其或許會被該韌體模組使用,例如:轉送中斷至該軟體應用。
當被寫入到軟體應用記憶區域,該新韌體模組較佳地儲存於或大約於該相同的預定軟體應用記憶位址(即一些或全部新韌體模組占據一個範圍的記憶體位址,延伸自該軟體應用記憶體位址),在此經由確保與覆寫軟體應用的最大重疊而提供一個特別有效的記憶體之使用。
該啟動載入器或新韌體模組較佳地包含指令以寫入一新軟體應用至該預定的軟體應用記憶體位址。
該(舊)韌體模組較佳地位於一預定的韌體記憶位址(即一些或全部該韌體模組占據一個範圍的記憶體位址,延伸自該韌體記憶位址),該新韌體模組較佳地移動或複製至位於相同的預定韌體記憶體位址(即一些或全部新韌體模組占據一個範圍的記憶體位址,延伸自該韌體記憶體位址),每一韌體模組及/或軟體應用可以包含資料以及指令,每一個可以包含一中斷向量表。該新韌體模組可以小於或大於舊韌體模組或彼此尺寸係大致相同。
在一些實施例中,於該韌體模組移動到韌體記 憶區域之後,一些或全部該軟體應用記憶區域可能被抹除;在其他實例中,該新韌體模組的一複製本可以被留在該軟體應用記憶區域,以在之後被抹除或覆寫(例如,一裝置重置後或當一新軟體應用載入時)。
該啟動載入器可以被儲存在唯讀記憶體或讀寫記憶體中,例如快閃記憶體,和該韌體模組相比是較佳地相對小的尺寸(例如:約十分之一的大小或更小)。在一組實例中,該啟動載入器約4kB,然而該韌體模組大約80kB或更多。該啟動載入器可以位於韌體模組區域或在一不同的啟動載入器記憶區域,該啟動載入器較佳地儲存在一或多個個別可抹除記憶分頁,其不是用於儲存韌體模組,這能夠特別有效抹除或覆寫舊韌體模組而不會影響啟動載入器程式碼。
該處理步驟被安排在啟動載入器電源接通後或重置後執行一或更多指令,該啟動載入器具有更新裝置以外的功能,但在至少某些實施例中它不提供其他功能;在某些實施例中,該啟動載入器不含有指令以直接使用該無線電通訊邏輯(即直接調用操作該無線通訊邏輯,不須通過執行該韌體模組或該軟體應用),這樣可使該啟動載入器維持越簡單越好和越小越好,最大程度地減少該啟動載入器程式碼發生錯誤的機會。反之,當無線電通訊邏輯為必要的,該啟動載入器可以轉移執行給舊韌體模組和/或新韌體模組。在某些實施例中,該啟動載入器包含指令用於執行跳轉到該韌體模組或到該軟體應用(例如:在電源開啟後 或重置後),每當一個有效的韌體模組和軟體應用已經入載至該裝置上。
該處理手段可以採取任何形式,但在某些較佳實施例中,其包括或是為一由ARMTM設計的處理器,例如一來自ARMTM CortexTM-M家族的處理器(例如:一CortexTM-M0)。該裝置可以包含複數個處理器,例如兩個或更多,其可以任何適當方式分享指令執行。在某些實施例中,來自該韌體模組的指令被一第一處理器執行,以及來自軟體應用的指令被一第二處理器執行,而不同於第一處理器。無線電通訊邏輯係較佳地在實體上及邏輯上與該處理器分開,它可以包含類比及/或數位電路。該裝置可以包含一整合型天線或可以包含一用於晶片外天線的連結,該裝置可以包含連結用於連接各式外部元件,例如:電阻、電容、電源供應器、放大器、無線電天線、晶體振盪器、感測器、輸出裝置等。
於較佳實施例中,該韌體模組係一預先連結的二位元影像,該軟體應用也是一預先連結的二位元影像,較佳地,該韌體模組與該軟體應用沒有連結產生,在某些實施例中,該軟體應用將轉移控制權給該韌體模組(例如:調用一無線電功能),此係通過該處理手段執行一管理程序呼叫指令,其生成一由韌體模組處理的中斷。
該韌體模組與軟體應用之間的分隔使舊韌體模組能夠很容易的被新韌體模組所覆寫而不會毀損舊韌體模組,這並不直觀如果該韌體模組和軟體應用被編譯及/或 連結成一單一二位元影像,因為這不太可能是一僅含有軟體應用的程式碼之易於識別的記憶體區域。這不是說是不可能的(例如:小心地使用連結器指引),以及不排除將該韌體模組完整地連結至該軟體應用的配置。
該裝置可以包含記憶體保護邏輯,其可以防止程式碼中的軟體應用記憶體區域直接存取(讀取及/或寫入及/或執行)在該韌體記憶區域的地址。
在某些實施例中,該軟體應用包含指令使該處理器執行在韌體模組中的指令,以使用該無線電通訊邏輯來接收一新韌體模組。該軟體應用可以直接轉移控制權給該韌體模組(例如:經由一系統呼叫)或可以移轉控制權給該啟動載入器,其接著可以調用該所需韌體模組的功能或多個功能。這允許該軟體應用決定是否或何時啟動一韌體更新,例如:回應一來自一人類使用者的訊號,或回應一來自一例如智慧型手機之遠端裝置經由無線電所接收的訊息。
該軟體應用可以包含傳遞訊息到該啟動載入器或該韌體模組的指令(例如:作為一或更多功能參數),其允許該裝置重新建立和遠端裝置的無線電連結,例如,假設當接收新韌體模組時有無線電通訊問題,或該裝置無預警重置(例如因停電所造成)。此資訊包含鏈結資訊,如任一或更多之裝置位址、無線電頻道、認證資訊、以及加密資訊,這些資訊是重要的,因為該軟體應用可以開始被覆寫(且不再是可執行的),於該新韌體模組開始被該裝置接收 之時。該鏈結資訊也被該裝置用來接收來自遠端裝置的新韌體模組,該啟動載入器可以儲存鏈結資訊以及使用它來接收該新軟體應用,或是舊韌體模組可以提供鏈結資訊給新韌體模組,例如:將之儲存到一預定的記憶體位址。
該啟動載入器或韌體模組較佳地包括指令以檢查新韌體模組已經被正確接收及/或正確儲存在軟體應用記憶區域的,這包含驗證該新韌體模組的核對和碼(checksum)或驗證一加密簽章。新韌體模組的認證資訊,如一核對和碼或數位簽章,可以由遠端裝置提供給該裝置,例如:伴隨新韌體模組或嵌入新韌體模組。該啟動載入器或新韌體模組可包含指令以在檢查錯誤時使用該無線電通訊邏輯來通知一遠端裝置,它可以要求該遠端裝置重新傳送新韌體模組。
當新韌體模組已經正確儲存,舊韌體模組可以返回或轉移控制權給該啟動載入器,這可以係由一直接分支、或由觸發一中斷、或使該裝置重置、或任何其他合適機制來達成。
該啟動載入器可以抹除舊韌體模組(例如:抹除該全部韌體記憶區域),然後從該軟體應用記憶區域讀取新韌體模組並將之寫入該韌體記憶區域,它可以轉移控制權給新韌體模組(於接收一新軟體應用之前或之後)。
如果一新軟體應用隨後被接收,在該啟動載入器或新韌體模組的指令之下,它可以被直接寫入至新軟體應用記憶區域,儲存該新軟體應用於該軟體應用區域與接 收該新軟體應用較佳地在時間上重疊,該啟動載入器或新韌體模組較佳地包含指令以檢查新軟體應用已經被正確接收及/或正確儲存在該軟體應用記憶區域,這包含驗證該軟體應用的一核對和碼或加密簽章。該啟動載入器或韌體模組可包含指令以在檢查錯誤時使用該無線電通訊邏輯通知一遠端裝置,它可以要求該遠端裝置重新傳送新軟體應用。
一新軟體應用可以在同一個無線通訊對話期(session)中被接收以作為新韌體模組,或者,新軟體應用可能無法被接收到直至一稍後的無線通訊對話期,它可以接收自一不同於該新韌體模組的遠端裝置。
在此所描述之任何實施例或觀點之特色,若適當的話,可應用到在此所描述之任何其它實施例或觀點,當對不同實施例或實施例組進行參照時,需要瞭解的是它們不必然是獨特的,而是可能重疊。
1‧‧‧微控制器
3‧‧‧時脈邏輯
5‧‧‧電源管理電路
7‧‧‧處理器
9‧‧‧記憶體保護邏輯
11‧‧‧隨機存取記憶體
13‧‧‧快閃記憶體
15‧‧‧週邊設備
17‧‧‧無線電通訊邏輯
19‧‧‧輸入/輸出電路
21‧‧‧硬體抽象化層
22‧‧‧啟動載入器
23‧‧‧韌體模組
25‧‧‧驅動器
27‧‧‧軟體應用
29‧‧‧應用程式設計介面
31‧‧‧無線電協定區塊
35‧‧‧程式庫
37‧‧‧韌體管理
40‧‧‧新韌體模組
42‧‧‧新軟體應用
圖1係本發明一微控制器實施例之架構示意圖。
圖2係一微控制器架構內之主要軟體組件示意圖。
圖3係一微控制器的記憶體圖之示意圖。
圖4係一非揮發性記憶體之示意圖,顯示該微控制器更新的第一階段。
圖5係一非揮發性記憶體之示意圖,顯示該微控制器更新的第二階段。
圖6係一非揮發性記憶體之示意圖,顯示該微控制器更新的第三階段。
圖1係本發明一積體電路微控制器1實施例之架構示意圖,有時也被稱為一無線電單晶片(radio-on-a-chip),它可以被合併入一產品中,如一無線心跳速率監測器。該微控制器1包含時脈邏輯3,其可包含一電阻電容振盪器及/或可以接收一來自晶片外晶體振盪器的輸入(圖未示)、電源管理電路5、一處理器7(例如:一ARMTM CortexTM-M0)、記憶體保護邏輯9、隨機存取記憶體11、非揮發快閃記憶體13、一或更多週邊設備15、無線電通訊邏輯17、以及輸入/輸出電路19。
該處理器7、隨機存取記憶體11以及快閃記憶體13以傳統方式互連,如使用電線和匯流排(圖未示),該記憶體保護邏輯9係設置來從該處理器7擷取指令到該隨機存取記憶體11和非揮發快閃記憶體13,當安裝在一產品,該微處理器1可連接到多個外部元件,如一電源供應器、無線電天線、晶體振盪器、電容、感測器、音頻/視頻輸出裝置等(圖未示)。
圖2係微控制器架構內之主要軟體組件示意圖,包含一選用的硬體抽象化層21,如ARMTM CortexTM微控制 器軟體介面標準,一啟動載入器22、一韌體模組23、驅動器25、以及一軟體應用27,該驅動器25專用於該軟體應用27。
該啟動載入器22係一位於該快閃記憶體13之小型的二位元應用,它包含指令以管理空中傳輸的軟體更新,該啟動載入器22係在全部重置後的入口點,通常它移轉控制權直接給該韌體模組23,除非它正在進行更新。
該韌體模組23係一包含有多個嵌入式軟體區塊之連結二位元應用,一無線電協定區塊31實現一或多個無線協定堆疊,如藍芽低能量(Bluetooth Low EnergyTM)。一程式庫35提供共享的硬體資源管理,並運作為例如亂數產生、配置中斷和優先權、電源管理(例如:致能和禁能週邊設備)、加密功能等,一韌體管理者37支援致能和禁能該韌體模組以及致能和禁能該無線協定堆疊,該韌體模組23擁有該系統向量表。
一用於該韌體模組23之應用程式設計介面(API)29允許該軟體應用27調用該韌體模組23中的功能,它係使用訊號監督者呼叫指令從該軟體應用27移轉控制權給該韌體模組23,這些會造成可在該韌體模組23中被應付的處理中斷,該韌體模組23可以使用軟體中斷來傳達事件給該軟體應用27。
該軟體應用27可以直接存取該微控制器1硬體,或經由一硬體抽象化層21,例如藉由特定應用驅動器25,此外能夠使用該韌體模組23來間接使用該硬體。
圖3顯示在該韌體模組23以及該軟體應用27(包含任何特定應用驅動器25)之間如何共享隨機存取記憶體11以及快閃記憶體13,當使用一ARMTM CortexTM-M0處理器7,該快閃記憶體13指定位址從0(0x0000 0000)向上,到程式記憶體容量(SizeOfProgMem),以及該隨機存取記憶體11指定位址從0x2000 0000向上到(0x2000 0000+SizeOfRAM),不同的位址值也可以在其他實施例中使用。
該快閃記憶體13包含在位址CLENR0(程式碼長度範圍0)任一側之兩個不同區域,在位址0和CLENR0之間的區域0為該啟動載入器22和該韌體模組23所在的位置,該韌體模組的中斷向量表儲存在位址0。從位址CLENR0向上延伸之區域1為該軟體應用27以及任何應用資料所在的位置,它也有一中斷向量表,位於位址CLENR0用於接收從該韌體模組23所轉發來的中斷(以及可能從該啟動載入器22而來)。應當理解的是,該裝置1可以有其他非揮發記憶體(圖未示),其可用於其他目的,如儲存組態資訊或旗標。
該隨機存取記憶體11類似地具有區域0,從基底位址0x2000 000到RLENR0,以及區域1,從位址RLENR0向上延伸,隨機存取記憶體區域0提供資料儲存給該啟動載入器22和該韌體模組23,而區域1提供資料儲存給該軟體應用27,一呼叫堆疊於該韌體模組23和該軟體應用27之間分享,並向下發展,例如從位址0x2000 0000+SizeOfRAM。分配給該呼叫堆疊的記憶體必須足夠大以符合該軟體應用 27和該韌體模組23的需求,該預定的分享記憶體位址可以在該隨機存取記憶體11的區域1或位在該隨機存取記憶體11之區域0跟區域1之外的其他地方。
該記憶體保護邏輯9安排攔截由該處理器7到該快閃記憶體13及該隨機存取記憶體11之所有記憶體存取要求(例如:讀取要求),它決定該存取要求指令的來源(例如該要求是否來自該韌體模組23或該軟體應用27),它也存取記憶體保護組態資料(例如儲存在一或多個專屬暫存器),其對於各種來源指定個別的存取許可,以及允許或拒絕相應的存取要求。
在本發明一些較佳實施例中,該軟體應用27係拒絕讀取及/或寫入存取至快閃記憶體13區域0和隨機存取記憶體11區域0,此保護該韌體模組23的私密性且可以防止由該軟體應用27無意或惡意寫入至分配給該韌體模組23之記憶體位址從而增加耐用性及安全性,該軟體應用快閃記憶體區域1也可以防止讀取存取,例如,防止經由一外部除錯介面之回讀。
圖4至圖6顯示在該裝置1上之該韌體模組23和該軟體應用27的更新,掛鎖符號表示該記憶體保護邏輯9已實施某種程度的存取保護之記憶體區域。
該軟體應用27藉由呼叫一在該啟動載入器22的更新功能來啟始該更新過程,該軟體應用27對一遠端對等裝置傳送無線電協定鏈結資訊給該啟動載入器22,舉例來說,該對等裝置可以是一智慧型手機或一筆記型電腦, 在斷線的情況下,該鏈結資訊可以被該微控制器1使用以重新連接到該對等裝置。該啟動載入器22或該軟體應用27接著移轉控制權給該韌體模組23(例如使用一系統呼叫以調用該韌體模組23中的一更新操作),一旦該韌體模組23具有控制權時,它使用該無線電通訊邏輯17來要求來自該對等裝置的該新韌體模組40。
如圖4所示,該韌體模組23開始接收該新韌體模組40,它可能會暫時緩衝一些在該隨機存取記憶體11中之接收資料,但它也開始寫入該新韌體模組40至該快閃記憶體13的區域1,其先前保持其所接收的該軟體應用27,該軟體應用27(包含該應用向量表)可以在寫入之前被全部抹除,或它可以在需要的時候一次抹除一分頁。
一旦該整個新韌體模組40已經被接收以及寫入至該快閃記憶體13,該舊韌體模組23對該新韌體模組40驗證一接收自該對等裝置的核對和碼,如果該核對和碼不正確,該舊韌體模組23要求該對等裝置重新傳輸該新韌體模組40。
如果微控制器1於接收該新韌體模組40的時候被無預警地重置(例如:停電),執行將會在該啟動載入器22中回復,其將指示該韌體模組23從該對等裝置再次要求該新韌體模組40。
一旦該新韌體模組40的核對和碼正確,該韌體模組23將移轉控制權給該啟動載入器22,該啟動載入器22斷開來自該遠端對等裝置的連線以及從該快閃記憶體13 區域0抹除該舊韌體模組23(以及其向量表),它當然不會抹除在區域0的該啟動載入器22程式碼,為了促進此設置,該啟動載入器22較佳係儲存在它自己的快閃分頁或多個分頁,與區域0之其餘部分分開,因此它是直接抹除全部的區域0,除了含有該啟動載入器22的快閃分頁或多個分頁。
如圖5所示,該啟動載入器22接著複製該新韌體模組40從區域0到區域1的相關位址。
該啟動載入器22接著調用一在該新韌體模組40中的功能(例如經由一系統呼叫),以指示它由無線電重新連接至該遠端對等裝置,以及要求傳送一新軟體應用42,該啟動載入器22傳送無線電鏈結資訊到該新韌體模組40以使之能夠做到此事。
如圖6所示,該新韌體模組40開始接收該新軟體應用42,它可能會暫時緩衝一些接收的資料在該隨機存取記憶體11中,但它也開始將其所接收到的該新軟體應用42(包含該應用向量表)寫入至該快閃記憶體13的區域1,區域1在寫入之前可能被全部抹除,或是它可以在需要的時候一次抹除一分頁。於完成時,該啟動載入器22對該新軟體應用42驗證一接收自該對等裝置的核對和碼。如果該核對和碼不正確,該啟動載入器22要求由該對等裝置重新傳輸該新軟體應用42。
如果微控制器1在接收該新軟體應用42的時候無預警地被重置(例如因為停電),執行將會在該啟動載入器22中回復,其將指示該新韌體模組40從該對等裝置再次 要求該新軟體應用42。
一旦該新軟體應用42的核對和碼正確,該啟動載入器22移轉控制權給該新軟體應用42,因此該微處理器1可以開始以一個正常的方式使用該新軟體應用42以及該新韌體模組40。
在這種配置中,該啟動載入器22負責調用適合的功能於新和舊韌體模組之間以進行更新,包括依需要傳送鏈結資訊以及由無預警重置中恢復。
在一組可替換的實施例中,該舊韌體模組23可以負責保存鏈結資訊以及重新記憶更新過程的狀態,該舊韌體模組23可以將該新韌體模組40寫入至區域1以及驗證它已經被正確接收,該啟動載入器22在更新階段主要或唯一的任務僅係將該新韌體模組40從區域1複製到區域0,如果該微控制器1遇到一無預警重置(例如停電),在該舊軟體應用27完全由該新韌體模組40複寫之前,執行將會在該啟動載入器22中回復,它僅移轉控制權給該舊韌體模組23。該舊韌體模組23維持狀態,因此可以知道它必須再次開始接收該新韌體模組40,以及使用該儲存在記憶體的鏈結資訊以再次要求該新韌體模組40,該舊韌體模組23將該鏈結資訊寫入至一適當的記憶體區域(例如在隨機存取記憶體或較佳在一快閃記憶體中的永久資料儲存區),因此它可以由該新韌體模組40所存取。
一旦該新韌體模組40已經由該啟動載入器22所正確接收以及複製到區域0,該啟動載入器22移轉控制 權給該新韌體模組40,該新韌體模組40被配置為知道何時作第一次啟動,以及藉由連結到該對等裝置和接收該新軟體應用42而回應,該舊韌體模組23必須先前已經將該鏈結訊息寫入至一適當記憶體區域(例如在隨機存取記憶體或較佳地在一快閃記憶體的永久資料儲存區),因此該新韌體模組40能夠存取它以重新連線至該對等裝置。
可替換的,該新韌體模組40可以與相同的遠端裝置或與一不同的遠端裝置建立新鏈結資訊,據以接收該新軟體應用42,這可能會在該新韌體模組40已經被接收之後立即發生,或在一時脈延遲之後發生。
上述實施例僅係為了方便說明而舉例而已,本發明所主張之權利範圍自應以申請專利範圍所述為準,而非僅限於上述實施例。
13‧‧‧快閃記憶體
22‧‧‧啟動載入器
23‧‧‧韌體模組
27‧‧‧軟體應用
40‧‧‧新韌體模組

Claims (24)

  1. 一種更新一積體電路無線電通訊裝置之方法,其中:該裝置包含一處理手段、一記憶體、及一無線電通訊邏輯;以及該記憶體儲存(i)一啟動載入器,(ii)在一韌體記憶區域的一韌體模組,以及(iii)在一軟體應用記憶區域的一軟體應用,該韌體模組包含指令以根據一預定的無線電協定來控制該無線電通訊邏輯,以及該軟體應用包括指令以調用該韌體模組的一無線電通訊功能;該方法包含:該處理手段執行來自該啟動載入器或該韌體模組的指令以使用該無線電通訊邏輯來接收一新韌體模組,以及執行來自該啟動載入器或該韌體模組的指令以儲存該新韌體模組於該軟體應用記憶區域,使得至少該軟體應用的一部分被該新韌體模組所覆寫;以及該處理手段執行來自該啟動載入器的指令以從該軟體應用記憶區域移動或複製該新韌體模組到該韌體記憶區域。
  2. 如申請專利範圍第1項所述之方法,其中該軟體應用完全被該新韌體模組所覆寫。
  3. 如申請專利範圍第1或2項所述之方法,其中該啟動載入器或該新韌體模組包含指令以使用該無線電通訊邏輯來接收一新軟體應用,以及該啟動載入器或該新韌體模組包含指令以儲存該新軟體應用於該軟體應用記憶區域。
  4. 如前述申請專利範圍任一項所述之方法,其中該韌體記憶區域以及該軟體應用記憶區域各包含非揮發性讀寫記憶體。
  5. 如前述申請專利範圍任一項所述之方法,其中儲存該新韌體模組於該軟體應用記憶區域與接收該新韌體模組在時間上重疊。
  6. 如前述申請專利範圍任一項所述之方法,其中該軟體應用係位於一預定的軟體應用記憶位址,以及其中該方法包含儲存該新韌體模組於該預定的軟體應用記憶位址。
  7. 如前述申請專利範圍任一項所述之方法,其中該啟動載入器係儲存於一或多個獨立可抹除記憶體分頁。
  8. 如前述申請專利範圍任一項所述之方法,其中該啟動載入器不含有指令以直接使用該無線電通訊邏輯。
  9. 如前述申請專利範圍任一項所述之方法,其中該韌體模組係一預先連結的二值化影像以及其中該軟體應用係一預先連結的二值化影像。
  10. 如前述申請專利範圍任一項所述之方法,其中該軟體應用包含指令用於使處理器執行該韌體模組中的指令,據以使用該無線電通訊邏輯來接收該新韌體模組。
  11. 如前述申請專利範圍任一項所述之方法,其中該新韌體模組係接收自一遠端裝置,該方法更包括,如果失去連接,該軟體應用傳遞訊息到該啟動載入器或該韌體模組以重新和該遠端裝置建立無線電連接。
  12. 如前述申請專利範圍任一項所述之方法,包含該處理手段執行指令以檢查該新韌體模組已被正確地接收。
  13. 一種積體電路無線電通訊裝置,包含:一處理手段;一記憶體;以及一無線電通訊邏輯,其中,該記憶體儲存(i)一啟動載入器,(ii)在一韌體記憶區域的一韌體模組,以及(iii)在一軟體應用記憶區域的一軟體應用,該韌體模組包括指令以根據一預定的無線電協定來控制該無線通信邏輯,以及該軟體應用包括指令以調用該韌體模組的一無線電通訊功能;該啟動載入器或該韌體模組包含指令以使用該無線電通訊邏輯來接收一新韌體模組,以及該啟動載入器或韌體模組包含指令以儲存該新韌體模組於該軟體應用記憶區域,使得至少該軟體應用的一部分被該新韌體模組所覆寫;以及該啟動載入器包含指令以從該軟體應用記憶區域移動或複製該新韌體模組到該韌體記憶區域。
  14. 如申請專利範圍第13項所述之裝置,其中該啟動載入器或該韌體模組包含指令以使該新韌體模組完全覆寫該軟體應用。
  15. 如申請專利範圍第13或14項所述之裝置,其中該啟動載入器或該新韌體模組包含指令以使用該無線電通訊邏 輯來接收一新軟體應用,以及該啟動載入器或該新韌體模組包含指令以儲存該新軟體應用於該軟體應用記憶區域。
  16. 如申請專利範圍第13到15項任一項所述之裝置,其中該韌體記憶區域以及該軟體應用記憶區域各包含非揮發性讀寫記憶體。
  17. 如申請專利範圍第13到16項任一項所述之裝置,其中在該啟動載入器及/或該韌體模組中的指令係使得儲存該新韌體模組於該軟體應用記憶區域與接收該新韌體模組在時間上重疊。
  18. 如申請專利範圍第13到17項任一項所述之裝置,其中該軟體應用係位於一預定的軟體應用記憶位址,以及其中該啟動載入器或該新韌體模組包含儲存該新韌體模組於該預定的軟體應用記憶位址。
  19. 如申請專利範圍第13到18項任一項所述之裝置,其中該啟動載入器係儲存於一或多個獨立可抹除記憶體分頁。
  20. 如申請專利範圍第13到19項任一項所述之裝置,其中該啟動載入器不含有指令以直接使用該無線電通訊邏輯。
  21. 如申請專利範圍第13到20項任一項所述之裝置,其中該韌體模組係一預先連結的二值化影像以及其中該軟體應用係一預先連結的二值化影像。
  22. 如申請專利範圍第13到21項任一項所述之裝置,其中該軟體應用包含指令用於使處理器執行該韌體模組中的指令,據以使用該無線電通訊邏輯來接收該新韌體模組。
  23. 如申請專利範圍第13到22項任一項所述之裝置,其中該啟動載入器或該新韌體模組包含指令用於從一遠端裝置接收該新韌體模組,以及其中如果失去連結,該軟體應用傳遞訊息到該啟動載入器或該韌體模組以重新和該遠端裝置建立無線電連接。
  24. 如申請專利範圍第13到23項任一項所述之裝置,其中該啟動載入器或該新韌體模組包含指令以檢查該新韌體模組已被正確地接收。
TW103140368A 2013-12-20 2014-11-21 可更新積體電路無線電 TWI625672B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
??GB1322797.0 2013-12-20
GB1322797.0A GB2515364B (en) 2013-12-20 2013-12-20 Updatable integrated-circuit radio

Publications (2)

Publication Number Publication Date
TW201525870A true TW201525870A (zh) 2015-07-01
TWI625672B TWI625672B (zh) 2018-06-01

Family

ID=50071321

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103140368A TWI625672B (zh) 2013-12-20 2014-11-21 可更新積體電路無線電

Country Status (8)

Country Link
US (1) US9891908B2 (zh)
EP (1) EP3084593B1 (zh)
JP (1) JP2017504112A (zh)
KR (1) KR102277238B1 (zh)
CN (1) CN105830021B (zh)
GB (1) GB2515364B (zh)
TW (1) TWI625672B (zh)
WO (1) WO2015092355A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2521607B (en) * 2013-12-23 2016-03-23 Nordic Semiconductor Asa Integrated-Circuit Radio
EP3803573A1 (en) 2018-05-29 2021-04-14 Nordic Semiconductor ASA Delta file with reversing data
JP2020149236A (ja) * 2019-03-12 2020-09-17 キオクシア株式会社 電子機器及び電子機器の制御方法
KR20210023184A (ko) * 2019-08-22 2021-03-04 에스케이하이닉스 주식회사 런타임 오버레이를 통해 펌웨어를 관리하는 장치 및 방법
GB201914047D0 (en) 2019-09-30 2019-11-13 Nordic Semiconductor Asa Bootloader updating
CN111459572B (zh) * 2020-03-31 2023-01-31 深圳市汇顶科技股份有限公司 程序加载方法、控制器、芯片以及电子设备

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6023620A (en) * 1997-02-26 2000-02-08 Telefonaktiebolaget Lm Ecrisson Method for downloading control software to a cellular telephone
US6275931B1 (en) * 1998-06-22 2001-08-14 Elsag International N.V. Method and apparatus for upgrading firmware boot and main codes in a programmable memory
DE19857921A1 (de) * 1998-12-15 2000-06-29 Siemens Ag Verfahren zur Änderung des Ablaufs eines in einem Festwertspeicher abgelegten Programms
JP3313655B2 (ja) * 1998-12-16 2002-08-12 エヌイーシーネクサソリューションズ株式会社 データ送受信方式、データ送受信方法、および記録媒体
US6640334B1 (en) * 1999-09-27 2003-10-28 Nortel Networks Limited Method and apparatus of remotely updating firmware of a communication device
CA2357382A1 (en) * 2001-09-17 2003-03-17 Soma Networks, Inc. Software update method, apparatus and system
JP2003152629A (ja) * 2001-11-15 2003-05-23 Nec Saitama Ltd 携帯型無線通信装置及び組み込み式ソフトウェアのダウンロード方法
US7188237B2 (en) * 2002-10-29 2007-03-06 Brocade Communication Systems, Inc. Reboot manager usable to change firmware in a high availability single processor system
WO2005024628A2 (en) * 2003-09-03 2005-03-17 Bitfone Corporation Tri-phase boot process in electronic devices
US7185191B2 (en) * 2004-05-05 2007-02-27 International Business Machines Corporation Updatable firmware having boot and/or communication redundancy
JP4826232B2 (ja) * 2005-11-25 2011-11-30 コニカミノルタビジネステクノロジーズ株式会社 情報処理装置およびブートプログラムの書き換え方法
JP4908026B2 (ja) * 2006-03-22 2012-04-04 株式会社東芝 情報処理装置
JP2008027269A (ja) * 2006-07-24 2008-02-07 Matsushita Electric Ind Co Ltd 通信機器およびプログラム更新方法
US20090013317A1 (en) * 2007-02-08 2009-01-08 Airnet Communications Corporation Software Management for Software Defined Radio in a Distributed Network
EP2229625B1 (en) 2007-12-13 2011-08-31 Telefonaktiebolaget LM Ericsson (publ) Updating firmware of an electronic device
TW200943794A (en) * 2008-04-04 2009-10-16 Nxp Bv Method for efficient packet framing in a communication network
US20090274099A1 (en) * 2008-05-02 2009-11-05 Qualcomm Incorporated Methods and apparatus for communicating transmitter information in a communication network
US20090320012A1 (en) * 2008-06-04 2009-12-24 Mediatek Inc. Secure booting for updating firmware over the air
JP5340084B2 (ja) * 2009-08-31 2013-11-13 株式会社ソニー・コンピュータエンタテインメント 無線通信端末、その制御方法、プログラム、及び情報記憶媒体
EP2453352A1 (en) * 2010-11-08 2012-05-16 Gemalto SA Software updating process for an embedded device
GB2499003B (en) * 2012-02-02 2014-01-01 Renesas Mobile Corp Updating modem baseband firmware
KR20130101630A (ko) * 2012-02-16 2013-09-16 삼성전자주식회사 전자장치에서 펌웨어 업데이트를 위한 방법 및 장치
GB2503471B (en) * 2012-06-27 2015-05-06 Nordic Semiconductor Asa Integrated-circuit radio
US9471300B2 (en) * 2012-07-26 2016-10-18 Utc Fire And Security America Corporation, Inc. Wireless firmware upgrades to an alarm security panel
CN103246536B (zh) * 2013-04-28 2016-01-06 常州南京大学高新技术研究院 物联定位系统的固件无线升级方法
US9667074B2 (en) * 2014-03-28 2017-05-30 Symbol Technologies, Llc Apparatus and method for updating remote standalone firmware

Also Published As

Publication number Publication date
CN105830021B (zh) 2020-04-03
EP3084593B1 (en) 2020-05-06
WO2015092355A1 (en) 2015-06-25
GB2515364A (en) 2014-12-24
CN105830021A (zh) 2016-08-03
EP3084593A1 (en) 2016-10-26
TWI625672B (zh) 2018-06-01
KR102277238B1 (ko) 2021-07-14
US9891908B2 (en) 2018-02-13
KR20160100391A (ko) 2016-08-23
GB2515364B (en) 2015-06-17
JP2017504112A (ja) 2017-02-02
GB201322797D0 (en) 2014-02-05
US20160283220A1 (en) 2016-09-29

Similar Documents

Publication Publication Date Title
JP6306578B2 (ja) メモリ保護装置及び保護方法
TWI625672B (zh) 可更新積體電路無線電
US8838950B2 (en) Security architecture for system on chip
US7831778B2 (en) Shared nonvolatile memory architecture
US9886408B2 (en) Data access protection for computer systems
JP2011519451A (ja) 周辺装置ロッキングメカニズム
CN107567629A (zh) 在可信执行环境容器中的动态固件模块加载器
US9542113B2 (en) Apparatuses for securing program code stored in a non-volatile memory
JP6326047B2 (ja) 集積回路型無線
JP2021012679A (ja) フラッシュエミュレーション機能を有するコントローラ及びコントロール方法
TWI640869B (zh) 配置一積體電路無線電通訊裝置的方法及積體電路無線電通訊裝置
JP2011180963A (ja) 半導体集積回路装置
JPH11167484A (ja) 不揮発性メモリ混載マイコン及びそのプログラム変更履歴管理方法並びに不揮発性メモリ混載マイコンのプログラム変更履歴管理プログラムを記録した記録媒体