本發(fā)明涉及集成電路和信息安全領(lǐng)域,特別涉及寄存器地址空間的控制方法、控制器及片上系統(tǒng)。
背景技術(shù):
使用ARM TrustZone技術(shù)的SoC(片上系統(tǒng))將所有的硬件資源和訪問這些硬件資源的主設(shè)備master(包括中央處理器CPU,圖形處理器GPU和其它可進(jìn)行直接內(nèi)存存取(DMA)的硬件組件)劃分為2個(gè)世界---安全世界和非安全世界(也稱正常世界)。其中,硬件資源是指總線上組建內(nèi)的被訪問的存儲(chǔ)設(shè)備,包括RAM和寄存器等。安全世界的資源是受到保護(hù)的,只能被安全世界的master訪問,而不能被非安全世界的master訪問。從靈活性出發(fā),對(duì)安全世界和非安全世界的劃分,只有少量的硬件資源和master是固定的(運(yùn)行在上面的軟件不可配置的),大部分是在軟件啟動(dòng)過程中進(jìn)行配置的。
在劃分和保護(hù)寄存器方面,現(xiàn)有的方法是使用ARM總線,該總線有地址區(qū)域控制寄存器用于配置總線上各硬件組件的寄存器是否受到保護(hù)的。如圖1所示,總線上有SDIO控制器(安全數(shù)字輸入/輸出接口控制器)、USB控制器(通用串行總線控制器)和ISP(圖像信號(hào)處理器)等3個(gè)組件。軟件通過設(shè)置總線中的地址區(qū)域控制寄存器可以指定這3個(gè)組件中的寄存器是否受到保護(hù)。
這種方式存在以下2個(gè)缺點(diǎn):
1、不靈活,只能配置某個(gè)組件中的寄存器地址空間全部受到保護(hù),或 全部不受到保護(hù)。不能指定組件中的一部分寄存器受到保護(hù),而其它部分不受到保護(hù)。
2、提供給軟件開發(fā)人員的接口不友好,因?yàn)樵谝粋€(gè)SoC中通常有多個(gè)總線分別連接不同的組件,各個(gè)總線中的地址區(qū)域控制寄存器地址空間也不是連續(xù)的。軟件開發(fā)人員需要知道SoC中的總線連接情況和各個(gè)總線中的地址區(qū)域控制寄存器。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種寄存器地址空間的控制方法、寄存器地址空間控制器及片上系統(tǒng)。使得終端設(shè)備可以通過寄存器組標(biāo)識(shí)地址空間和訪問是否受保護(hù),進(jìn)而使軟件開發(fā)人員僅通過設(shè)置該控制器就可以靈活的指定任意寄存器地址空間受到保護(hù),而不需要關(guān)心SoC中的總線連接情況和總線中的地址區(qū)域控制寄存器。
為解決上述技術(shù)問題,本發(fā)明的實(shí)施方式提供了一種寄存器地址空間的控制方法,包含以下步驟:預(yù)先為總線上的各硬件資源設(shè)置至少一個(gè)配置項(xiàng),每個(gè)配置項(xiàng)用于指定一個(gè)寄存器地址空間、和指示該寄存器地址空間是否受到讀保護(hù)或?qū)懕Wo(hù);如果非安全世界的主設(shè)備訪問的地址在所述配置的第i組寄存器指定的地址空間內(nèi),則根據(jù)第i個(gè)配置項(xiàng)所指示地址的是否受到讀保護(hù)或?qū)懕Wo(hù),判斷是否允許主設(shè)備訪問;其中,i大于或等于0,并且小于或等于配置的寄存器組的個(gè)數(shù)。
本發(fā)明的實(shí)施方式還提供了一種寄存器地址空間控制器,包含:配置單元,用于為總線上的各硬件資源配置至少一個(gè)配置項(xiàng),每個(gè)配置項(xiàng)用于指定一個(gè)寄存器地址空間、和指示該寄存器地址空間是否受到讀保護(hù)或?qū)懕Wo(hù);邏輯單元,與配置單元相連,用于在接收到非安全世界的主設(shè)備的訪問時(shí),判斷非安全世界的主設(shè)備訪問的寄存器地址是否在所述設(shè)置的第i個(gè)配置項(xiàng) 指定的地址空間內(nèi),如果主設(shè)備訪問的寄存器地址在設(shè)置的第i個(gè)配置項(xiàng)指定的地址空間內(nèi),則根據(jù)第i個(gè)配置項(xiàng)所指示的是否受到讀保護(hù)或?qū)懕Wo(hù),判斷是否允許主設(shè)備訪問;其中,所述i大于或等于0,并且小于或等于配置的寄存器組的個(gè)數(shù)。
本發(fā)明的實(shí)施方式還提供了一種片上系統(tǒng),包含:總線、硬件資源、主設(shè)備和上述寄存器地址空間控制器;其中,硬件資源、主設(shè)備和上述寄存器地址空間控制器均與總線相連。
本發(fā)明實(shí)施方式相對(duì)于現(xiàn)有技術(shù)而言,控制器通過設(shè)置的配置項(xiàng)自動(dòng)判斷被訪問的寄存器地址空間是否受保護(hù),使得軟件開發(fā)人員僅通過配置該控制器就可以靈活的指定任意寄存器地址空間受到保護(hù),而不需要關(guān)心SoC中的總線連接情況和總線中的地址區(qū)域控制寄存器。
另外,硬件資源包含寄存器和/或隨機(jī)存取存儲(chǔ)器RAM;在預(yù)先為總線上的各硬件資源配置至少一個(gè)配置項(xiàng)的步驟中,為每一個(gè)需要保護(hù)的寄存器地址空間配置一個(gè)配置項(xiàng)??偩€上的一個(gè)組件中一般包含多個(gè)寄存器,通過設(shè)置配置項(xiàng),可以實(shí)現(xiàn)對(duì)任意寄存器空間的訪問權(quán)限的設(shè)置,將保護(hù)細(xì)化到一個(gè)寄存器,解決現(xiàn)有技術(shù)只能將一個(gè)硬件組件中的所有寄存器作為一個(gè)整體來配置的問題。
另外,根據(jù)以下等式,判斷非安全世界的主設(shè)備訪問的寄存器地址是否在配置的第i個(gè)配置項(xiàng)指定的寄存器地址空間內(nèi):addr&config[i].addr_mask=config[i].addr_base&config[i].addr_mask其中,addr表示所述主設(shè)備訪問的地址,config[i].addr_mask表示第i個(gè)配置項(xiàng)中的掩碼寄存器中存儲(chǔ)的數(shù)據(jù),config[i].addr_base表示基址寄存器中存儲(chǔ)的數(shù)據(jù),&表示位于操作;如果主設(shè)備訪問的地址滿足以上等式,則判定主設(shè)備訪問的地址在所述配置的第i個(gè)配置項(xiàng)指定的地址空間內(nèi)。只有當(dāng)主設(shè)備訪問的地址在配置的第i個(gè)配置項(xiàng)指定的地址空間內(nèi),才可以根據(jù)配置的第i個(gè)配置項(xiàng)所指示地址的是否受 到讀保護(hù)或?qū)懕Wo(hù),以此來判斷是否允許主設(shè)備訪問。
另外,在判斷所述訪問的地址是否在設(shè)置的第i個(gè)配置項(xiàng)指定的地址空間內(nèi)的步驟之前,還包含:根據(jù)總線信號(hào)判斷請(qǐng)求訪問的設(shè)備是否為非安全世界的主設(shè)備,如果為非安全世界的主設(shè)備,則再進(jìn)入判斷所述訪問的寄存器地址是否在所述配置的第i個(gè)配置項(xiàng)指定的寄存器地址空間內(nèi)的步驟。如果是安全世界的主設(shè)備,則訪問正常發(fā)出。因?yàn)榘踩澜绲馁Y源是受到保護(hù)的,只能被安全世界的主設(shè)備訪問,而不能被非安全世界的主設(shè)備訪問。所以只有當(dāng)主設(shè)備為非安全世界的主設(shè)備,才需要判斷主設(shè)備訪問的地址是否在配置的第i個(gè)配置項(xiàng)指定的地址空間內(nèi),進(jìn)而判斷配置的第i個(gè)配置項(xiàng)所指示地址的是否受到讀保護(hù)或?qū)懕Wo(hù)。
另外,每個(gè)配置項(xiàng)中基址寄存器和掩碼寄存器的位數(shù)與系統(tǒng)寄存器地址空間的位數(shù)相同??梢愿鶕?jù)不同位數(shù)的系統(tǒng)進(jìn)行相關(guān)配置,實(shí)現(xiàn)了不同位數(shù)系統(tǒng)的兼容性。
附圖說明
圖1是根據(jù)現(xiàn)有技術(shù)中的總線上各組件的訪問示意圖;
圖2是根據(jù)本發(fā)明第一實(shí)施方式的寄存器地址空間的控制方法的流程圖;
圖3是根據(jù)本發(fā)明第二實(shí)施方式的寄存器地址空間控制器的原理示意圖;
圖4是根據(jù)本發(fā)明第三實(shí)施方式的片上系統(tǒng)的原理示意圖。
具體實(shí)施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā) 明的各實(shí)施方式進(jìn)行詳細(xì)的闡述。然而,本領(lǐng)域的普通技術(shù)人員可以理解,在本發(fā)明各實(shí)施方式中,為了使讀者更好地理解本申請(qǐng)而提出了許多技術(shù)細(xì)節(jié)。但是,即使沒有這些技術(shù)細(xì)節(jié)和基于以下各實(shí)施方式的種種變化和修改,也可以實(shí)現(xiàn)本申請(qǐng)各權(quán)利要求所要求保護(hù)的技術(shù)方案。
首先值得聲明的是,本申請(qǐng)文件中主設(shè)備可以是中央處理器CPU,圖形處理器GPU和其它可進(jìn)行直接內(nèi)存存取(DMA)的硬件組件。
本發(fā)明的第一實(shí)施方式涉及一種寄存器地址空間的控制方法。如圖2所示。
流程圖中,n表示軟件已經(jīng)設(shè)置的配置項(xiàng)的個(gè)數(shù);i為這n個(gè)配置項(xiàng)的索引,取值范圍從0到n-1。
在進(jìn)入步驟101之前,通過軟件預(yù)先為總線上的各硬件資源配置至少一個(gè)配置項(xiàng)。
具體地說,預(yù)先為總線上的各硬件資源配置至少一個(gè)配置項(xiàng),每個(gè)配置項(xiàng)用于指定一個(gè)寄存器地址空間、和指示該寄存器地址空間是否受到讀保護(hù)或?qū)懕Wo(hù)。
其中,硬件資源包含寄存器和/或隨機(jī)存取存儲(chǔ)器RAM;在預(yù)先為總線上的各硬件資源配置至少一個(gè)配置項(xiàng)的步驟中,為每一個(gè)需要保護(hù)的寄存器地址空間設(shè)置一個(gè)配置項(xiàng)。
具體地說,配置項(xiàng)最多可以為16個(gè)或32個(gè)。用于分別指定多個(gè)寄存器地址空間受到保護(hù)。每一個(gè)配置項(xiàng)包含有4個(gè)寄存器:addr_base(用于保存寄存器空間基址的基址寄存器)、addr_mask(用于保存寄存器掩碼的掩碼寄存器)、sec_rd(用于表示是否受到讀訪問保護(hù)的讀訪問保護(hù)寄存器)、sec_wr(用于表示是否受到寫訪問保護(hù)的寫訪問保護(hù)寄存器),其中,基址寄存器和掩碼寄存器中的數(shù)據(jù)進(jìn)行位與操作后得到本組寄存器指定的地址空間?;芳拇嫫骱脱诖a寄存器的位數(shù)與系統(tǒng)寄存器地址空間的位數(shù)相同,sec_rd和 sec_wr只使用最低的一位。
在步驟101中,主設(shè)備通過總線請(qǐng)求信號(hào),請(qǐng)求訪問寄存器。
在本實(shí)施方式中,對(duì)寄存器的訪問要經(jīng)過寄存器地址空間控制器。在SoC中所有的主設(shè)備對(duì)寄存器進(jìn)行訪問都先經(jīng)過寄存器地址空間控制器,該控制器統(tǒng)一檢查所有主設(shè)備對(duì)任意寄存器空間的訪問權(quán)限。
接著,進(jìn)入步驟102,根據(jù)總線信號(hào)判斷請(qǐng)求訪問的主設(shè)備是否為非安全世界的主設(shè)備。如果請(qǐng)求訪問的主設(shè)備為安全世界的主設(shè)備,則進(jìn)入步驟108;如果請(qǐng)求訪問的主設(shè)備為非安全世界的主設(shè)備,則進(jìn)入步驟103。
具體地說,根據(jù)總線協(xié)議,如果安全世界的主設(shè)備讀訪問,則arprot[1]=0;如果非安全世界的主設(shè)備讀訪問,則arprot[1]=1;如果安全世界的主設(shè)備寫訪問,則awprot[1]=0;如果非安全世界的主設(shè)備寫訪問,則awprot[1]=1。所以只需根據(jù)arprot[1]和awprot[1]的值,即可判斷請(qǐng)求訪問的主設(shè)備是否為非安全世界的主設(shè)備,如果arprot[1]=0并且awprot[1]=0,則判定請(qǐng)求訪問的主設(shè)備為安全世界的主設(shè)備;否則,請(qǐng)求訪問的主設(shè)備為非安全世界的主設(shè)備。
在步驟103中,設(shè)置i=0。
接著,進(jìn)入步驟104,判斷i是否小于n。如果i小于n,進(jìn)入步驟106;否則進(jìn)入步驟108,這是因?yàn)槿绻L問的寄存器地址在n個(gè)配置項(xiàng)中都沒指定,則訪問正常發(fā)出。
其中,n表示軟件已經(jīng)設(shè)置的配置項(xiàng)的組數(shù);i為這n配置項(xiàng)的索引,取值范圍為從0到n-1的整數(shù)。比如,n取5,則代表已經(jīng)設(shè)置的配置項(xiàng)個(gè)數(shù)為5。此時(shí)當(dāng)i的取值為0、1、2、3或者4的時(shí)候進(jìn)入步驟106。
在步驟106中,判斷訪問的地址是否在設(shè)置的第i個(gè)配置項(xiàng)指定的地址空間內(nèi)。如果訪問的地址在設(shè)置的第i個(gè)配置項(xiàng)指定的地址空間內(nèi),則進(jìn)入 步驟107,否則進(jìn)入步驟105。
具體地說,如果某一非安全世界主設(shè)備訪問的地址addr,滿足以下等式,則表示該地址在寄存器地址空間控制器的第i個(gè)配置項(xiàng)指定的地址空間內(nèi)。addr&config[i].addr_mask=config[i].addr_base&config[i].addr_mask
其中,config[i].addr_base表示第i個(gè)配置項(xiàng)的基址寄存器中存儲(chǔ)的數(shù)據(jù),config[i].addr_mask表示第i個(gè)配置項(xiàng)的掩碼寄存器中存儲(chǔ)的數(shù)據(jù),“&”表示位與操作。
以一個(gè)32位系統(tǒng)舉例來說,若config[i].addr_base=0xf7f80000,config[i].addr_mask=0xffff0000,則地址空間0xf7f80000---0xf7f8ffff在其指定的地址空間內(nèi)。若config[i].addr_base=0xf7f80000,config[i].addr_mask=0xfff70000,則地址空間0xf7f80000---0xf7f8ffff和0xf7f00000---0xf7f0ffff兩個(gè)區(qū)域都在其指定的地址空間內(nèi)。
在步驟105中,i增加1。
接著,進(jìn)入步驟104,繼續(xù)判斷i是否小于n。
在步驟107中,第i組寄存器所指示的地址是否受到讀保護(hù)或?qū)懕Wo(hù)。如果第i組寄存器所指示的地址受到保護(hù),則進(jìn)入步驟109;否則進(jìn)入步驟108。
具體地說,如果是讀訪問,則arprot[1]=1。當(dāng)arprot[1]=1且config[i].sec_rd=1時(shí),則禁止該讀訪問,設(shè)置addr_out為異常訪問地址;如果是寫訪問,則awprot[1]=1。當(dāng)awprot[1]=1且config[i].sec_wr=1時(shí),則禁止該寫訪問,設(shè)置addr_out為異常訪問地址。
在步驟108中,訪問正常發(fā)出。
設(shè)置addr_out為addr,發(fā)出正常訪問的信號(hào),邏輯處理結(jié)束。其中,addr表示主設(shè)備訪問的地址。
在步驟109中,訪問產(chǎn)生異常。
發(fā)出訪問產(chǎn)生異常的信號(hào),邏輯處理結(jié)束。
本實(shí)施方式中,軟件開發(fā)人員僅通過配置地址空間控制器就可以靈活的指定任意配置的寄存器地址空間受到保護(hù),而不需要關(guān)心SoC(片上系統(tǒng))中的總線連接情況和總線中的地址區(qū)域控制寄存器。
本發(fā)明第二實(shí)施方式涉及一種寄存器地址空間控制器,如圖3所示。
包含:配置單元,用于為總線上的各硬件資源配置至少一個(gè)配置項(xiàng),每個(gè)配置項(xiàng)用于指定一個(gè)寄存器地址空間、和指示該寄存器地址空間是否受到讀保護(hù)或?qū)懕Wo(hù);邏輯單元,與配置單元相連,用于在接收到非安全世界的主設(shè)備的訪問時(shí),判斷非安全世界的主設(shè)備訪問的地址是否在設(shè)置的第i個(gè)配置項(xiàng)指定的寄存器地址空間內(nèi),如果主設(shè)備訪問的地址在設(shè)置的第i個(gè)配置項(xiàng)指定的寄存器地址空間內(nèi),則根據(jù)第i個(gè)配置項(xiàng)所指示的是否受到讀保護(hù)或?qū)懕Wo(hù),判斷是否允許主設(shè)備訪問;其中,i大于或等于0,并且小于或等于設(shè)置的配置項(xiàng)的個(gè)數(shù)。
進(jìn)一步地,硬件資源包含寄存器和/或隨機(jī)存取存儲(chǔ)器RAM;所述配置項(xiàng)包含4個(gè)寄存器:用于保存寄存器地址空間基址的基址寄存器、用于保存寄存器地址空間掩碼的掩碼寄存器、用于表示是否受到讀訪問保護(hù)的讀訪問保護(hù)寄存器和用于表示是否受到寫訪問保護(hù)的寫訪問保護(hù)寄存器。這些寄存器不能被非安全世界的主設(shè)備訪問。
本實(shí)施方式中,控制器通過設(shè)置的配置項(xiàng)自動(dòng)判斷被訪問的寄存器地址空間是否受保護(hù),使得軟件開發(fā)人員僅通過設(shè)置該控制器就可以靈活的指定任意寄存器地址空間受到保護(hù),而不需要關(guān)心SoC中的總線連接情況和總線中的地址區(qū)域控制寄存器,靈活性高。
不難發(fā)現(xiàn),本實(shí)施方式為與第一實(shí)施方式相對(duì)應(yīng)的設(shè)備實(shí)施例,本實(shí)施方式可與第一實(shí)施方式互相配合實(shí)施。第一實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié) 在本實(shí)施方式中依然有效,為了減少重復(fù),這里不再贅述。相應(yīng)地,本實(shí)施方式中提到的相關(guān)技術(shù)細(xì)節(jié)也可應(yīng)用在第一實(shí)施方式中。
值得一提的是,本實(shí)施方式中所涉及到的各模塊均為邏輯模塊,在實(shí)際應(yīng)用中,一個(gè)邏輯單元可以是一個(gè)物理單元,也可以是一個(gè)物理單元的一部分,還可以以多個(gè)物理單元的組合實(shí)現(xiàn)。此外,為了突出本發(fā)明的創(chuàng)新部分,本實(shí)施方式中并沒有將與解決本發(fā)明所提出的技術(shù)問題關(guān)系不太密切的單元引入,但這并不表明本實(shí)施方式中不存在其它的單元。
本發(fā)明第三實(shí)施方式涉及一種片上系統(tǒng)。第三實(shí)施方式包含第二實(shí)施方式中的寄存器地址空間控制器。
本實(shí)施方式的片上系統(tǒng),包含:總線、硬件資源、主設(shè)備和第二實(shí)施方式的寄存器地址空間控制器;其中,硬件資源、主設(shè)備和寄存器地址空間控制器均與總線相連。
如圖4所示,圖中,可以發(fā)起寄存器訪問的主設(shè)備有:CPU(中央處理器),SDIO(安全數(shù)字輸入/輸出接口)控制器,NAND(閃存設(shè)備)控制器,USB(通用串行總線)控制器,ISP(圖像信號(hào)處理器)。其寄存器空間受到寄存器地址空間控制器控制的硬件組件有:SDIO(安全數(shù)字輸入/輸出接口)控制器,NAND(閃存設(shè)備)控制器,USB(通用串行總線)控制器,ISP(圖像信號(hào)處理器),DDR(雙倍速率同步動(dòng)態(tài)隨機(jī)存儲(chǔ)器)控制器,VIDEO(視頻)處理器,GPU(圖形處理器),PWM(脈沖寬度調(diào)制)模塊,I2C(兩線式串行總線)控制器;SPI(串行外設(shè)接口)控制器,Timer(定時(shí)器),WDT(看門狗)模塊,GPIO(通用輸入/輸出)控制器。
在本實(shí)施方式中,軟件開發(fā)人員通過配置寄存器地址空間控制器就可以靈活的指定配置的任意寄存器地址空間受到保護(hù),甚至可以細(xì)化到每一個(gè)寄存器。提供給軟件開發(fā)人員的接口友好,全部接口都在寄存器地址空間控制器中。軟件開發(fā)人員只需要設(shè)置該控制器的幾個(gè)寄存器,就可以指定任意寄 存器地址空間受到保護(hù)。而不需要關(guān)心SoC中的總線連接情況和各個(gè)總線中的地址區(qū)域控制寄存器。
本領(lǐng)域的普通技術(shù)人員可以理解,上述各實(shí)施方式是實(shí)現(xiàn)本發(fā)明的具體實(shí)施例,而在實(shí)際應(yīng)用中,可以在形式上和細(xì)節(jié)上對(duì)其作各種改變,而不偏離本發(fā)明的精神和范圍。