• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    用于修改初始化計算設備所使用的固件的系統和方法技術方案

    技術編號:14276614 閱讀:147 留言:0更新日期:2016-12-24 19:08
    一種用于對只讀存儲器中的啟動序列打補丁的系統和方法。在可尋址存儲器中提供了補丁實例。補丁實例初始是空的。只讀存儲器包括用于動態地指向可尋址存儲器中的可尋址存儲器位置集合中識別出的位置的過程。此后,該過程返回到補丁實例之后的下一個后續指令。如期望修改,用一個或多個相應的補丁來填充該一個或多個補丁實例。通過將一個或多個補丁指示符插入到位于片上系統(SoC)在具體體現在固件中之后可能需要應用補丁的位置,來修改補丁序列。該補丁,當被定義時,至少被用經編碼的指令類型和地址來填充。相應地,以不多于三個字的方式來啟用補丁。

    【技術實現步驟摘要】
    【國外來華專利技術】相關申請本專利申請要求于2014年3月31日遞交的、名稱為“System and Method for Modifying Firmware Used to Initialize a Computing Device”(代理人案號No.141456P1)的美國臨時申請No.61/973,206的申請日的優先權和權益,以引用的方式將全部內容并入本文。
    技術介紹
    計算設備是無處不在的。一些計算設備是便攜式的,諸如移動電話、平板電腦和膝上型計算機。隨著這些便攜式計算設備的功能的增加,要求的計算或處理功率以及一般的支持這些功能的數據存儲容量也會增加。除了這些設備的主要功能,很多包括支持次要功能的元件。例如,蜂窩電話可以包括實現并支持蜂窩電話呼叫的主要功能和靜態照相機、視頻攝像機、全球定位系統(GPS)導航、網頁瀏覽、發送和接收電子郵件、發送和接收文本消息、即按即說能力等次要功能。很多這些便攜式設備都包括片上系統(SoC)以在特定設備上實現一個或多個主要和次要功能。SoC一般包括被嵌入到集成電路或芯片中的處理器,該集成電路或芯片耦合到局部總線。該SoC一般將包括硬件組件和其它處理器。該SoC,類似于諸如桌面型和服務器計算機之類的較大型計算設備,依賴于加電時的啟動序列或啟動代碼。該啟動序列是第一次向該SoC供電時該SoC執行的初始操作集合。該啟動代碼實現用于初始化該SoC的過程(即,引導程序)。出于快速訪問、低復雜度、空間效率、低開銷和安全性原因,該啟動代碼通常被存儲在只讀存儲器(ROM)中。該ROM,或者以其它方式被稱為掩模型或啟動ROM,使其代碼是硬連線的并且因此無法在稍后被重新編程。這允許更好的安全性以防對專有代碼的逆向工程和密碼攻擊。在典型的SoC設計過程中,在該SoC的其它部分已經完成之前,恰當地定義啟動ROM。電路結構的復雜度、特征集合、下一代市場趨勢、性能改進、已識別出的安全性缺陷和硅前驗證限制已經導致常規的啟動ROM設計僅有有限的適應性以實現該SoC的流片后的改變。在這些常規設計中,啟動ROM固件備用有一次性可編程熔斷器,該熔斷器可以使得在運行時的執行期間能夠替換指令或語句和數據。圖1包括示出了補丁在計算設備的示例性常規啟動處理器10中如何工作的原理示意圖。如圖所示,啟動處理器10包括啟動ROM 12、安全控制器14、一次性可編程熔斷器16和多路器邏輯18,該啟動ROM 12包括啟動代碼或代碼20。安全控制器14包括補丁區域15,其包括與相應的數據字段相關聯的固定數量的地址。在示例實施例中,該補丁區域15包括48個這樣的地址。安全控制器14還包括存儲器17。在打補丁之前,補丁區域15是空的,并且一次性可編程熔斷器16都是原封不動的。當需要補丁或改變時,一次性可編程熔斷器中的一個或多個一次性可編程熔斷器被修改以便產生開放電路條件。另外,一個或多個地址和相應的數據字段被修改以包括地址和數據信息。開放電路條件指導安全控制器14在原始啟動ROM數據的位置中插入打補丁后的地址和相應數據。多路器邏輯18可控地將啟動ROM數據或打補丁后的數據根據需要轉發給耦合到該啟動處理器10的處理器(未示出)。對于指令打補丁,通常的情況是無法就地進行打補丁或修改。也就是,需要擴展分支指令以便使用先前未使用的存儲器來添加替代指令或新的指令。此后,需要分支返回指令以便返回到原始啟動代碼。圖2包括示出了如何在圖1的常規啟動處理器10中實現補丁的原理示意圖。代碼20包括指令或語句序列。代碼20是由地址22和語句或指令24定義的。代碼地址以0x00000000開頭并且以代碼20中的最后一個指令或語句為結尾。原始的以及未修改的代碼20包括指令或語句A到XX。擴展分支指令或補丁30被插入到語句C和語句D之間。補丁地址32以0x10000000開頭并以完成該補丁30所需的最后一個指令或語句為結尾。每個補丁地址32與相應語句或指令34相關聯。如圖2中所示,在實現補丁30時消耗總共五個地址。第一個地址被消耗用于將跳轉或分支指令插入到代碼20中。額外兩個地址被補丁30中的新的指令所消耗。出于解釋說明的目的,OUT指令被描述為使用一個地址,但是實際上OUT指令消耗多于一個地址。額外一個地址被用于替換或恢復語句D,該語句D被跳轉或分支指令重寫了。第五個地址用于跳轉回代碼20中的下一個后續語句或指令。因此,五個地址被消耗用于在啟動代碼20中插入兩個新的指令。盡管有這樣的靈活性,復用地址和數據所需的總的管芯面積成本和額外的電路迫使一次性可編程熔斷器16僅有有限的量可用。此外,有限數量的可用一次性可編程熔斷器16必須與SoC中的其它一次性可編程熔斷器16需求共享。除了修復ROM代碼20中的程序錯誤(bug)所涉及的困難之外,向ROM代碼20添加新的特征也是很復雜的。這些額外的特征可能是系統設計者在ROM已經被編程并且被裝配在SoC內之后確定是期望的。因此,需要有改進的機制來安全地修改只讀存儲器中硬連線的啟動序列或其它代碼。
    技術實現思路
    公開了能夠使補丁應用到只讀存儲器(ROM)中存儲的啟動序列或其它指令序列的系統和方法的示例性實施例。通過在所述啟動序列中可能在所述SoC在固件中具體體現之后期望一個補丁的位置處插入補丁指示符,來修改原始啟動序列。任何數量的補丁指示符可以被插入到原始啟動序列中以便創建經修改的啟動序列。補丁實例初始是空的并且被存儲在對于控制器而言可訪問的可編程存儲器中,該控制器用于在處理器中加載指令和數據。所述ROM包括補丁處理邏輯,當由處理器執行時動態地指向由所述補丁指示符識別的補丁實例并且此后返回到所述啟動序列中的下一個后續指令。由于期望補丁,將指令類型編碼到該補丁的第一字中并且在該補丁的第二字中提供補丁地址。對于一些指令類型,用數據來填充第三字。用于對只讀存儲器(ROM)中存儲的指令序列打補丁的改進的系統的示例性實施例包括可編程只讀存儲器或PROM、ROM、隨機訪問存儲器(RAM)、控制器和處理器。該PROM提供可尋址存儲器位置集合。所述ROM中存儲有指令序列和補丁處理邏輯,該補丁處理邏輯被安排用于動態地指向所述PROM中的所述可尋址存儲器位置集合中識別出的(即,可尋址的)位置,并且返回到所述ROM中的所述指令序列。所述RAM經由總線耦合到所述PROM和ROM。所述控制器將指令序列和補丁處理邏輯從ROM加載到RAM。所述處理器經由總線耦合到所述RAM并且執行所述指令序列。當在所述指令序列中遇到補丁指示符時,所述處理器執行所述補丁處理邏輯。用于修改只讀存儲器中指令序列的方法的示例性實施例包括的步驟有:提供耦合到處理器的可尋址存儲器位置集合;提供耦合到所述處理器的一次性可編程熔斷器集合;提供耦合到所述處理器的只讀存儲器中的指令序列,以及啟用所述只讀存儲器中的補丁過程,所述補丁過程動態地指向所述可尋址存儲器位置集合中識別出的位置并返回到所述只讀存儲器中的所述指令序列,其中,當期望修改所述指令序列時,以所述一次性可編程熔斷器集合的方式的信息指導所述處理器執行來自補丁的至少一個指令。其上存儲有處理器指令的非臨時性處理器可讀介質的示例性實施例,當所述指令被執行時指導所述處理器執行功能,所述介質的示例性實施例包括的邏輯在由所述處理器執行時指導所本文檔來自技高網
    ...
    <a  title="用于修改初始化計算設備所使用的固件的系統和方法原文來自X技術">用于修改初始化計算設備所使用的固件的系統和方法</a>

    【技術保護點】
    一種用于修改只讀存儲器中的指令序列的方法,所述方法包括:提供耦合到處理器的可尋址存儲器位置集合;提供還耦合到所述處理器的一次性可編程熔斷器集合;提供耦合到所述處理器的只讀存儲器中的指令序列;以及啟用所述只讀存儲器中的補丁過程,所述補丁過程動態地指向在所述可尋址存儲器位置集合中識別出的位置并返回到所述只讀存儲器中的所述指令序列,其中,當期望修改所述指令序列時,所述一次性可編程熔斷器集合中的信息指導所述處理器執行來自補丁實例的至少一個指令。

    【技術特征摘要】
    【國外來華專利技術】2014.03.31 US 61/973,203;2014.06.17 US 14/307,4151.一種用于修改只讀存儲器中的指令序列的方法,所述方法包括:提供耦合到處理器的可尋址存儲器位置集合;提供還耦合到所述處理器的一次性可編程熔斷器集合;提供耦合到所述處理器的只讀存儲器中的指令序列;以及啟用所述只讀存儲器中的補丁過程,所述補丁過程動態地指向在所述可尋址存儲器位置集合中識別出的位置并返回到所述只讀存儲器中的所述指令序列,其中,當期望修改所述指令序列時,所述一次性可編程熔斷器集合中的信息指導所述處理器執行來自補丁實例的至少一個指令。2.如權利要求1所述的方法,還包括:在所述只讀存儲器中的所述指令序列中的期望位置處插入至少一個補丁指示符,其中,如由所述至少一個補丁指示符所定義的所述可尋址存儲器位置集合中的至少一個補丁實例在識別出針對所述只讀存儲器中的所述指令序列的修改之前包括空內容。3.如權利要求2所述的方法,其中,所述期望的位置定義了在所述指令序列在固件中具體體現之后所述指令序列中的有可能修改的位置。4.如權利要求2所述的方法,其中,在針對所述只讀存儲器中的所述指令序列的修改之后所述至少一個補丁實例至少包括指令類型和補丁地址。5.如權利要求4所述的方法,其中,所述指令類型是由代碼定義的。6.如權利要求4所述的方法,其中,所述補丁實例是以N比特的字的方式定義的,其中N是整數。7.如權利要求4所述的方法,其中,啟用所述只讀存儲器中的補丁過程包括只針對所述至少一個補丁指示符提供替換內容。8.如權利要求7所述的方法,其中,啟用所述只讀存儲器中的所述補丁過程包括執行用于整合所述指令序列在固件中具體體現之后期望的改變的補丁過程邏輯。9.如權利要求8所述的方法,其中,所述補丁過程邏輯指導處理器從不同于所述指令序列的源獲取地址,確定補丁數據在所述地址處是否可用,當補丁數據在所述地址處不可用時,返回到所述指令序列中的下一個后續指令,否則執行所述補丁數據中的至少一個指令并返回到所述指令序列中的所述下一個后續指令。10.如權利要求9所述的方法,其中,所述處理器被指導通過訪問所述一次性可編程熔斷器集合,來從不同于所述指令序列的所述源獲取所述地址以便認證并定義存儲所述補丁實例的可尋址位置。11.如權利要求4所述的方法,其中,所述補丁實例包括掩碼信息,并且是以不多于兩個N比特的字的方式來定義的,其中N是整數。12.一種用于對只讀存儲器中存儲的指令序列打補丁的系統,所述系統包括:可編程只讀存儲器,其提供可尋址存儲器位置集合;只讀存儲器,其具有存儲在其中的指令序列和補丁處理邏輯,所述補丁處理邏輯被安排為動態地指向在所述可編程只讀存儲器中所述可尋址存儲器位置集合中識別出的位置,并且返回到所述只讀存儲器中的所述指令序列;隨機訪問存儲器,其經由總線耦合到所述可編程只讀存儲器和所述只讀存儲器,所述隨機訪問存儲器被安排用于存儲所述指令序列和所述補丁處理邏輯;控制器,其用于將所述指令序列和所述補丁處理邏輯從所述只讀存儲器加載到所述隨機訪問存儲器;以及處理器,其經由所述總線耦合到所述隨機訪問存儲器,并且被配置為執行所述指令序列,其中,當在所述指令序列中遇到補丁指示符時,所述處理器執行所述補丁處理邏輯。13.如權利要求12所述的系統,其中,所述補丁指示符位于在所述指令序列在固件中具體體現之后所述指令序列中有可能需要修改的位置。14.如權利要求12所述的系統,其中,補丁實例存儲在所述可編程只讀存儲器中,所述補丁實例在識別出針對所述只讀存儲器中的所述指令序列的修改之前包括空內容。15....

    【專利技術屬性】
    技術研發人員:E·皮爾武D·P·阿里A·J·什里瓦斯塔瓦
    申請(專利權)人:高通股份有限公司
    類型:發明
    國別省市:美國;US

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 日韩人妻精品无码一区二区三区| 精品无码一区二区三区爱欲| 亚洲国产成人精品无码区花野真一| 国产精品无码无卡无需播放器 | av无码东京热亚洲男人的天堂| 国产三级无码内射在线看| 精品久久无码中文字幕| 国产成A人亚洲精V品无码| 亚洲&#228;v永久无码精品天堂久久 | 亚洲AV无码成人精品区蜜桃| 狠狠躁天天躁无码中文字幕图 | 免费无码黄动漫在线观看| 日韩精品真人荷官无码| 日韩精品无码永久免费网站| 激情无码亚洲一区二区三区| 亚洲av中文无码字幕色不卡| 日日摸夜夜添无码AVA片| 亚洲精品无码久久久久久久| 亚洲AV无码专区日韩| 黄色成人网站免费无码av| 老司机亚洲精品影院无码| 成人无码A区在线观看视频| 亚洲av无码专区在线播放| 亚洲AV无码一区二区三区国产| 久久人妻无码一区二区| 久久精品无码一区二区WWW| 亚洲AV无码久久寂寞少妇| 亚洲自偷自偷偷色无码中文 | 久久中文字幕无码一区二区| 日日麻批免费40分钟无码| 亚洲AV无码一区二区三区系列| 成人无码区免费A∨直播| 国产成人无码网站| 中文字幕丰满乱子伦无码专区| 无码AV一区二区三区无码| 精品一区二区三区无码免费直播 | 无码人妻AV一二区二区三区| 野花在线无码视频在线播放 | 变态SM天堂无码专区| 亚洲国产精品成人AV无码久久综合影院| 亚洲精品av无码喷奶水糖心|