0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PMP物理內(nèi)存保護(hù)介紹

麥辣雞腿堡 ? 來源:嵌入式Linux充電站 ? 作者: Vincent ? 2023-10-07 17:49 ? 次閱讀

PMP 和 Paging

物理內(nèi)存保護(hù)機(jī)制旨在與 RISC?V 指令集手冊(cè),第二卷:特權(quán)架構(gòu),版本 1.10 中描述的基于頁面的虛擬內(nèi)存系統(tǒng)組合。啟用分頁后,訪問虛擬內(nèi)存的指令可能會(huì)導(dǎo)致多次物理內(nèi)存訪問,包括對(duì)頁表的隱式引用。PMP 檢查適用于所有這些訪問。隱式頁表訪問的有效特權(quán)模式是管理員模式。

允許使用虛擬內(nèi)存的實(shí)現(xiàn)以推測(cè)方式執(zhí)行地址轉(zhuǎn)換,并且比顯式虛擬內(nèi)存訪問所需的時(shí)間更早??梢栽诘刂忿D(zhuǎn)換和顯式虛擬內(nèi)存訪問之間的任何時(shí)候檢查結(jié)果物理地址的 PMP 設(shè)置。到不可執(zhí)行地址范圍的錯(cuò)誤預(yù)測(cè)分支不會(huì)生成陷阱。因此,當(dāng)以影響保存頁表的物理內(nèi)存或頁表指向的物理內(nèi)存的方式修改 PMP 設(shè)置時(shí),M 模式軟件必須將 PMP 設(shè)置與虛擬內(nèi)存系統(tǒng)同步。這是通過在寫入 PMP CSR 后執(zhí)行 rs1=x0 和 rs2=x0 的 SFENCE.VMA 指令來實(shí)現(xiàn)的。

如果未實(shí)現(xiàn)基于頁面的虛擬內(nèi)存,或者當(dāng)它被禁用時(shí),內(nèi)存訪問會(huì)同步檢查 PMP 設(shè)置,因此不需要 fence。

PMP 限制

在包含多個(gè) hart 的系統(tǒng)中,每個(gè) hart 都有自己的 PMP 設(shè)備。hart 上的 PMP 權(quán)限不能應(yīng)用于多 hart 系統(tǒng)中其他 hart 的訪問。此外, SiFive 設(shè)計(jì)可能包含一個(gè)前端端口,以允許外部總線主控器訪問系統(tǒng)的完整內(nèi)存映射。PMP 無法阻止前端端口上的外部總線主控器的訪問。

沒有 PMP 保護(hù)的區(qū)域的行為

如果內(nèi)存映射的非保留區(qū)域沒有應(yīng)用 PMP 權(quán)限,則默認(rèn)情況下,管理員或用戶模式訪問將失敗,而機(jī)器模式訪問將被允許。

訪問設(shè)備內(nèi)存映射中的保留區(qū)域(例如中斷控制器)讀取時(shí)將返回 0x0,寫入將被忽略。在沒有 PMP 保護(hù)的情況下訪問設(shè)備內(nèi)存映射之外的保留區(qū)域?qū)?dǎo)致總線錯(cuò)誤??偩€錯(cuò)誤可以使用總線錯(cuò)誤單元 (BEU) 對(duì) hart 產(chǎn)生中斷。

PMP 保護(hù)區(qū)的緩存刷新行為

當(dāng)一條線被帶入高速緩存并且 PMP 設(shè)置為斷言鎖定 (L) 位以保護(hù)該線的一部分時(shí),數(shù)據(jù)高速緩存刷新指令將生成存儲(chǔ)訪問錯(cuò)誤異常,如果沖洗包括受保護(hù)的線路的任何部分。緩存刷新指令執(zhí)行無效和回寫,因此它實(shí)際上是在嘗試寫回受保護(hù)的內(nèi)存位置。

如果緩存刷新發(fā)生在未受保護(hù)的部分行上,刷新將成功并且不會(huì)產(chǎn)生異常。如果需要在沒有回寫的情況下刷新數(shù)據(jù)高速緩存,請(qǐng)改用高速緩存丟棄指令,因?yàn)檫@會(huì)使該行無效但不會(huì)回寫。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 內(nèi)核
    +關(guān)注

    關(guān)注

    3

    文章

    1336

    瀏覽量

    40084
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    2902

    瀏覽量

    73536
  • 設(shè)備
    +關(guān)注

    關(guān)注

    2

    文章

    4347

    瀏覽量

    70271
  • PMP
    PMP
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    18100
  • RISC
    +關(guān)注

    關(guān)注

    6

    文章

    460

    瀏覽量

    83566
  • sifive
    +關(guān)注

    關(guān)注

    0

    文章

    34

    瀏覽量

    9443
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    管理STM32 MCU中的內(nèi)存保護(hù)單元

    本應(yīng)用筆記介紹如何管理 STM32 產(chǎn)品中的內(nèi)存保護(hù)單元(MPU)。MPU 是用于存儲(chǔ)器保護(hù)的可選組件。STM32 微控制器(MCU)中嵌入 MPU 之后變得更穩(wěn)健可靠。在使用 MPU 之前,必須對(duì)其進(jìn)行編程并加以啟用。如果 M
    發(fā)表于 12-23 11:04 ?946次閱讀

    STM32H750在使能內(nèi)存保護(hù)后啟用cache導(dǎo)致SPI+DMA傳輸不準(zhǔn)確怎么解決?

    STM32H750在使能內(nèi)存保護(hù)后啟用cache 導(dǎo)致SPI+DMA傳輸不準(zhǔn)確,具體就是調(diào)用HAL_SPI_TransmitReceive_DMA 這個(gè)函數(shù),讀到的數(shù)據(jù)全是0,但是拿邏輯分析儀看上面顯示的數(shù)據(jù)是正確的。
    發(fā)表于 03-07 06:12

    STM32H750使能內(nèi)存保護(hù)后DMA異常的原因?怎么解決?

    STM32H750 在使能內(nèi)存保護(hù)后啟用cache 導(dǎo)致SPI+DMA傳輸不準(zhǔn)確,具體就是調(diào)用HAL_SPI_TransmitReceive_DMA 這個(gè)函數(shù),讀到的數(shù)據(jù)全是0,但是拿邏輯分析儀看上面顯示的數(shù)據(jù)是正確的。
    發(fā)表于 05-24 07:53

    玄鐵VirtualZone:基于RISC-V架構(gòu)的安全擴(kuò)展

    ,RISC-V技術(shù)提供了有兩種具備安全擴(kuò)展能力的屬性:物理內(nèi)存保護(hù)PMP)和機(jī)器特權(quán)模式(M-mode)。PMP物理地址
    發(fā)表于 09-01 14:38

    如何為MPC5744P配置內(nèi)存保護(hù)單元?

    我想知道更多關(guān)于如何為 MPC5744P 配置內(nèi)存保護(hù)單元,我需要知道如何使用這個(gè)配置器。
    發(fā)表于 04-04 09:03

    Armv8-M內(nèi)存模型與內(nèi)存保護(hù)用戶指南

    本指南概述了Armv8-M內(nèi)存模型和內(nèi)存保護(hù)單元(MPU)在Cortex-M處理器中實(shí)現(xiàn)。本指南使用示例來幫助解釋這些概念 它介紹了。 本章概述以下主題: ?內(nèi)存模型 ?
    發(fā)表于 08-02 08:12

    如何管理STM32產(chǎn)品中的內(nèi)存保護(hù)單元(MPU)

    本應(yīng)用筆記介紹如何管理 STM32 產(chǎn)品中的內(nèi)存保護(hù)單元(MPU)。MPU 是用于存儲(chǔ)器保護(hù)的可選組件。STM32 微控制器(MCU)中嵌入 MPU 之后變得更穩(wěn)健可靠。在使用 MPU 之前,必須
    發(fā)表于 09-07 06:23

    Cortex-M內(nèi)核的MPU內(nèi)存保護(hù)單元

    講講Cortex-M內(nèi)核的MPU內(nèi)存保護(hù)單元
    的頭像 發(fā)表于 03-04 11:17 ?3476次閱讀
    Cortex-M內(nèi)核的MPU<b class='flag-5'>內(nèi)存保護(hù)</b>單元

    為什么要使用MPU?MPU如何實(shí)現(xiàn)內(nèi)存保護(hù)?

    如果你開發(fā)的嵌入式項(xiàng)目,因內(nèi)存溢出,或者內(nèi)存故障等一些原因,造成了重大經(jīng)濟(jì)損失,或者造成了重大事故,你就能體會(huì)為什么要使用內(nèi)存保護(hù)單元(MPU)了。
    的頭像 發(fā)表于 07-05 17:38 ?6544次閱讀
    為什么要使用MPU?MPU如何實(shí)現(xiàn)<b class='flag-5'>內(nèi)存保護(hù)</b>?

    管理 STM32 MCU 中的內(nèi)存保護(hù)單元

    管理 STM32 MCU 中的內(nèi)存保護(hù)單元
    發(fā)表于 11-21 08:11 ?4次下載
    管理 STM32 MCU 中的<b class='flag-5'>內(nèi)存保護(hù)</b>單元

    AN4838 管理STM32 MCU中的內(nèi)存保護(hù)單元

    AN4838 管理STM32 MCU中的內(nèi)存保護(hù)單元
    發(fā)表于 11-21 17:07 ?0次下載
    AN4838 管理STM32 MCU中的<b class='flag-5'>內(nèi)存保護(hù)</b>單元

    應(yīng)用筆記|管理STM32 MCU中的內(nèi)存保護(hù)單元

    內(nèi)存保護(hù)單元(MPU)。MPU 是用于存儲(chǔ)器保護(hù)的可選組件。STM32 微控制器(MCU)中嵌入 MPU 之后變得更穩(wěn)健可靠。在使用 MPU 之前,必須對(duì)其進(jìn)行編程并加以啟用。如果 MPU 沒有啟用,則
    的頭像 發(fā)表于 12-21 21:05 ?893次閱讀

    為什么要使用MPU?MPU如何實(shí)現(xiàn)內(nèi)存保護(hù)?

    如果你開發(fā)的嵌入式項(xiàng)目,因內(nèi)存溢出,或者內(nèi)存故障等一些原因,造成了重大經(jīng)濟(jì)損失,或者造成了重大事故,你就能體會(huì)為什么要使用內(nèi)存保護(hù)單元(MPU)了。
    的頭像 發(fā)表于 02-24 11:59 ?2483次閱讀

    什么是MPU?MPU在哪些方面保護(hù)內(nèi)存安全?

    內(nèi)存保護(hù)單元(MPU)是一種硬件機(jī)制,通過只允許代碼訪問需要的內(nèi)存和外設(shè)來提高嵌入式設(shè)備的安全性。
    的頭像 發(fā)表于 06-12 09:06 ?9543次閱讀
    什么是MPU?MPU在哪些方面<b class='flag-5'>保護(hù)</b><b class='flag-5'>內(nèi)存</b>安全?

    如何管理STM32產(chǎn)品中的內(nèi)存保護(hù)單元(MPU)

    電子發(fā)燒友網(wǎng)站提供《如何管理STM32產(chǎn)品中的內(nèi)存保護(hù)單元(MPU).pdf》資料免費(fèi)下載
    發(fā)表于 08-01 09:15 ?0次下載
    如何管理STM32產(chǎn)品中的<b class='flag-5'>內(nèi)存保護(hù)</b>單元(MPU)