<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 解析S3C2410 MMU(存儲器管理單元)

解析S3C2410 MMU(存儲器管理單元)

作者: 時(shí)間:2018-09-14 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201809/389171.htm

descriptor_index+=1;section _base +=0x100000)

{

*(mmu_tlb_base + (descriptor_index)) = (section _base>>20) | _OTHER_SECDESC;

}

}

上面的這段段代碼把虛擬空間0x3000 0000~0x33FF FFFF映射到物理空間0x3000 0000~0x33FF FFFF,由于虛擬空間與物理空間空間相吻合,所以虛擬地址與他們各自對應的物理地址在值上是一致的。當初始完Translation Table之后,記得要把Translation Table的首地址(第0號描述符的地址)加載進(jìn)協(xié)處理器CP15的Control Register2(2號控制寄存器)中,該控制寄存器的名稱(chēng)叫做Translation table base (TTB) register。

以上討論的是descriptor中的Section Base Address以及虛擬地址和物理地址的映射關(guān)系,然而還有一個(gè)重要的功能,那就是訪(fǎng)問(wèn)控制機制(Access Permission )。

簡(jiǎn)單說(shuō)訪(fǎng)問(wèn)控制機制就是CPU通過(guò)某種方法判斷當前程序對內存的訪(fǎng)問(wèn)是否合法(是否有權限對該內存進(jìn)行訪(fǎng)問(wèn)),如果當前的程序并沒(méi)有權限對即將訪(fǎng)問(wèn)的內存區域進(jìn)行操作,則CPU將引發(fā)一個(gè)異常,s3c2410稱(chēng)該異常為Permission fault,x86架構則把這種異常稱(chēng)之為通用保護異常(General Protection),什么情況會(huì )引起Permission fault呢?比如處于User級別的程序要對一個(gè)System級別的內存區域進(jìn)行寫(xiě)操作,這種操作是越權的,應該引起一個(gè)Permission fault,搞過(guò)x86架構的朋友應該聽(tīng)過(guò)保護模式(Protection Mode),保護模式就是基于這種思想進(jìn)行工作的,于是我們也可以這么說(shuō):s3c2410的訪(fǎng)問(wèn)控制機制其實(shí)就是一種保護機制。那s3c2410的訪(fǎng)問(wèn)控制機制到底是由什么元素去參與完成的呢?它們間是怎么協(xié)調工作的呢?這些元素總共有:

1.協(xié)處理器CP15中Control Register3:DOMAIN ACCESS CONTROL REGISTER

2.段描述符中的AP位和Domain位

3.協(xié)處理器CP15中Control Register1(控制寄存器1)中的S bit和R bit

4.協(xié)處理器CP15中Control Register5(控制寄存器5)

5.協(xié)處理器CP15中Control Register6(控制寄存器6)

DOMAIN ACCESS CONTROL REGISTER 是訪(fǎng)問(wèn)控制寄存器,該寄存器有效位為32,被分成16個(gè)區域,每個(gè)區域由兩個(gè)位組成,他們說(shuō)明了當前內存的訪(fǎng)問(wèn)權限檢查的級別,如下圖所示:

每區域可以填寫(xiě)的值有4個(gè),分別為00,01,10,11(二進(jìn)制),他們的意義如下所示:

00:當前級別下,該內存區域不允許被訪(fǎng)問(wèn),任何的訪(fǎng)問(wèn)都會(huì )引起一個(gè)domain fault

01:當前級別下,該內存區域的訪(fǎng)問(wèn)必須配合該內存區域的段描述符中AP位進(jìn)行權檢查

10:保留狀態(tài)(我們最好不要填寫(xiě)該值,以免引起不能確定的問(wèn)題)

11:當前級別下,對該內存區域的訪(fǎng)問(wèn)都不進(jìn)行權限檢查。

我們再來(lái)看看discriptor中的Domain區域,該區域總共有4個(gè)bit,里面的值是對DOMAIN ACCESS CONTROL REGISTER中16個(gè)區域的索引.而AP位配合S bit和A bit對當前描述符描述的內存區域被訪(fǎng)問(wèn)權限的說(shuō)明,他們的配合關(guān)系如下圖所示:

AP位也是有四個(gè)值,我結合實(shí)例對其進(jìn)行說(shuō)明.

在下面的例子中,我們的DOMAIN ACCESS CONTROL REGISTER都被初始化成0xFFFF BDCF,如下圖所示:


例1:

Discriptor 中的domain=4,AP=10(這種情況下S bit ,A bit 被忽略)

假設現在我要對該描述符描述的內存區域進(jìn)行訪(fǎng)問(wèn):

由于domain=4,而DOMAIN ACCESS CONTROL REGISTER中field 4的值是01,系統會(huì )對該訪(fǎng)問(wèn)進(jìn)行訪(fǎng)問(wèn)權限的檢查。

假設當前CPU處于Supervisor模式下,則程序可以對該描述符描述的內存區域進(jìn)行讀寫(xiě)操作。

假設當前CPU處于User模式下,則程序可以對該描述符描述的內存進(jìn)行讀訪(fǎng)問(wèn),若對其進(jìn)行寫(xiě)操作則引起一個(gè)permission fault.

例2:

Discriptor 中的domain=0,AP=10(這種情況下S bit ,A bit 被忽略)

domain=0,而DOMAIN ACCESS CONTROL REGISTER中field 0的值是11,系統對任何內存區域的訪(fǎng)問(wèn)都不進(jìn)行訪(fǎng)問(wèn)權限的檢查。

由于統對任何內存區域的訪(fǎng)問(wèn)都不進(jìn)行訪(fǎng)問(wèn)權限的檢查,所以無(wú)論CPU處于合種模式下(Supervisor模式或是User模式),程序對該描述符描述的內存都可以順利地進(jìn)行讀寫(xiě)操作

例3:Discriptor 中的domain=4,AP=11(這種情況下S bit ,A bit 被忽略)

由于domain=4,而DOMAIN ACCESS CONTROL REGISTER中field 4的值是01,系統會(huì )對該訪(fǎng)問(wèn)進(jìn)行訪(fǎng)問(wèn)權限的檢查。

由于A(yíng)P=11,所以無(wú)論CPU處于合種模式下(Supervisor模式或是User模式),程序對該描述符描述的內存都可以順利地進(jìn)行讀寫(xiě)操作

例4:

Discriptor 中的domain=4,AP=00, S bit=0,A bit=0

由于domain=4,而DOMAIN ACCESS CONTROL REGISTER中field 4的值是01,系統會(huì )對該訪(fǎng)問(wèn)進(jìn)行訪(fǎng)問(wèn)權限的檢查。

由于A(yíng)P=00,S bit=0,A bit=0,所以無(wú)論CPU處于合種模式下(Supervisor模式或是User模式),程序對該描述符描述的內存都只能進(jìn)行讀操作,否則引起permission fault.

通過(guò)以上4個(gè)例子我們得出兩個(gè)結論:

1.對某個(gè)內存區域的訪(fǎng)問(wèn)是否需要進(jìn)行權限檢查是由該內存區域的描述符中的Domain域決定的。

2.某個(gè)內存區域的訪(fǎng)問(wèn)權限是由該內存區域的描述符中的AP位和協(xié)處理器CP15中Control Register1(控制寄存器1)中的S bit和R bit所決定的。

關(guān)于訪(fǎng)問(wèn)控制機制我們就講到這里.



關(guān)鍵詞: S3C2410 MMU 存儲器管理單元

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>