處理系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供了一種處理系統(tǒng)及方法。該處理系統(tǒng)包括:處理單元;存儲器,適用于存儲用于處理器執(zhí)行的固件代碼和應(yīng)用程序代碼;以及存儲器訪問控制單元,適用于控制處理單元對存儲在存儲器中的固件代碼和應(yīng)用程序代碼的訪問。存儲器訪問控制單元適用于,當(dāng)使能對應(yīng)用程序代碼的訪問時不使能對固件代碼的訪問,以及當(dāng)不使能對應(yīng)用程序代碼的訪問時使能對固件代碼的訪問。
【專利說明】處理系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及處理系統(tǒng),特別是涉及控制處理系統(tǒng)的處理單元對處理系統(tǒng)存儲的固 件的訪問。
【背景技術(shù)】
[0002] 安全性對諸如微處理器的處理系統(tǒng)來說是重要考慮因素。例如,希望確保處理器 僅執(zhí)行由一段可執(zhí)行程序代碼(或等同的指令組,諸如腳本)描述的特定任務(wù)。然而,代碼 和/或代碼的執(zhí)行可能會受到攻擊。攻擊可能包括以下情況:
[0003] -未經(jīng)授權(quán)修改所存儲的程序代碼;
[0004] -在執(zhí)行期間修改代碼;
[0005] -代碼轉(zhuǎn)存(例如出于反向工程的目的讀取出代碼)
[0006] -未經(jīng)授權(quán)更改存儲器訪問權(quán)限;
[0007] -從數(shù)據(jù)段執(zhí)行未經(jīng)授權(quán)的代碼。
[0008] 固件,例如基本輸入/輸出系統(tǒng)(BIOS)代碼或核心系統(tǒng)軟件代碼,通常可以識別 和初始化處理系統(tǒng)或電子設(shè)備的硬件子系統(tǒng)和組件。所以通過第三方對固件進(jìn)行的反向工 程可以指示出使用固件集成電路的系統(tǒng)的硬件結(jié)構(gòu)。此外,對固件成功的攻擊(諸如上面 列出的那些攻擊)能夠使第三方改變處理系統(tǒng)的操作,阻止處理系統(tǒng)正確地操作,和/或?qū)?病毒傳輸?shù)浇M件或其他系統(tǒng)/設(shè)備。
[0009] 已經(jīng)知道利用基于硬件的安全措施來保護(hù)固件,諸如將固件存儲到非易失性存儲 器(諸如只讀存儲器ROM)中,以致不能修改存儲器中的固件。然而,這種方法并不能足以 阻止第三方出于不希望的目的或未經(jīng)授權(quán)的目的來訪問和分析固件。
[0010] 在第三方開發(fā)領(lǐng)域中,第三方開發(fā)者直接在處理系統(tǒng)上開發(fā)和調(diào)試應(yīng)用程序,因 此這樣的安全考慮對于第三方開發(fā)領(lǐng)域來說是很重要的。對于這樣的開發(fā),處理系統(tǒng)可能 需要執(zhí)行由廠商提供的在應(yīng)用程序執(zhí)行期間使用的嵌入固件,但是可能希望在應(yīng)用程序執(zhí) 行期間,出于安全原因,對第三方開發(fā)者隱藏/保護(hù)固件。
【發(fā)明內(nèi)容】
[0011] 本發(fā)明提供了用于控制對處理系統(tǒng)的固件代碼的訪問的解決方案。利用本發(fā)明可 以在片上系統(tǒng)應(yīng)用程序開發(fā)系統(tǒng)內(nèi)部提供嵌入的并且安全的固件執(zhí)行。因此,這樣的開發(fā) 系統(tǒng)能夠使第三方開發(fā)者使用系統(tǒng)現(xiàn)有的固件用于應(yīng)用程序開發(fā),同時還能夠阻止第三方 開發(fā)者出于未經(jīng)授權(quán)的目的(諸如分析和/或反向工程)訪問固件代碼。因此,實(shí)施例可 以通過控制對固件代碼的訪問來限制或阻止軟件反向工程。
[0012] 根據(jù)本發(fā)明的實(shí)施例,提供一種處理系統(tǒng)。
[0013] 該處理系統(tǒng)可以是微處理器,微芯片或處理平臺。因此,處理器可以是中央處理器 (CPU)或處理器內(nèi)核。
[0014] 該系統(tǒng)還可以包括調(diào)試接口,調(diào)試接口用于使能對存儲器存儲的應(yīng)用程序代碼的 調(diào)試。存儲器訪問控制單元可以適用于不使能調(diào)試接口,以便當(dāng)使能對固件代碼的訪問時 不能進(jìn)行調(diào)試。
[0015] 存儲器訪問控制單元可以被連接在處理器和存儲器之間,其中存儲器訪問控制單 元還可以適用于截獲來自處理器的存儲器訪問請求,并基于截獲的存儲器訪問請求來控制 對存儲器的訪問。
[0016] 存儲器訪問控制單元可以包括寄存器,寄存器適用于存儲表示固件代碼在存儲器 中的位置的地址,以及其中存儲器訪問控制單元還可以適用于判斷是否截獲的存儲器訪問 請求是請求訪問存儲在寄存器中的地址,并基于判斷結(jié)果來控制對存儲器的訪問。
[0017] 存儲器訪問控制單元可以在非易失性存儲器(諸如只讀存儲器ROM)中實(shí)現(xiàn),以便 保護(hù)其不被修改。
[0018] 根據(jù)本發(fā)明的實(shí)施例,提供一種用于控制前述處理系統(tǒng)的處理單元對處理系統(tǒng)的 存儲器存儲的固件代碼和應(yīng)用程序代碼的訪問的方法。
【專利附圖】
【附圖說明】
[0019] 圖1是根據(jù)本發(fā)明的實(shí)施例的處理系統(tǒng)的示意性框圖;
[0020] 圖2是圖1的實(shí)施例的存儲器訪問控制單元的示意性框圖;
[0021] 圖3描繪的是根據(jù)本發(fā)明的實(shí)施例在應(yīng)用程序代碼和固件代碼之間進(jìn)行模式切 換的例子;
[0022] 圖4描繪的是根據(jù)本發(fā)明的實(shí)施例在應(yīng)用程序代碼和固件代碼之間進(jìn)行模式切 換的另一個例子,其中執(zhí)行用于固件代碼的補(bǔ)丁代碼;
[0023] 圖5是描繪圖1的實(shí)施例的操作模式的序列的狀態(tài)圖;
[0024] 圖6是根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的存儲器映象,進(jìn)一步描繪了在正常模式和安 全模式中存儲器的可訪問性;以及
[0025] 圖7是根據(jù)本發(fā)明的實(shí)施例的方法的流程圖。
【具體實(shí)施方式】
[0026] 除了通常存在于處理系統(tǒng)中的組件(處理器單元或CPU,存儲器以及外圍設(shè)備,這 些組件都通過通信總線/橋連接起來)之外,本文中提出的實(shí)施例還包括另外的組件:存儲 器訪問控制單元(以下簡稱防火墻)。防火墻通過控制對固件代碼的訪問來使處理系統(tǒng)不 受到不希望的或未經(jīng)授權(quán)的攻擊。
[0027] 這里,固件代碼應(yīng)當(dāng)被理解為是指永久存儲器以及存儲在其中的程序代碼和數(shù)據(jù) 的組合,諸如BIOS代碼或用于處理系統(tǒng)的核心系統(tǒng)軟件代碼,固件代碼通常由處理系統(tǒng)的 廠商或供應(yīng)商設(shè)置在非易失性存儲器中。固件代碼與應(yīng)用程序代碼的不同之處在于,應(yīng)用 程序代碼通常被設(shè)計(jì)成執(zhí)行固件代碼提供的函數(shù)以及除此之外的高級函數(shù)或補(bǔ)充函數(shù),應(yīng) 用程序代碼通常是(一般以計(jì)算機(jī)程序的形式)存儲在易失性存儲器上的機(jī)器可讀指令 組,易失性存儲器指示處理器執(zhí)行具體操作。因此,固件代碼通常被永久地存儲在硬件中 (具體是存儲在非易失性存儲器中),而應(yīng)用程序代碼通常被存儲在易失性存儲器或可編 程存儲器中,以便可以對其進(jìn)行修改。
[0028] 固件代碼被硬件實(shí)現(xiàn)繼承,與它的應(yīng)用程序無關(guān)。固件代碼支持兩種不同類型 的服務(wù):低級服務(wù)和安全私有功能,其中低級服務(wù)包括通用接口控制處理和硬件抽象化層 (寄存器控制,功率調(diào)節(jié)等等),安全私有功能包括啟動序列,對最終用戶提供服務(wù)保護(hù)(例 如訪問限制)以及系統(tǒng)管理。通常保護(hù)代碼不受到最終用戶的攻擊破壞(例如防止對代碼 進(jìn)行未經(jīng)授權(quán)的修改)。
[0029] 相反,應(yīng)用程序代碼用于處理系統(tǒng)的最終使用,與硬件實(shí)現(xiàn)解決方案無關(guān)??梢酝?過復(fù)用低級函數(shù)(部分固件代碼)來開發(fā)任何應(yīng)用程序代碼。該代碼對最終用戶開放以提 高適應(yīng)性。
[0030] 當(dāng)使能對應(yīng)用程序代碼的訪問時,防火墻阻止對固件代碼的訪問,以及當(dāng)使能對 固件代碼的訪問時,防火墻阻止對應(yīng)用程序代碼的訪問。這樣,(例如為了第三方應(yīng)用程序 開發(fā))可以執(zhí)行固件代碼而阻止對應(yīng)用程序代碼的訪問(例如應(yīng)用程序代碼可能是不安全 的和/或可編輯的)。相反,(例如為了第三方應(yīng)用程序開發(fā))可以訪問應(yīng)用程序代碼而阻 止對固件代碼的訪問。
[0031] 防火墻(或存儲器訪問控制單元)控制對處理系統(tǒng)的存儲器區(qū)域的訪問。因此可 以限制處理系統(tǒng)的組件對存儲器區(qū)域例如ROM的訪問。防火墻使能或不使能對某些存儲器 區(qū)域的訪問的決定是受系統(tǒng)的操作模式限制的。例如,在特定實(shí)施例中,防火墻可以適用于 基于代碼是否是固件代碼或應(yīng)用程序代碼的一部分來允許或拒絕從存儲器的某些區(qū)域獲 取代碼。因此,可以限制處理器單元僅訪問存儲器的被識別為是安全的區(qū)域(例如用于存 儲固件代碼的非易失性存儲器區(qū)域),阻止訪問存儲器的被識別為是不安全的一個或多個 其他區(qū)域??梢宰柚固幚砥鲉卧瑫r訪問存儲器的安全區(qū)域(例如非易失性區(qū)域)和不安 全區(qū)域(例如易失性區(qū)域)。
[0032] 圖1是根據(jù)本發(fā)明的實(shí)施例的處理系統(tǒng)100的示意性框圖。該處理系統(tǒng)100包括 (具有調(diào)試接口 103的)處理器單元或CPU102,其通過存儲器訪問控制單元或防火墻105 連接到通信總線104。這里,CPU102的調(diào)試接口 103是調(diào)試JTAG接口 103,其連接到調(diào)試 探測器103a以使用戶能夠檢查和調(diào)試代碼。然而在其他實(shí)施例中,調(diào)試接口 103可以包括 串行線調(diào)試(SWD :Serial Wire debug)。SWD為嚴(yán)格限制引腳的封裝提供調(diào)試端口,經(jīng)常的 情況是為小封裝微處理器(也可以是引腳數(shù)限制至關(guān)重要的復(fù)雜的ASIC),這在設(shè)備成本 方面是控制因素。
[0033] 另外,易失性存儲單元106和非易失性存儲單元108、外圍設(shè)備110 (諸如接口,協(xié) 處理器)以及復(fù)位/電源管理單元112也連接到通信總線104。
[0034] 這里,非易失性存儲器單元108包括ROM單元108,其中存儲有:用于啟動/初始 化系統(tǒng)100的固件啟動代碼序列;在第三方應(yīng)用程序執(zhí)行期間受保護(hù)的安全固件代碼;起 源于廠商內(nèi)部固件的服務(wù)執(zhí)行;以及調(diào)度函數(shù)代碼,用于從用戶應(yīng)用程序執(zhí)行模式切換到 固件執(zhí)行模式。
[0035] 易失性存儲器106包括隨機(jī)訪問存儲器(RAM)單元106a和諸如閃存或EEPR0M的 可編程存儲器l〇6b。RAM單元106a用于存儲在啟動代碼執(zhí)行期間或應(yīng)用程序代碼執(zhí)行期 間由CPU102所使用的數(shù)據(jù)??删幊檀鎯ζ?06b適用于存儲來自第三方開發(fā)者的應(yīng)用程序 代碼(例如用于系統(tǒng)的最終應(yīng)用的程序代碼);另外的安全固件代碼;和/或?qū)Π踩碳?代碼在ROM單元108中提供保護(hù)的補(bǔ)丁代碼??删幊檀鎯ζ?06b還可以存儲調(diào)度函數(shù)代 碼(如果調(diào)度函數(shù)代碼不位于ROM單元108中/不從ROM單元108來獲得調(diào)度函數(shù)代碼的 話)。
[0036] 因此,應(yīng)當(dāng)理解的是,不像常規(guī)的處理系統(tǒng),圖1的系統(tǒng)100還包括存儲器訪問控 制單元或防火墻105。防火墻105 (至少)能夠從處理器102接收代碼訪問請求,以及控制 處理器102對系統(tǒng)存儲器區(qū)域的訪問。因此,例如,防火墻105可以被連接在處理器102和 通信總線104之間。
[0037] 防火墻105適用于管理不同的系統(tǒng)模式以執(zhí)行固件保護(hù)。在默認(rèn)情況下,在調(diào)試 接口 103被鎖定并且不能使用期間,系統(tǒng)在"系統(tǒng)模式"啟動。
[0038] -旦啟動過程已經(jīng)完成,固件將指示防火墻105進(jìn)入正常模式。當(dāng)處于正常模式 時,可以執(zhí)行位于可編程存儲器l〇6b中的第三方開發(fā)者的應(yīng)用程序代碼,并阻止對ROM單 元108中的固件代碼的訪問。當(dāng)應(yīng)用程序代碼調(diào)用位于ROM單元108中的安全固件代碼中 定義的函數(shù)時,防火墻105使系統(tǒng)進(jìn)入安全模式。當(dāng)處于安全模式時,可以執(zhí)行位于ROM單 元108中的固件代碼,并且阻止對可編程存儲器106b中的應(yīng)用程序代碼的訪問。
[0039] 因此,取決于系統(tǒng)所處的操作模式,防火墻105適用于控制對系統(tǒng)100的存儲器 106、108的訪問。基于是否正在執(zhí)行第三方應(yīng)用程序代碼或固件代碼,防火墻105判斷是否 準(zhǔn)許或拒絕對某些存儲器區(qū)域的訪問。例如,防火墻105阻止對固件代碼和第三方應(yīng)用程 序代碼的同時訪問。
[0040] 現(xiàn)在參考圖2來更加詳細(xì)地描述圖1的防火墻105的示范性操作。
[0041] 防火墻105包括地址/數(shù)據(jù)總線解析器115,多個寄存器1201-120n,以及狀態(tài)控 制器125,其中每個寄存器適用于存儲接入點(diǎn)地址。地址/數(shù)據(jù)總線解析器115截獲來自 CPU102的指令,并利用地址比較器來比較指令的地址請求和包含在寄存器120中的接入點(diǎn) 地址。
[0042] 在位于可編程存儲器106b中的應(yīng)用程序代碼執(zhí)行期間,防火墻105允許應(yīng)用程序 代碼通過單個接入點(diǎn)調(diào)用位于ROM單元108中的固件代碼。用于調(diào)用固件代碼的接入點(diǎn) 被定義在防火墻105的寄存器120中。注意,在應(yīng)用程序代碼執(zhí)行期間(即在正常模式期 間),防火墻105的寄存器120是不能被處理器102訪問的。
[0043] 對于來自處理器102的每個新的總線訪問,防火墻105都檢查寄存器120中的接 入點(diǎn)地址,以判斷該接入點(diǎn)地址是否等于處理器102所要求的地址。如果所要求的地址與 接入點(diǎn)地址相匹配,則判斷應(yīng)用程序代碼正在調(diào)用固件代碼,因此防火墻105不使能對可 編程存儲器106的任何其他訪問并且不使能調(diào)試接口 103。換句話說,如果判斷應(yīng)用程序代 碼正在調(diào)用固件代碼,則防火墻使系統(tǒng)進(jìn)入安全模式,在安全模式中,能夠訪問或執(zhí)行位于 ROM單元108中的固件代碼,不使能調(diào)試接口 103和對可編程存儲器106b的訪問。
[0044] 從這一點(diǎn)來看(即當(dāng)處于安全模式時),能夠以高安全級別執(zhí)行ROM單元108中的 固件代碼,因?yàn)閷删幊檀鎯ζ鱨〇6b的訪問是不使能的并且調(diào)試接口是被鎖定的。還要注 意,在此期間,允許安全固件代碼訪問防火墻寄存器120。另外,如果系統(tǒng)100在可編程存儲 器106b中包含一些安全固件代碼,則防火墻105使能這些安全固件代碼的執(zhí)行。這例如可 以被用于執(zhí)行固件代碼的補(bǔ)丁。
[0045] 在安全固件代碼的執(zhí)行結(jié)束時(例如當(dāng)防火墻105檢測到返回過程時),防火墻 105使系統(tǒng)重新進(jìn)入正常模式(在正常模式中,不使能對固件代碼的訪問,使能對可編程存 儲器106b中的應(yīng)用程序代碼的訪問,并且使能調(diào)試接口 103)。注意,只有當(dāng)安全固件代碼 清除防火墻105的寄存器120中的一位時才可以再使能對可編程存儲器106b的訪問,以允 許切換回到正常模式。對于防火墻105檢測到返回過程而沒有清除防火墻105的寄存器 120中的這一位的情況,出于安全目的,防火墻105將自動復(fù)位處理器102和RAM106a。此 夕卜,如果應(yīng)用程序代碼試圖調(diào)用R0M108內(nèi)的固件代碼的地址,其中該地址不是靜態(tài)接入點(diǎn) 地址,則防火墻105復(fù)位處理器102和RAM106a,以阻止對安全固件的非法訪問。
[0046] 取決于實(shí)施例,可以采用集中式實(shí)現(xiàn)方式或分布式實(shí)現(xiàn)方式來實(shí)現(xiàn)防火墻 105 (或存儲器訪問控制單元)。在集中式實(shí)現(xiàn)方式中,由一個設(shè)備來執(zhí)行防火墻105的功 能并管理所有存儲器。在分布式實(shí)現(xiàn)方式中,每個存儲器類型可以具有自己的設(shè)備來執(zhí)行 僅用于特定存儲器的防火墻105的部分功能。
[0047] 基于實(shí)施例,可以將防火墻105實(shí)現(xiàn)為處理器(平臺)的現(xiàn)有組件的一部分,現(xiàn)有 組件諸如是存儲器管理單元,存儲器保護(hù)單元,地址解碼器,存儲器接口(在分布式實(shí)現(xiàn)的 情況中),或者可以將其實(shí)現(xiàn)為獨(dú)立的設(shè)備。
[0048] 防火墻105還可以阻止處理單元(CPU) 102以多種不同的方式執(zhí)行命令。例如,它 可以產(chǎn)生存儲器錯誤,觸發(fā)中斷,提供不可執(zhí)行指令,返回?zé)o操作指令,或上述各項(xiàng)的組合。
[0049] 現(xiàn)在參考圖3描述在應(yīng)用程序代碼和固件代碼之間進(jìn)行模式切換的例子。
[0050] 如上面參考圖2已經(jīng)描述的,防火墻105對安全固件代碼提供單個接入點(diǎn)。這個 接入點(diǎn)位于預(yù)定的固定地址,該地址與調(diào)度函數(shù)的地址對應(yīng)。一個或多個參數(shù)被提供給調(diào) 度函數(shù),以定義執(zhí)行安全固件代碼的哪個函數(shù)。
[0051] 當(dāng)調(diào)度函數(shù)被調(diào)用時(即當(dāng)預(yù)定的固定地址被請求時),防火墻105通過使能對安 全固件代碼的訪問以及不使能對應(yīng)用程序代碼和調(diào)試接口的訪問,將系統(tǒng)從正常模式切換 到安全模式(步驟#1)。
[0052] 然后執(zhí)行ROM中的調(diào)度函數(shù),并基于被提供給調(diào)度函數(shù)的參數(shù)來執(zhí)行安全固件的 函數(shù)(步驟#2)。這里,所提供的參數(shù)是R0 = Funcl_addr,該參數(shù)請求安全固件的第一函 數(shù) Funcl ()。
[0053] 在執(zhí)行安全固件代碼的函數(shù)之后,(通過像正常返回函數(shù)那樣處理)離開調(diào)度函 數(shù)并返回到應(yīng)用程序代碼。當(dāng)返回到應(yīng)用程序代碼時,防火墻105通過不使能對安全固件 的訪問以及使能對應(yīng)用程序代碼和調(diào)試接口的訪問,將系統(tǒng)從安全模式切換到正常模式 (步驟# 3)。
[0054] 然后繼續(xù)執(zhí)行應(yīng)用程序代碼,直到調(diào)度函數(shù)被再次調(diào)用。當(dāng)再次調(diào)用調(diào)度函數(shù)時, 防火墻105通過使能對安全固件的訪問并且不使能對應(yīng)用程序代碼和調(diào)試接口的訪問,將 系統(tǒng)從正常模式切換到安全模式(步驟#4)。
[0055] 然后執(zhí)行ROM中的調(diào)度函數(shù),并基于被提供給調(diào)度函數(shù)的參數(shù)來執(zhí)行安全固件的 函數(shù)(步驟#5)。這里,用于對調(diào)度函數(shù)進(jìn)行第二次調(diào)用的參數(shù)是R0 = FunC3_addr,該參 數(shù)請求安全固件的第三函數(shù)Func3 ()。
[0056] 在執(zhí)行安全固件的函數(shù)之后,(通過像正常返回函數(shù)那樣處理)離開調(diào)度函數(shù)并 返回到應(yīng)用程序代碼。當(dāng)返回到應(yīng)用程序代碼時,防火墻105通過不使能對安全固件的訪 問以及使能對應(yīng)用程序代碼和調(diào)試接口的訪問,將系統(tǒng)從安全模式切換到正常模式(步驟 #6)。
[0057] 對于一些安全固件還位于可編程存儲器中的實(shí)施例,還可以使調(diào)度函數(shù)位于可編 程存儲器中。
[0058] 實(shí)施例還可以執(zhí)行用于安全固件代碼的補(bǔ)丁代碼。補(bǔ)丁代碼可以位于可編程存儲 器的安全區(qū)域中,并且可以在需要更正安全固件代碼的執(zhí)行時使用補(bǔ)丁代碼。
[0059] 圖4描繪的是在應(yīng)用程序代碼和固件代碼之間進(jìn)行模式切換的例子,其中固件代 碼利用可編程存儲器的區(qū)域中的補(bǔ)丁代碼。
[0060] 當(dāng)執(zhí)行應(yīng)用程序代碼并調(diào)用調(diào)度函數(shù)時(即當(dāng)預(yù)定的固定地址被請求時),防火 墻105通過使能對安全固件的訪問以及不使能對應(yīng)用程序代碼和調(diào)試接口的訪問,將系統(tǒng) 從正常模式切換到安全模式(步驟#01)。
[0061] 然后執(zhí)行ROM中的調(diào)度函數(shù),并基于被提供給調(diào)度函數(shù)的參數(shù)來執(zhí)行安全固件的 函數(shù)(步驟#02)。這里,被提供的參數(shù)是R0 = Funcl_addr,該參數(shù)請求安全固件的第一函 數(shù) Funcl ()。
[0062] 當(dāng)執(zhí)行安全固件的函數(shù)Funcl ()時,請求執(zhí)行補(bǔ)丁代碼,因此調(diào)用并執(zhí)行補(bǔ)丁代 碼(步驟#03)。
[0063] 在執(zhí)行安全固件的函數(shù)Funcl ()之后,(通過像正常返回函數(shù)那樣處理)離開調(diào) 度函數(shù)并返回到應(yīng)用程序代碼。當(dāng)返回到應(yīng)用程序代碼時,防火墻105通過不使能對安全 固件的訪問以及使能對應(yīng)用程序代碼和調(diào)試接口的訪問,將系統(tǒng)從安全模式切換到正常模 式(步驟#04)。
[0064] 然后繼續(xù)執(zhí)行應(yīng)用程序代碼,直到調(diào)度函數(shù)被再次調(diào)用。當(dāng)再次調(diào)用調(diào)度函數(shù)時, 防火墻105通過使能對安全固件的訪問以及不使能對應(yīng)用程序代碼和調(diào)試接口的訪問,將 系統(tǒng)從正常模式切換到安全模式(步驟#05)。
[0065] 然后執(zhí)行ROM中的調(diào)度函數(shù),并基于被提供給調(diào)度函數(shù)的參數(shù)來執(zhí)行安全固件的 函數(shù)(步驟#05)。這里,用于對調(diào)度函數(shù)進(jìn)行第二次調(diào)用的參數(shù)是R0 = FunC3_addr,該參 數(shù)請求安全固件的第三函數(shù)Func3 ()。
[0066] 在執(zhí)行安全固件的函數(shù)之后,(通過像正常返回函數(shù)那樣處理)離開調(diào)度函數(shù)并 返回到應(yīng)用程序代碼。當(dāng)返回到應(yīng)用程序代碼時,防火墻105通過不使能對安全固件的訪 問以及使能對應(yīng)用程序代碼和調(diào)試接口的訪問,將系統(tǒng)從安全模式切換到正常模式(步驟 #07)。
[0067] 調(diào)度代碼執(zhí)行的例子:
[0068] 調(diào)度函數(shù)位于ROM單元108中唯一的接入點(diǎn)的地址處。調(diào)度函數(shù)接受最多4個參 數(shù)。根據(jù)內(nèi)部服務(wù)定義,第一參數(shù)是輸入?yún)?shù),其他三個參數(shù)可以是輸入或輸出參數(shù),或輸 入和輸出參數(shù)。
[0069] 第一參數(shù)是服務(wù)標(biāo)識符,其值大于0且小于(或等于)系統(tǒng)中可以得到的服務(wù)的 數(shù)目。因此,第一參數(shù)是要被調(diào)用的服務(wù)的索引。任何其他的值會引起系統(tǒng)錯誤并觸發(fā)復(fù) 位。
[0070] 三個其他的參數(shù)被傳輸?shù)奖徽{(diào)用的服務(wù)。根據(jù)每個服務(wù)以及它們使用這些參數(shù)的 方式,可以作為參考來讀、寫、使用這些參數(shù),或簡單地不忽視這些參數(shù)。由每個服務(wù)根據(jù)它 的目的來檢查參數(shù)值的一致性。預(yù)料之外的值會引起系統(tǒng)錯誤并觸發(fā)系統(tǒng)復(fù)位。
[0071] 根據(jù)實(shí)施例用于調(diào)度函數(shù)的偽代碼的例子如下:
[0072] Func Dispatch(paraml, param2, param35 param4) { if (paraini == #1) call function#!(param2, param3, param4) else if (paraml == #2) call function#2(param25 param3? param4) else ii'(pcirainl == #3 ) aill iunclion#3(parani2, param3, parain4) else if (paraml == #N) call fimction#N(param2, param3, param4) elsesyslem_iiiult(system_reser): firewall_switch_to_normal_mode; }
[0073] 調(diào)度函數(shù)的最后一個操作是使能防火墻將系統(tǒng)切換回正常模式。
[0074] 圖5描繪的是圖1的實(shí)施例的操作模式的狀態(tài)圖。圖中顯示有四種操作模式:上 電復(fù)位模式1〇〇 ;系統(tǒng)模式200 ;正常模式300 ;以及安全模式400。
[0075] 上電復(fù)位模式100實(shí)現(xiàn)電路電源初始化,然后進(jìn)行到系統(tǒng)模式200。在系統(tǒng)模式 200中,隨著不使能CPU102的調(diào)試接口并且執(zhí)行安全固件以啟動系統(tǒng),103接收電路啟動序 列。在系統(tǒng)模式200的電路啟動序列完成之后,系統(tǒng)進(jìn)行到正常模式300。
[0076] 在正常模式300中,執(zhí)行可編程存儲器中的應(yīng)用程序代碼,同時防火墻105不使能 對安全固件的訪問。此外,使能CPU102的調(diào)試接口 103以允許調(diào)試應(yīng)用程序代碼。
[0077] 當(dāng)(例如通過請求存儲在防火墻的寄存器中的預(yù)定的單個接入點(diǎn)的地址)調(diào)用固 件代碼時,防火墻105使系統(tǒng)處于安全模式400。在安全模式400中,執(zhí)行所請求的固件代 碼,同時防火墻105不使能對可編程存儲器中的應(yīng)用程序代碼的訪問。此外,在安全模式 400中不使能CPU102的調(diào)試接口 103。
[0078] -旦固件的執(zhí)行已經(jīng)在安全模式400完成,則系統(tǒng)返回到正常模式300。
[0079] 圖6是根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的存儲器映象。該圖描繪了在正常模式和安全 模式中系統(tǒng)的存儲器各區(qū)域的可訪問性。應(yīng)當(dāng)理解的是,在正常模式300期間(例如當(dāng)?shù)?三方應(yīng)用程序代碼執(zhí)行時),防火墻的寄存器、可編程存儲器中的安全區(qū)域以及ROM是不能 訪問的。
[0080] 圖7是根據(jù)本發(fā)明的實(shí)施例的方法的流程圖。該方法用于控制處理系統(tǒng)的處理單 元對處理系統(tǒng)的存儲器存儲的固件代碼和應(yīng)用程序代碼的訪問。
[0081] 該方法開始于步驟302,在該步驟中,系統(tǒng)處于正常模式,其中防火墻不使能對固 件代碼的訪問以及使能對應(yīng)用程序代碼的訪問。接下來,在步驟304中,執(zhí)行應(yīng)用程序代 碼,然后該方法進(jìn)行到步驟306,在步驟306中,判斷是否所執(zhí)行的應(yīng)用程序代碼正在調(diào)用 固件代碼(例如固件函數(shù))。如果判斷所執(zhí)行的應(yīng)用程序代碼不在調(diào)用固件代碼,則該方法 返回到步驟302。然而,如果在步驟306中判斷所執(zhí)行的應(yīng)用程序代碼正在調(diào)用固件代碼, 則該方法進(jìn)行到步驟308。
[0082] 在步驟308中,系統(tǒng)在安全模式中操作,其中防火墻使能對固件代碼的訪問以及 不使能對應(yīng)用程序代碼的訪問。接下來,在步驟310中,執(zhí)行被調(diào)用的固件代碼,一旦固件 代碼的執(zhí)行完成,該方法就返回到步驟302,在步驟302中,系統(tǒng)再次在正常模式中操作。 [0083] 可以在計(jì)算機(jī)程序產(chǎn)品中獲得實(shí)施例,計(jì)算機(jī)程序產(chǎn)品用于在計(jì)算機(jī)的處理器上 執(zhí)行,計(jì)算機(jī)例如是個人計(jì)算機(jī)或網(wǎng)絡(luò)服務(wù)器,如果計(jì)算機(jī)程序產(chǎn)品在計(jì)算機(jī)上執(zhí)行,會使 計(jì)算機(jī)執(zhí)行根據(jù)實(shí)施例的方法的各個步驟。由于這些步驟在計(jì)算機(jī)程序產(chǎn)品中的執(zhí)行僅需 要本領(lǐng)域技術(shù)人員的常規(guī)技能,因此在本文中出于文本簡潔的原因,就不對這樣執(zhí)行的內(nèi) 容作更詳細(xì)的描述了。
[0084] 在實(shí)施例中,計(jì)算機(jī)程序產(chǎn)品被存儲在計(jì)算機(jī)可讀介質(zhì)上。任何合適的計(jì)算機(jī)可 讀介質(zhì)都是可以使用的,例如⑶-ROM、DVD、USB棒、存儲卡、網(wǎng)絡(luò)區(qū)域存儲設(shè)備、因特網(wǎng)可訪 問的數(shù)據(jù)存儲器等。
[0085] 基于本文中的附圖、公開的內(nèi)容以及所附的權(quán)利要求,本領(lǐng)域技術(shù)人員在實(shí)施本 發(fā)明時可以想到本文中所公開的實(shí)施例的其他變形例。本文中所使用的"包括"并不排除 其他組成部分或步驟,本文中的"一"或"一個"并不排除多個。單個處理器或其他單元可 以完成本文的權(quán)利要求中所述的各個部件的功能。事實(shí)是,某些措施在相互不同的從屬權(quán) 利要求中被敘述并不表示這些措施的組合不能被有利地使用。計(jì)算機(jī)程序可以存儲/分布 在合適的介質(zhì)上,諸如光存儲介質(zhì)或固態(tài)存儲介質(zhì)以及部分其他硬件,但是也可以以其他 形式分布,諸如經(jīng)由因特網(wǎng)其他有線或無線遠(yuǎn)程通信系統(tǒng)。權(quán)利要求中出現(xiàn)的參考標(biāo)號并 不用來限制保護(hù)范圍。
【權(quán)利要求】
1. 一種處理系統(tǒng),其特征在于,包括: 處理單元; 存儲器,適用于存儲用于處理器執(zhí)行的固件代碼和應(yīng)用程序代碼;以及 存儲器訪問控制單元,適用于控制處理單元對存儲在存儲器中的固件代碼和應(yīng)用程序 代碼的訪問, 其中存儲器訪問控制單元適用于,當(dāng)使能對應(yīng)用程序代碼的訪問時不使能對固件代碼 的訪問,以及當(dāng)不使能對應(yīng)用程序代碼的訪問時使能對固件代碼的訪問。
2. 如權(quán)利要求1所述的系統(tǒng),其特征在于,還包括調(diào)試接口,調(diào)試接口用于使能對存儲 器存儲的應(yīng)用程序代碼的調(diào)試,以及其中存儲器訪問控制單元適用于不使能調(diào)試接口,以 便當(dāng)使能對固件代碼的訪問時不能進(jìn)行調(diào)試。
3. 如權(quán)利要求1或2所述的系統(tǒng),其特征在于,存儲器包括適用于存儲固件代碼的非易 失性存儲器和適用于存儲應(yīng)用程序代碼的易失性存儲器。
4. 如在前的任意一項(xiàng)權(quán)利要求所述的系統(tǒng),其特征在于,存儲器訪問控制單元被連接 在處理器和存儲器之間,其中存儲器訪問控制單元還適用于截獲來自處理器的存儲器訪問 請求,并基于截獲的存儲器訪問請求來控制對存儲器的訪問。
5. 如權(quán)利要求4所述的系統(tǒng),其特征在于,存儲器訪問控制單元包括寄存器,寄存器適 用于存儲表示固件代碼在存儲器中的位置的地址,以及其中存儲器訪問控制單元還適用于 判斷是否截獲的存儲器訪問請求是請求訪問存儲在寄存器中的地址,并基于判斷結(jié)果來控 制對存儲器的訪問。
6. 如權(quán)利要求4或5所述的系統(tǒng),其特征在于,存儲器訪問控制單元還適用于,當(dāng)使能 對固件代碼的訪問時,使能對寄存器的訪問,以及當(dāng)使能對應(yīng)用程序代碼的訪問時,不使能 對寄存器的訪問。
7. 如在前的任意一項(xiàng)權(quán)利要求所述的系統(tǒng),其特征在于,至少部分存儲器訪問控制單 元在只讀存儲器中實(shí)現(xiàn)。
8. -種微處理器,其特征在于,包括如在前的任意一項(xiàng)權(quán)利要求所述的處理系統(tǒng)。
9. 一種片上系統(tǒng)應(yīng)用程序開發(fā)系統(tǒng),其特征在于,包括根據(jù)權(quán)利要求1-7中任一項(xiàng)所 述的處理系統(tǒng)。
10. -種用于控制處理系統(tǒng)的處理單元對處理系統(tǒng)的存儲器存儲的固件代碼和應(yīng)用程 序代碼的訪問的方法,其特征在于,該方法包括以下步驟: 當(dāng)使能對應(yīng)用程序代碼的訪問時,不使能對固件代碼的訪問;以及 當(dāng)使能對固件代碼的訪問時,不使能對應(yīng)用程序代碼的訪問。
11. 根據(jù)權(quán)利要求10所述的方法,其特征在于,還包括不使能調(diào)試接口的步驟,以便當(dāng) 使能對固件代碼的訪問時不能進(jìn)行調(diào)試。
12. 如權(quán)利要求10或11所述的方法,其特征在于,還包括以下步驟; 截獲來自處理器的存儲器訪問請求;以及 基于截獲的存儲器訪問請求來控制對存儲器的訪問。
13. 如權(quán)利要求12所述的方法,其特征在于,基于截獲的存儲器訪問請求來控制對存 儲器的訪問的步驟包括: 判斷是否截獲的存儲器訪問請求是請求訪問預(yù)定地址;以及
【文檔編號】G06F21/12GK104217139SQ201410200577
【公開日】2014年12月17日 申請日期:2014年5月13日 優(yōu)先權(quán)日:2013年5月29日
【發(fā)明者】尼古拉斯·萊娜, 安德烈·勒平 申請人:Nxp股份有限公司