亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

可更新集成電路無線電的制作方法

文檔序號(hào):10475869閱讀:201來源:國知局
可更新集成電路無線電的制作方法
【專利摘要】一種集成電路無線電通信裝置(1),包含處理裝置(7)、存儲(chǔ)器(13)、及無線電通信邏輯(17)。該存儲(chǔ)器(13)存儲(chǔ)(i)引導(dǎo)程序(22),(ii)在固件存儲(chǔ)區(qū)域的固件模塊(23),以及(iii)在軟件?應(yīng)用存儲(chǔ)區(qū)域的軟件應(yīng)用(27)。該固件模塊(23)包含用于根據(jù)預(yù)定的無線電協(xié)議來控制無線電通信邏輯(27)的指令,以及軟件應(yīng)用(27)包括用于調(diào)用該固件模塊(23)的無線電?通信功能的指令。該引導(dǎo)程序(22)或該固件模塊(23)包含用于使用無線電通信邏輯(17)來接收新的固件模塊(40)的指令,以及該引導(dǎo)程序(22)或該固件模塊(23)包含用于存儲(chǔ)新的固件模塊(40)在軟件?應(yīng)用存儲(chǔ)區(qū)域的指令,使得軟件應(yīng)用的至少一部分被新的固件模塊(40)所重寫。該引導(dǎo)程序(22)包含用于從軟件?應(yīng)用存儲(chǔ)區(qū)域移動(dòng)或復(fù)制新的固件模塊(40)到固件存儲(chǔ)區(qū)域。
【專利說明】
可更新集成電路無線電
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及集成電路無線電通信裝置以及更新該裝置的方法。
【背景技術(shù)】
[0002]集成電路無線電通信裝置通常整合處理器、存儲(chǔ)器、以及在硅芯片上的無線電通信邏輯。天線可在硅芯片上制作或外接。該裝置通常具有用于將其連接到電源供應(yīng)的針腳、時(shí)鐘源、及任何外圍設(shè)備,例如:傳感器、定時(shí)器、數(shù)字模擬轉(zhuǎn)換器、以及輸出裝置。該處理器與無線通信邏輯連接以管理由該裝置發(fā)送和/或接收的無線電信息。
[0003]目前這樣的無線通信裝置可以被使用在許多無線產(chǎn)品,例如:無線鼠標(biāo)和鍵盤、游戲機(jī)的控制器、腳踏車速度計(jì)、遙控器、車庫門遙控器、無線揚(yáng)聲器等等。
[0004]在這樣一個(gè)裝置中的處理器可以在該裝置上運(yùn)行存儲(chǔ)在非易失存儲(chǔ)器的軟件(如:電子可擦寫可編程只讀存儲(chǔ)器(EEPROM)或閃存),從而根據(jù)預(yù)定的無線電協(xié)議,例如:藍(lán)芽(Bluetooth?)或無線個(gè)域網(wǎng)(ZigBee),來控制該無線通信邏輯。
[0005]這樣裝置的一個(gè)例子為
【申請(qǐng)人】的nRF51822片上無線電(rad1-on-a-chip)。其包括:無線電收發(fā)器以及具有256kB嵌入式閃存和16kB隨機(jī)存取存儲(chǔ)器的32位ARMtmCortexTMM0中央處理器(CPU)。它可以供應(yīng)給客戶已經(jīng)存入閃存的預(yù)編譯及鏈接的二進(jìn)制固件模塊,或者該固件模塊作為二進(jìn)制圖像供應(yīng)給客戶以加載至裝置上。該固件模塊可提供無線電的軟件控制以及其他功能。在運(yùn)送成品到終端用戶之前,客戶也可增加自己的軟件應(yīng)用到閃存上,作為單獨(dú)的,預(yù)鏈接的二進(jìn)制模塊并入集成無線電裝置(例如無線計(jì)算機(jī)鍵盤)。
[0006]因此
【申請(qǐng)人】了解到可能需要更改或更新固件模塊中的代碼(例如:增加新特征或修復(fù)錯(cuò)誤),在固件模塊以及軟件應(yīng)用加載至裝置之后。在某些情況中,當(dāng)裝置屬于終端用戶時(shí),可以理想的更改代碼。

【發(fā)明內(nèi)容】

[0007]本發(fā)明的目的是尋求提供一種有效的方法來促進(jìn)代碼更新。
[0008]從第一個(gè)方面,本發(fā)明提供一種更新集成電路無線電通信裝置的方法,其中:
[0009]該裝置包含處理裝置、存儲(chǔ)器及無線電通信邏輯;以及
[0010]該存儲(chǔ)器存儲(chǔ)(i)引導(dǎo)程序,(ii)在固件存儲(chǔ)區(qū)域的固件模塊,以及(i i i)在軟件應(yīng)用存儲(chǔ)區(qū)域的軟件應(yīng)用,該固件模塊包含用于根據(jù)預(yù)定的無線電協(xié)議來控制無線電通信邏輯的指令,以及該軟件應(yīng)用包括用于調(diào)用該固件模塊的無線電通信功能的指令;
[0011]該方法包含:
[0012]該處理裝置執(zhí)行來自該引導(dǎo)程序或該固件模塊的指令用于使用該無線電通信邏輯來接收新的固件模塊,以及執(zhí)行來自該引導(dǎo)程序或該固件模塊的指令用于儲(chǔ)存該新固件模塊到該軟件應(yīng)用存儲(chǔ)區(qū)域,使得該軟件應(yīng)用的至少一部分被該新固件模塊所重寫;以及
[0013]該處理裝置執(zhí)行來自該引導(dǎo)程序的指令用于從該軟件應(yīng)用存儲(chǔ)區(qū)域移動(dòng)或復(fù)制該新固件模塊到該固件存儲(chǔ)區(qū)域。
[0014]從第二個(gè)方面,本發(fā)明提供一種集成電路無線電通信裝置,包含:
[0015]處理裝置;
[0016]存儲(chǔ)器;以及
[0017]無線電通信邏輯,
[0018]其中:
[0019]該存儲(chǔ)器存儲(chǔ)(i)引導(dǎo)程序,(ii)在固體存儲(chǔ)區(qū)域的固件模塊,以及(i i i)在軟件應(yīng)用存儲(chǔ)區(qū)域的軟件應(yīng)用,該固件模塊包括用于根據(jù)預(yù)定的無線電協(xié)議來控制該無線電通信邏輯的指令,以及該軟件應(yīng)用包括用于調(diào)用該固件模塊的無線電通信功能的指令;
[0020]該引導(dǎo)程序或該固件模塊包含用于使用該無線電通信邏輯來接收新的固件模塊的指令,以及該引導(dǎo)程序或固件模塊包含用于儲(chǔ)存該新的固件模塊到該軟件應(yīng)用存儲(chǔ)區(qū)域,使得該軟體應(yīng)用的至少一部分被該新的固件模塊所重寫;以及
[0021]該引導(dǎo)程包含用于從該軟件應(yīng)用存儲(chǔ)區(qū)域移動(dòng)或復(fù)制該新的固件模塊到該固件存儲(chǔ)區(qū)域的指令。
[0022]因此,本領(lǐng)域的技術(shù)人員可以看出,根據(jù)本發(fā)明,一種集成電路無線電通信裝置可使用現(xiàn)有的固件模塊通過無線電接收新的固件模塊,以及在新的固件模塊更新或取代舊的固件模塊之前,可使用軟件應(yīng)用存儲(chǔ)區(qū)域作為新的固件模塊的暫時(shí)儲(chǔ)存器。以這種方式,就不需要保留專用的存儲(chǔ)器區(qū)域來接收新的固件模塊;這是需要的,因?yàn)檩^大的存儲(chǔ)器的要求將會(huì)增加該裝置的尺寸及成本。此更新還可由終端用戶方便地執(zhí)行,因?yàn)榭梢詿o線方式進(jìn)行,不需要將該無線電裝置通過電纜連接到主機(jī)計(jì)算裝置。
[0023]在一組優(yōu)選實(shí)施例中,該引導(dǎo)程序或該新的固件模塊包含用于使用該無線電通信邏輯來接收新的軟件應(yīng)用的指令,以及該引導(dǎo)程序或新的固件模塊包含用于儲(chǔ)存該新的軟件應(yīng)用到該軟件應(yīng)用存儲(chǔ)區(qū)域指令。當(dāng)新的軟件應(yīng)用被接收時(shí)如果舊固件模塊的復(fù)本保留在該軟件應(yīng)用存儲(chǔ)區(qū)域中,優(yōu)選地,該舊固件模塊的至少一部分被該新軟件應(yīng)用所重寫。該新的軟件應(yīng)用也許可與舊軟件應(yīng)用相同,或者可以包含至少一些差異,例如是新的代碼或刪除的代碼。
[0024]當(dāng)儲(chǔ)存在該軟件應(yīng)用存儲(chǔ)區(qū)域時(shí),該新的固件模塊或許會(huì)完全重寫該舊軟件應(yīng)用。例如,當(dāng)新的固件模塊大于該軟件應(yīng)用時(shí),可以是這種情況。
[0025]該存儲(chǔ)器包含任一或多種:只讀存儲(chǔ)器、非易失存儲(chǔ)器、以及揮發(fā)性存儲(chǔ)器。在某些實(shí)施例中,包含或包括非易失讀寫存儲(chǔ)器,例如電子可擦寫可編程只讀存儲(chǔ)器、閃存(例如NOR類型閃存),或任何其他適合的技術(shù)。該固件存儲(chǔ)器區(qū)域和/或該軟件應(yīng)用存儲(chǔ)區(qū)域優(yōu)選地每個(gè)包含或包括非易失讀寫存儲(chǔ)器。該存儲(chǔ)器優(yōu)選地允許隨機(jī)存取使得代碼可以直接從存儲(chǔ)器執(zhí)行(盡管這不是必須的)。該處理裝置優(yōu)選地在固件模塊和/或在軟件應(yīng)用中直接執(zhí)行來自存儲(chǔ)器的指令,可能通過一個(gè)處理器高速緩存,但不需要先復(fù)制整個(gè)固件模塊或軟件應(yīng)用至隨機(jī)存取存儲(chǔ)器。該存儲(chǔ)器可包含可單獨(dú)擦除的頁面。該存儲(chǔ)器的非易失部分或許不能在比頁面更細(xì)的比例下被擦除,例如:沒有在一個(gè)單獨(dú)的位、字節(jié)或字級(jí)。擦除在這里的意思為重設(shè)存儲(chǔ)器內(nèi)容為默認(rèn)狀態(tài)(通常是全為二進(jìn)制“I”或全為二進(jìn)制“O”),由此,該單獨(dú)位元或字節(jié)的狀態(tài)可以在寫入操作時(shí)改變。
[0026]取決于存儲(chǔ)器類型,重寫可以包含在寫入操作之執(zhí)行擦除操作,或作為單一操作執(zhí)行。
[0027]該裝置優(yōu)選地還包含揮發(fā)性存儲(chǔ)器,例如隨機(jī)存取存儲(chǔ)器(RAM)。然而在優(yōu)選實(shí)施例中,隨機(jī)存取存儲(chǔ)器的數(shù)量或可用的隨機(jī)存取存儲(chǔ)器數(shù)量小于該軟件應(yīng)用存儲(chǔ)區(qū)域。該新的固件模塊通常大于該隨機(jī)存取存儲(chǔ)器或可用的隨機(jī)取存儲(chǔ)器。儲(chǔ)存該新的固件模塊至該軟件應(yīng)用存儲(chǔ)區(qū)域優(yōu)選地與接收該新的固件模塊在時(shí)間上重疊。
[0028]該固件模塊優(yōu)選地占據(jù)單獨(dú),連續(xù)范圍的存儲(chǔ)器地址,然而這不是必要的,且該固件存儲(chǔ)區(qū)域包含兩個(gè)或多個(gè)不連續(xù)子區(qū)域。類似的,該軟件應(yīng)用存儲(chǔ)區(qū)域優(yōu)選地占據(jù)單獨(dú),連續(xù)范圍的存儲(chǔ)器地址,然而這不是必要的,且該軟件應(yīng)用存儲(chǔ)區(qū)域可包含兩個(gè)或多個(gè)不連續(xù)子區(qū)域。該固件存儲(chǔ)區(qū)域優(yōu)選地與軟件應(yīng)用存儲(chǔ)區(qū)域不同(即不重疊)。
[0029]該軟件應(yīng)用優(yōu)選地位于預(yù)定的軟件-應(yīng)用存儲(chǔ)地址(即一些或全部軟件應(yīng)用占據(jù)一個(gè)范圍的存儲(chǔ)器地址,從預(yù)定的存儲(chǔ)器地址延伸)。此預(yù)定地址可提供給軟件應(yīng)用的開發(fā)者,當(dāng)鏈接和/或載入該軟件應(yīng)用至該裝置時(shí)使用。其或許會(huì)被該固件模塊使用,例如:轉(zhuǎn)送中斷至該軟件應(yīng)用。
[0030]當(dāng)被寫入到軟件應(yīng)用存儲(chǔ)區(qū)域時(shí),該新的固件模塊優(yōu)選地儲(chǔ)存于或近似于該相同的預(yù)定軟件應(yīng)用存儲(chǔ)地址(即一些或全部新的固件模塊占據(jù)一個(gè)范圍的存儲(chǔ)器地址,從該軟件應(yīng)用存儲(chǔ)器地址延伸)。通過確保與重寫軟件應(yīng)用的最大重疊而提供一個(gè)特別有效的存儲(chǔ)器的使用。
[0031]該引導(dǎo)程序或新的固件模塊優(yōu)選地包含用于寫入新軟件應(yīng)用至該預(yù)定的軟件應(yīng)用存儲(chǔ)器地址的指令。
[0032]該(舊)固件模塊優(yōu)選地位于預(yù)定的固件存儲(chǔ)地址(即一些或全部該固件模塊占據(jù)一個(gè)范圍的存儲(chǔ)器地址,從該預(yù)定的固體存儲(chǔ)地址延伸)。該新固件模塊優(yōu)選地移動(dòng)或復(fù)制至位于相同的預(yù)定固體存儲(chǔ)器地址(即一些或全部新固件模塊占據(jù)一個(gè)范圍的存儲(chǔ)器地址,從該固體存儲(chǔ)器地址延伸)。每一固件模塊及/或軟件應(yīng)用可以包含數(shù)據(jù)以及指令,每一個(gè)可以包含中斷向量表。該新的固件模塊可以小于或大于舊固件模塊或彼此尺寸大致相同。
[0033]在一些實(shí)施例中,在該新的固件模塊移動(dòng)到固件存儲(chǔ)區(qū)域之后,一些或全部該軟件-應(yīng)用存儲(chǔ)區(qū)域可能被擦除。在其他實(shí)施例中,該新的固件模塊的復(fù)制本可以被留在該軟件-應(yīng)用存儲(chǔ)區(qū)域,用于在之后被擦除或重寫(例如,在裝置重置后,或當(dāng)新軟件應(yīng)用載入時(shí))。
[0034]該引導(dǎo)程序可以被儲(chǔ)存在只讀存儲(chǔ)器或讀寫存儲(chǔ)器中,例如閃存。和該固件模塊相比優(yōu)選是相對(duì)小的(例如:約十分之一的大小或更小)。在一組實(shí)施例中,該引導(dǎo)程序約4kB,然而該固件模塊大約SOkB或更多。該引導(dǎo)程序可以位于固件模塊區(qū)域,或在一不同的引導(dǎo)程序存儲(chǔ)區(qū)域。該引導(dǎo)程序優(yōu)選地單獨(dú)儲(chǔ)存在一或多個(gè)可擦寫存儲(chǔ)頁面,其不是用于儲(chǔ)存固件模塊。這能夠特別有效擦除或重寫舊固件模塊,而不會(huì)影響引導(dǎo)程序的代碼。
[0035]該處理步驟被設(shè)置為在電源接通或重置后執(zhí)行一個(gè)或更多引導(dǎo)程序的指令。該引導(dǎo)程序具有不同于更新裝置的功能,但在至少某些實(shí)施例中它不提供其他功能。在某些實(shí)施例中,該引導(dǎo)程序不含有用于直接使用該無線電通信邏輯的指令(即通過無線通信邏輯直接調(diào)用操作,不須通過執(zhí)行該固件模塊或該軟件應(yīng)用)。這樣可使該引導(dǎo)程序盡可能維持簡單和小,最小化該引導(dǎo)程序代碼發(fā)生錯(cuò)誤的機(jī)會(huì)。反之,當(dāng)無線電通信邏輯是必要時(shí),該引導(dǎo)程序可以轉(zhuǎn)移執(zhí)行舊固件模塊和/或新的固件模塊。在某些實(shí)施例中,該引導(dǎo)程序包含用于執(zhí)行分支到該固件模塊或該軟件應(yīng)用的指令(例如:在電源開啟或重置后),每當(dāng)有效的固件模塊和軟件應(yīng)用已經(jīng)載入至該裝置上。
[0036]該處理裝置可以采取任何形式,但在某些優(yōu)選實(shí)施例中,其包括或是ARMtm設(shè)計(jì)的處理器,例如來自ARMtm Cortex?-M家族的處理器(例如:Cortex?-M0)。該裝置可以包含多個(gè)處理器,例如兩個(gè)或更多,其可以任何適當(dāng)方式分享指令執(zhí)行。在某些實(shí)施例中,來自該固件模塊的指令被第一處理器執(zhí)行,以及來自軟件應(yīng)用的指令被不同于第一處理器的第二處理器執(zhí)行。無線電通信邏輯優(yōu)選地在實(shí)體上和/或邏輯上與該處理器分開。它可以包含模擬和/或數(shù)字電路。該裝置可以包含集成天線或可以包含用于芯片外天線的連接。該裝置可以包含用于連接多種外圍組件的連接,例如:電阻、電容、電源供應(yīng)器、放大器、無線電天線、晶體振邊器、傳感器、輸出裝置等。
[0037]在優(yōu)選實(shí)施例中,該固件模塊是預(yù)先鏈接的二進(jìn)制圖像。該軟件應(yīng)用也優(yōu)選的是預(yù)先鏈接的二進(jìn)制圖像。優(yōu)選地,該固件模塊與該軟件應(yīng)用沒有鏈接產(chǎn)生。在某些實(shí)施例中,通過該處理裝置執(zhí)行管理程序呼叫指令,該軟件應(yīng)用將轉(zhuǎn)移控制權(quán)給該固件模塊(例如:調(diào)用無線電功能),其生成由固件模塊處理的中斷。
[0038]該固件模塊與軟件應(yīng)用之間的分離使舊固件模塊能夠很容易的被新的固件模塊所重寫而不會(huì)毀損舊固件模塊。這并不直接的如果該固件模塊和軟件應(yīng)用被編譯和/或連接成單一二進(jìn)制圖像,因?yàn)檫@不太可能是僅含有軟件應(yīng)用代碼的易于識(shí)別的存儲(chǔ)器區(qū)域。這并不是說是不可能的(例如:通過小心地使用鏈接器指示),以及在設(shè)置中,不排除將該固件模塊完整地鏈接至該軟件應(yīng)用。
[0039]該裝置可以包含存儲(chǔ)器保護(hù)邏輯,其可以防止軟件-應(yīng)用存儲(chǔ)器區(qū)域中的代碼直接存取(讀取和/或?qū)懭?,?或執(zhí)行)在該固件存儲(chǔ)區(qū)域的地址。
[0040]在某些實(shí)施例中,該軟件應(yīng)用包含用于使該處理器執(zhí)行在固件模塊中的指令的指令,以使用該無線電通信邏輯來接收新的固件模塊。該軟件應(yīng)用可以直接轉(zhuǎn)移控制權(quán)給該固件模塊(例如:經(jīng)由系統(tǒng)呼叫)或可以移轉(zhuǎn)控制權(quán)給該引導(dǎo)程序,其可以依次調(diào)用該所需固件模塊的功能或多個(gè)功能。這允許該軟件應(yīng)用決定是否或何時(shí)啟動(dòng)固件更新,例如:響應(yīng)來自人類用戶的信號(hào),或響應(yīng)來自例如智能型手機(jī)的遠(yuǎn)程裝置通過無線電所接收的信息。
[0041]該軟件應(yīng)用可以包含用于傳遞信息到該引導(dǎo)程序或該固件模塊的指令(例如:作為一個(gè)或更多功能參數(shù)),其允許該裝置重新建立和遠(yuǎn)程裝置的無線電鏈接,例如,如果當(dāng)接收新的固件模塊時(shí)無線電通信的問題,或該裝置意外重置(例如由于電源故障)。此信息包含鏈結(jié)信息,如任何一個(gè)或更多的裝置地址、無線電頻道、驗(yàn)證信息、以及加密信息。這些信息是重要的,因?yàn)樵撥浖?yīng)用可以開始被重寫(且不再是可執(zhí)行的),當(dāng)該新的固件模塊開始被該裝置接收時(shí)。該引導(dǎo)程序可以儲(chǔ)存鏈結(jié)信息以及使用它來接收該新軟件應(yīng)用,或舊固件模塊可使得鏈結(jié)信息用于新的固件模塊,例如:將其儲(chǔ)存到預(yù)定的存儲(chǔ)器地址。
[0042]該引導(dǎo)程序或固件模塊優(yōu)選地包括用于檢查新的固件模塊已經(jīng)被正確接收和/或正確儲(chǔ)存在軟件應(yīng)用存儲(chǔ)區(qū)域的指令。這包含驗(yàn)證該新的固件模塊的校驗(yàn)和(checksum)或驗(yàn)證加密簽章。新的固件模塊的認(rèn)證信息,例如校驗(yàn)和或數(shù)字簽名,可以由遠(yuǎn)程裝置提供給該裝置,例如:伴隨新的固件模塊或嵌入新的固件模塊。該引導(dǎo)程序或新的固件模塊可包含用于當(dāng)檢查錯(cuò)誤時(shí)使用該無線電通信邏輯來發(fā)送信號(hào)至遠(yuǎn)程裝置。它可以要求該遠(yuǎn)程裝置重新傳送新的固件模塊。
[0043]一旦新的固件模塊已經(jīng)正確儲(chǔ)存,舊固件模塊可以返回或轉(zhuǎn)移控制權(quán)給該引導(dǎo)程序。這可以由直接分支、或由觸發(fā)中斷、或使該裝置重置、或任何其他合適機(jī)制來達(dá)成。
[0044]該引導(dǎo)程序可以擦除舊固件模塊(例如:通過擦除該全部固件存儲(chǔ)區(qū)域),然后從該軟件應(yīng)用存儲(chǔ)區(qū)域讀取新的固件模塊并將之寫入該固件存儲(chǔ)區(qū)域。它隨后可以轉(zhuǎn)移控制權(quán)給新的固件模塊(在接收新軟件應(yīng)用之前或之后)。
[0045]如果新軟件應(yīng)用隨后被接收,在該引導(dǎo)程序或新的固件模塊的指令之下,它可以被直接寫入至軟件-應(yīng)用存儲(chǔ)區(qū)域。儲(chǔ)存該新軟件應(yīng)用到該軟件-應(yīng)用區(qū)域優(yōu)選地與該新軟件應(yīng)用的接收在時(shí)間上重疊。該引導(dǎo)程序或新的固件模塊優(yōu)選地包含用于檢查新軟件應(yīng)用已經(jīng)被正確接收和/或正確儲(chǔ)存在該軟件應(yīng)用存儲(chǔ)區(qū)域的指令。這包含驗(yàn)證該軟體應(yīng)用的校驗(yàn)和或加密簽章。該引導(dǎo)程序或固件模塊可包含用于在檢查錯(cuò)誤時(shí)使用該無線電通信邏輯發(fā)送信號(hào)至遠(yuǎn)程裝置的指令。它可以要求該遠(yuǎn)程裝置重新傳送新軟件應(yīng)用。
[0046]新軟件應(yīng)用可以作為新的固件模塊在同一個(gè)無線電通信對(duì)會(huì)話(sess1n)中被接收??蛇x的,新軟件應(yīng)用可能無法被接收直至稍后的無線電通信會(huì)話,。它可以接收來自不同于該新固件模塊的遠(yuǎn)程裝置。
[0047]在此所描述的任何方面或?qū)嵤├奶卣?,若適當(dāng)?shù)脑?,可?yīng)用到在此所描述的任何其它方面或?qū)嵤├?。?dāng)對(duì)不同實(shí)施例或?qū)嵤├M進(jìn)行參照時(shí),需要了解的是它們不必是獨(dú)特的,而可能重疊。
【附圖說明】
[0048]本發(fā)明的確定優(yōu)選實(shí)施例將僅通過示例描述,并參考附圖,其中:
[0049]圖1是本發(fā)明中微控制器實(shí)施例的示意圖。
[0050]圖2是微控制器架構(gòu)內(nèi)的主要軟件組件示意圖。
[0051]圖3是微控制器的存儲(chǔ)器圖的示意圖。
[0052]圖4是非易失存儲(chǔ)器的示意圖,顯示該微控制器更新的第一階段。
[0053]圖5是非易失存儲(chǔ)器的示意圖,顯示該微控制器更新的第二階段。
[0054]圖6是非易失存儲(chǔ)器之示意圖,顯示該微控制器更新的第三階段。
【具體實(shí)施方式】
[0055]圖1顯示集成電路微控制器I實(shí)施例,有時(shí)也被稱為片上無線電(rad1-on-a-chip)。它可以被合并入產(chǎn)品中,例如一無線心率監(jiān)測器。該微控制器I包含時(shí)鐘邏輯3,其可包含電阻電容振蕩器和/或可以接收來自芯片外晶體振蕩器的輸入(未圖示)、電源管理電路5、處理器7 (例如:ARMtm Cortex?-M0)、存儲(chǔ)器保護(hù)邏輯9、隨機(jī)存取存儲(chǔ)器11、非揮發(fā)閃存13、一個(gè)或更多外圍設(shè)備15、無線電通信邏輯17、以及輸入/輸出電路19。
[0056]該處理器7、隨機(jī)存取存儲(chǔ)器(RAM)Il以及閃存13以常規(guī)方式互連,例如使用線路和總線(未圖示)。該存儲(chǔ)器保護(hù)邏輯9設(shè)置使得從該處理器7截取指令到該隨機(jī)存取存儲(chǔ)器11和閃存13。當(dāng)安裝在產(chǎn)品中時(shí),該微處理器I可連接到多個(gè)外圍組件,例如電源供應(yīng)器、無線電天線、晶體振蕩器、電容、傳感器、音頻/視頻輸出裝置等(未圖示)。
[0057]圖2顯示軟件架構(gòu)的主要組件。包含選用的硬件抽象層21,例如ARMtmCortex?微控制器軟件接口標(biāo)準(zhǔn),引導(dǎo)程序22、固件模塊23、驅(qū)動(dòng)器25、以及軟件應(yīng)用27。該驅(qū)動(dòng)器25可以用于該軟件應(yīng)用27。
[0058]該引導(dǎo)程序22是位于該閃存13的小二進(jìn)制應(yīng)用。它包含用于管理無線軟件更新的指令。該引導(dǎo)程序22是在全部重置后的進(jìn)入點(diǎn)。通常它直接移轉(zhuǎn)控制權(quán)給該固件模塊23,除非正在進(jìn)行更新。
[0059]該固件模塊23是一包含有多個(gè)嵌入式軟件區(qū)塊的鏈接二進(jìn)制應(yīng)用。無線電協(xié)議區(qū)塊31實(shí)現(xiàn)一個(gè)或多個(gè)無線協(xié)議堆桟,例如藍(lán)牙低能量(Bluetooth Low Energy)。庫35提供共享的硬件資源管理和功能例如隨機(jī)數(shù)產(chǎn)生、配置中斷和優(yōu)先權(quán)、電源管理(例如:啟動(dòng)和禁止外圍設(shè)備)、加密功能等。固件管理程序37支持啟動(dòng)和禁止該固件模塊,以及啟動(dòng)和禁止該無線協(xié)議堆棧。該固件模塊23擁有該系統(tǒng)向量表。
[0060]用于該固件模塊23的應(yīng)用程序界面(API)29允許該軟件應(yīng)用27調(diào)用該固件模塊23中的功能。它使用信號(hào)管理程序呼叫指令從該軟件應(yīng)用27移轉(zhuǎn)控制權(quán)給該固件模塊23。這些會(huì)造成處理中斷可在該固件模塊23中被處理。該固件體模塊23可以使用軟件中斷來傳達(dá)事件給該軟件應(yīng)用27。
[0061]該軟件應(yīng)用27可以直接存取該微控制器I硬件,或經(jīng)由硬件抽象層21,例如通過特定應(yīng)用驅(qū)動(dòng)器25,此外能夠使用該固件模塊23來間接使用該硬件。
[0062]圖3顯示在該固件模塊23以及該軟件應(yīng)用27(包含任何特定應(yīng)用驅(qū)動(dòng)器25)之間如何共享RAM 11以及閃存13。當(dāng)使用ARMtm Cortex?-M0處理器7,該閃存13指定地址從O(0x0000 0000)向上,到程序存儲(chǔ)器容量(SizeOfProgMem),以及該RAM 11指定地址從0x2000 0000向上到(0x2000 0000+RAM容量(SizeOfRAM))。不同的地址值也當(dāng)然可以在其他實(shí)施例中使用。
[0063 ] 該閃存13包含在地址CLENRO (代碼長度區(qū)域O)任一側(cè)的兩個(gè)不同區(qū)域。在地址O和CLENRO之間,區(qū)域O為該引導(dǎo)程序22和該固件模塊23所在的位置。該固體模塊的中斷向量表儲(chǔ)存在地址O ο從地址CLENRO向上延伸,區(qū)域I為該軟件應(yīng)用27以及任何應(yīng)用數(shù)據(jù)所在的位置。它也有一中斷向量表,位于地址CLENRO用于接收從該固件模塊23所轉(zhuǎn)發(fā)的中斷(以及可能從該引導(dǎo)程序22)。應(yīng)當(dāng)理解的是,該裝置I可以有其他非揮發(fā)存儲(chǔ)器(未圖示),其可用于其他目的,例如儲(chǔ)存組態(tài)信息或標(biāo)記。
[0064]該RAM 11類似地具有區(qū)域O,從基地址0x2000 000到RLENRO,以及區(qū)域I,從地址RLENRO向上延伸。RAM區(qū)域O提供數(shù)據(jù)儲(chǔ)存給該引導(dǎo)程序22和該固件模塊23,而區(qū)域I提供數(shù)據(jù)儲(chǔ)存給該軟件應(yīng)用27。呼叫堆棧在該固件模塊23和該軟件應(yīng)用27之間分享,并向下發(fā)展,例如從地址0x2000 0000+序存儲(chǔ)器容量(SizeOfRAM)。分配給該呼叫堆棧的存儲(chǔ)器必須足夠大以符合該軟件應(yīng)用27和該固件模塊23的需求。該預(yù)定的分享存儲(chǔ)器地址可以在該RAM11的區(qū)域I,或位在該RAM 11的其他區(qū)域,區(qū)域O跟區(qū)域I之外。
[0065]該存儲(chǔ)器保護(hù)邏輯9設(shè)置為截取由該處理器7到該閃存13及該隨機(jī)存取存儲(chǔ)器11的所有存儲(chǔ)器存取請(qǐng)求(例如:讀取請(qǐng)求)。它決定該存取請(qǐng)求指令的來源(例如該請(qǐng)求是否來自該固件模塊23或該軟件應(yīng)用27)。它也存取存儲(chǔ)器保護(hù)組態(tài)數(shù)據(jù)(例如儲(chǔ)存在一個(gè)或多個(gè)專用寄存器),其對(duì)于各種來源指定各自的存取許可,以及允許或拒絕相應(yīng)的存取請(qǐng)求。
[0066]在本發(fā)明一些優(yōu)選實(shí)施例中,該軟件應(yīng)用27被拒絕讀取和/或?qū)懭氪嫒≈灵W存區(qū)域O和RAM區(qū)域O。這機(jī)密保護(hù)該固件模塊23且可以防止由該軟件應(yīng)用27無意或惡意寫入至分配給該固件模塊23的存儲(chǔ)器地址,從而增加穩(wěn)定性及安全性。該軟件應(yīng)用閃存區(qū)域I也可以防止讀取存取,例如,防止經(jīng)由外部調(diào)試接口的回讀。
[0067]圖4至圖6顯示在該裝置I上的該固件模塊和該軟件應(yīng)用的更新。掛鎖符號(hào)表示該存儲(chǔ)器保護(hù)邏輯9已對(duì)存儲(chǔ)器區(qū)域?qū)嵤┠撤N程度的存取保護(hù)。
[0068]該軟件應(yīng)用27通過呼叫在該引導(dǎo)程序22的更新功能來啟動(dòng)該更新過程。該軟件應(yīng)用27傳送遠(yuǎn)程對(duì)等裝置的無線電-協(xié)議鏈結(jié)信息給該引導(dǎo)程序22。舉例來說,該對(duì)等裝置可以是智能手機(jī)或筆記本電腦。在斷線的情況下,該鏈結(jié)信息可以被該微控制器I使用以重新連接到該對(duì)等裝置。該引導(dǎo)程序22或該軟件應(yīng)用27接著移轉(zhuǎn)控制權(quán)給該固件模塊23(例如使用系統(tǒng)呼叫以調(diào)用該固件模塊23中的更新操作)。一旦該固件模塊23具有控制權(quán),它使用該無線電通信邏輯17來請(qǐng)求來自該對(duì)等裝置的該新的固件模塊40。
[0069]如圖4所示,該固體模塊23開始接收該新的固件模塊40。它可能會(huì)暫時(shí)緩沖一些在該RAM中的接收數(shù)據(jù),但它也開始寫入該新的固件模塊40至該閃存13的區(qū)域I,其先前保持其所接收的該軟件應(yīng)用27。該軟件應(yīng)用27(包含該應(yīng)用向量表)可以在寫入開始之前被全部擦除,或它可以在需要的時(shí)候擦除頁面。
[0070]一旦該整個(gè)新的固件模塊40已經(jīng)被接收以及寫入至該閃存13,該舊固件模塊23對(duì)該新的固件模塊40驗(yàn)證接收自該對(duì)等裝置的校驗(yàn)和。如果該校驗(yàn)和不正確,該舊固件模塊23請(qǐng)求通過對(duì)等裝置重新傳輸該新的固件模塊40。
[0071]如果微控制器I在接收該新的固件模塊40的時(shí)候被意外重置(例如:由于停電),執(zhí)行將會(huì)在該引導(dǎo)程序22中回復(fù),其將指示該固件模塊23從該對(duì)等裝置再次請(qǐng)求該新的固件模塊40。
[0072]一旦該新的固件模塊40的校驗(yàn)和正確,該固件模塊23將移轉(zhuǎn)控制權(quán)給該引導(dǎo)程序
22。該引導(dǎo)程序22從該遠(yuǎn)程對(duì)等裝置斷開以及從該閃存13的區(qū)域O擦除該舊固件模塊23(以及其向量表)。它當(dāng)然不會(huì)擦除在區(qū)域O的該引導(dǎo)程序22代碼。為了促進(jìn)此設(shè)置,該引導(dǎo)程序22優(yōu)選地儲(chǔ)存在它自己的閃存頁面或多個(gè)頁面,與區(qū)域O的其余部分分開,因此它直接擦除全部的區(qū)域0,除了含有該引導(dǎo)程序22的頁面或多個(gè)頁面。
[0073]如圖5所示,該引導(dǎo)程序22接著從區(qū)域I復(fù)制該新的固件模塊40到區(qū)域O的相關(guān)地址。
[0074]該引導(dǎo)程序22接著調(diào)用在該新的固件模塊40中的功能(例如經(jīng)由系統(tǒng)呼叫),以指示它由無線電重新連接至該遠(yuǎn)程對(duì)等裝置,以及請(qǐng)求傳送新軟件應(yīng)用42。該引導(dǎo)程序22傳送無線電鏈結(jié)信息到該新的固件模塊40以使之能夠做到此事。
[0075]如圖6所示,該新的固件模塊40開始接收該新軟件應(yīng)用42。它可能會(huì)在該RAM11中暫時(shí)緩沖一些接收的數(shù)據(jù),但它也開始將其所接收到的該新軟件應(yīng)用42(包含該應(yīng)用向量表)寫人至該閃存13的區(qū)域I。區(qū)域I在寫入開始之前可能被全部擦除,或是它可以在需要的時(shí)候擦除頁面。在完成時(shí),該引導(dǎo)程序22對(duì)該新軟件應(yīng)用42驗(yàn)證接收自該對(duì)等裝置的校驗(yàn)和。如果該校驗(yàn)和不正確,該引導(dǎo)程序22請(qǐng)求由該對(duì)等裝置重新傳輸該新軟件應(yīng)用42。
[0076]如果微控制器I在接收該新軟件應(yīng)用42的時(shí)候意外被重置(例如由于停電),執(zhí)行將會(huì)在該引導(dǎo)程序22中回復(fù),其將指示該新的固件模塊40從該對(duì)等裝置再次請(qǐng)求該新軟件應(yīng)用42。
[0077]一旦該新軟件應(yīng)用42的校驗(yàn)和正確,該引導(dǎo)程序22移轉(zhuǎn)控制權(quán)給該新軟件應(yīng)用42,因此該微處理器I可以開始以常態(tài)方式使用該新軟件應(yīng)用42以及該新的固件模塊40。
[0078]在這種配置中,該引導(dǎo)程序22負(fù)責(zé)調(diào)用在舊和新的固體模塊之間的適合的功能以進(jìn)行更新,包括依需要傳送鏈結(jié)信息以及從意外重置中恢復(fù)。
[0079]在一組可選的實(shí)施例中,該舊固件模塊23可以負(fù)責(zé)保存鏈結(jié)信息以及記憶更新過程的狀態(tài)。該舊固件模塊23可以將該新的固件模塊40寫入至區(qū)域I以及驗(yàn)證它已經(jīng)被正確接收。該引導(dǎo)程序22在更新階段主要或唯一的任務(wù)僅是將該新的固件模塊40從區(qū)域I復(fù)制到區(qū)域O。如果該微控制器I遇到意外重置(例如停電),在該舊軟件應(yīng)用27完全由該新的固件模塊40重寫之前,執(zhí)行將會(huì)在該引導(dǎo)程序22中回復(fù),它僅轉(zhuǎn)移控制權(quán)給該舊固件模塊23。該舊固件模塊23維持狀態(tài),因此可以知道它必須再次開始接收該新的固件模塊40,以及使用儲(chǔ)存在存儲(chǔ)器的鏈結(jié)信息以再次請(qǐng)求該新的固件模塊40。該舊固件模塊23將該鏈結(jié)信息寫入至適當(dāng)?shù)拇鎯?chǔ)器區(qū)域(例如在隨機(jī)存取存儲(chǔ)器或優(yōu)選在閃存中的永久數(shù)據(jù)存儲(chǔ)區(qū)),因此它可以由該新的固件模塊40所存取。
[0080]一旦該新的固件模塊40已經(jīng)由該引導(dǎo)程序22所正確接收以及復(fù)制到區(qū)域0,該引導(dǎo)程序22移轉(zhuǎn)控制權(quán)至新的固件模塊40。新的固件模塊40被設(shè)置為當(dāng)其第一時(shí)間開始時(shí)了解,以及通過鏈接到該對(duì)等裝置和接收該新軟件應(yīng)用42而響應(yīng)。該舊固件模塊23必須先前已經(jīng)將該鏈結(jié)信息寫入至適當(dāng)存儲(chǔ)器區(qū)域(例如在隨機(jī)存取存儲(chǔ)器或優(yōu)選地在閃存的永久數(shù)據(jù)存儲(chǔ)區(qū)),因此該新的固件模塊40能夠存取它以重新連接至該對(duì)等裝置。
[0081]可選的,該新的固件模塊40可以與相同的遠(yuǎn)端裝置或與不同的遠(yuǎn)程裝置建立新的鏈結(jié)信息,據(jù)以接收該新軟件應(yīng)用42。這可能會(huì)在該新的固件模塊40已經(jīng)被接收之后立即發(fā)生,或在時(shí)間延遲之后發(fā)生。
【主權(quán)項(xiàng)】
1.一種更新集成電路無線電通信裝置的方法,其中: 該裝置包含處理裝置、存儲(chǔ)器、及無線電通信邏輯;以及 該存儲(chǔ)器存儲(chǔ)(i)引導(dǎo)程序,(ii)在固件存儲(chǔ)區(qū)域的固件模塊,以及(iii)在軟件-應(yīng)用存儲(chǔ)區(qū)域的軟件應(yīng)用,該固件模塊包含用于根據(jù)預(yù)定的無線電協(xié)議來控制該無線電通信邏輯的指令,以及該軟件應(yīng)用包括用于調(diào)用該固件模塊的無線電-通信功能的指令; 該方法包含: 該處理裝置執(zhí)行來自該引導(dǎo)程序或該固件模塊的指令用于使用該無線電通信邏輯來接收新的固件模塊,以及執(zhí)行來自該引導(dǎo)程序或該固件模塊的指令用于存儲(chǔ)該新的固件模塊到軟件-應(yīng)用存儲(chǔ)區(qū)域,使得該軟件應(yīng)用至少的一部分被該新的固件模塊所重寫;以及 該處理裝置執(zhí)行來自該引導(dǎo)程序的指令用于從該軟件-應(yīng)用存儲(chǔ)區(qū)域移動(dòng)或復(fù)制該新的固件模塊到該固件存儲(chǔ)區(qū)域。2.根據(jù)權(quán)利要求1所述的方法,其中該軟件應(yīng)用完全被該新的固件模塊所重寫。3.根據(jù)權(quán)利要求1或2所述的方法,其中該引導(dǎo)程序或該新的固件模塊包含用于使用該無線電通信邏輯來接收新軟件應(yīng)用的指令,以及該引導(dǎo)程序或該新的固件模塊包含用于存儲(chǔ)該新軟件應(yīng)用到該軟件-應(yīng)用存儲(chǔ)區(qū)域的指令。4.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,其中該固件存儲(chǔ)區(qū)域以及該軟件-應(yīng)用存儲(chǔ)區(qū)域每個(gè)包含非易失,讀寫存儲(chǔ)器。5.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,其中存儲(chǔ)該新的固件模塊到該軟件-應(yīng)用存儲(chǔ)區(qū)域與接收該新的固件模塊在時(shí)間上是重疊的。6.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,其中該軟件應(yīng)用是位于預(yù)定的軟件-應(yīng)用存儲(chǔ)地址,以及其中該方法包含存儲(chǔ)該新的固件模塊到該預(yù)定的軟件-應(yīng)用存儲(chǔ)地址。7.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,其中該引導(dǎo)程序是存儲(chǔ)在一個(gè)或多個(gè)獨(dú)立可擦寫存儲(chǔ)頁面。8.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,其中該引導(dǎo)程序不含用于直接使用該無線電通信邏輯的指令。9.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,其中該固件模塊是一預(yù)先鏈接的二進(jìn)制圖像以及其中該軟件應(yīng)用是預(yù)先鏈接的二進(jìn)制圖像。10.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,其中該軟件應(yīng)用包含用于使處理器執(zhí)行該固件模塊中的指令的指令,據(jù)以使用該無線電通信邏輯來接收該新的固件模塊。11.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,其中從遠(yuǎn)程裝置接收新的固件模塊,該方法進(jìn)一步包括,如果失去連接,該軟件應(yīng)用傳遞信息到該引導(dǎo)程序或該固件模塊以和該遠(yuǎn)程裝置重新建立無線電連接。12.根據(jù)前述任一項(xiàng)權(quán)利要求所述的方法,包含該處理裝置執(zhí)行用于檢查該新的固件模塊已被正確地接收的指令。13.—種集成電路無線電通信裝置,包含: 處理裝置; 存儲(chǔ)器;以及 無線電通信邏輯, 其中,該存儲(chǔ)器存儲(chǔ)(i)引導(dǎo)程序,(ii)在固件存儲(chǔ)區(qū)域的固件模塊,以及(iii)在軟件-應(yīng)用存儲(chǔ)區(qū)域的軟件應(yīng)用,該固件模塊包括用于根據(jù)預(yù)定的無線電協(xié)議來控制該無線電通信邏輯的指令,以及該軟件應(yīng)用包括用于調(diào)用該固件模塊的無線電-通信功能的指令; 該引導(dǎo)程序或該固件模塊包含用于使用該無線電通信邏輯來接收新的固件模塊的指令,以及該引導(dǎo)程序或固件模塊包含用于存儲(chǔ)該新的固件模塊到該軟件-應(yīng)用存儲(chǔ)區(qū)域的指令,使得該軟件應(yīng)用的至少一部分被該新的固件模塊所重寫;以及 該引導(dǎo)程序包含用于從該軟件-應(yīng)用存儲(chǔ)區(qū)域移動(dòng)或復(fù)制該新的固件模塊到該固件存儲(chǔ)區(qū)域。14.根據(jù)權(quán)利要求13所述的裝置,其中該引導(dǎo)程序或該固件模塊包含用于使該新的固件模塊完全重寫該軟件應(yīng)用的指令。15.根據(jù)權(quán)利要求13或14所述的裝置,其中該引導(dǎo)程序或該新的固件模塊包含用于使用該無線電通信邏輯來接收新軟件應(yīng)用的指令,以及該引導(dǎo)程序或該新的固件模塊包含用于存儲(chǔ)該新軟件應(yīng)用到該軟件-應(yīng)用存儲(chǔ)區(qū)域的指令。16.根據(jù)權(quán)利要求13到15中任一項(xiàng)所述的裝置,其中該固件存儲(chǔ)區(qū)域以及該軟件-應(yīng)用存儲(chǔ)區(qū)域每個(gè)包含非易失,讀寫存儲(chǔ)器。17.根據(jù)權(quán)利要求13到16中任一項(xiàng)所述的裝置,其中在該引導(dǎo)程序和/或該固件模塊中的指令使得存儲(chǔ)該新的固件模塊到該軟件-應(yīng)用存儲(chǔ)區(qū)域與接收該新的固件模塊在時(shí)間上是重疊的。18.根據(jù)權(quán)利要求13到17中任一項(xiàng)所述的裝置,其中該軟件應(yīng)用位于預(yù)定的軟件-應(yīng)用存儲(chǔ)地址,以及其中該引導(dǎo)程序或該新的固件模塊包含用于存儲(chǔ)該新的固件模塊到該預(yù)定的軟件-應(yīng)用存儲(chǔ)地址的指令。19.根據(jù)權(quán)利要求13到18中任一項(xiàng)所述的裝置,其中該引導(dǎo)程序存儲(chǔ)到一個(gè)或多個(gè)獨(dú)立可擦寫存儲(chǔ)頁面。20.根據(jù)權(quán)利要求13到19中任一項(xiàng)所述的裝置,其中該引導(dǎo)程序不含有用于直接使用該無線電通信邏輯的指令。21.根據(jù)權(quán)利要求13到20中任一項(xiàng)所述的裝置,其中該固件模塊是預(yù)先鏈接的二進(jìn)制圖像以及其中該軟件應(yīng)用是預(yù)先鏈接的二進(jìn)制圖像。22.根據(jù)權(quán)利要求13到21中任一項(xiàng)所述的裝置,其中該軟件應(yīng)用包含用于使處理器執(zhí)行該固件模塊中的指令的指令,據(jù)以使用該無線電通信邏輯來接收該新的固件模塊。23.根據(jù)權(quán)利要求13到22中任一項(xiàng)所述的裝置,其中該引導(dǎo)程序或該固件模塊包含用于從遠(yuǎn)程裝置接收該新的固件模塊,以及其中如果失去鏈接,該軟件應(yīng)用包含用于傳遞信息到該引導(dǎo)程序或該固件模塊的指令以和該遠(yuǎn)程裝置重新建立無線電連接。24.根據(jù)權(quán)利要求13到23中任一項(xiàng)所述的裝置,其中該引導(dǎo)程序或該固件模塊包含用于檢查該新的固件模塊已被正確地接收的指令。
【文檔編號(hào)】G06F9/445GK105830021SQ201480069617
【公開日】2016年8月3日
【申請(qǐng)日】2014年11月26日
【發(fā)明人】馬丁·特韋達(dá)爾, 喬爾·大衛(wèi)·斯泰普爾頓
【申請(qǐng)人】北歐半導(dǎo)體公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1