在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

開啟MMU會出現的問題及解決方案

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者: baron ? 2022-06-15 08:55 ? 次閱讀

作者簡介:

Baron (csdn:代碼改變世界ctw),九年手機安全/SOC底層安全開發經驗。擅長trustzone/tee安全產品的設計和開發

注:說明本文的介紹都是基于armv8-aarch64或armv9硬件架構

在mmu未開啟階段,PC操作的都是物理地址執行程序,這樣看起來一切正常,沒啥問題。

例如:取指(到物理地址0x4000處取指)、譯碼、執行取指(物理地址0x4004處取指)、譯碼、執行取指(物理地址0x4008處取指)、譯碼、執行取指(物理地址0x400C處取指)、譯碼、執行

但是呢,假如程序在執行的過程中,你突然打開了MMU,那么會發生什么呢?比如在前面的示例中,就會出現,程序本來執行在0X4000、0x4004處好好的,而0x4004切好是enable_mmu指令,那么接下來PC將取值0x4008處地址的指令,由于此時MMU已經被打開了,那么0x4008會被當作虛擬地址,經過MMU翻譯...

經過MMU,那么就可能出現了兩種問題:一是虛擬地址0x4008所對應的頁表沒有建立,此時會產生prefetch abort;二是虛擬地址0x4008所對應的頁表已經建立了(例如指向物理0x9004處),那么此時cpu期望訪問物理地址0x4008處的,就被突然變成了訪問物理地址0x9004處了。

取指(到到物理地址0x4000處取指)、譯碼、執行取指(物理地址0x4004處取指)、譯碼、執行 -- 這條指令是開啟MMU取指(到虛擬地址0x4008處取指,經MMU單元后,要么是invalid,要么是0x9004)、譯碼、執行......

d490aaa8-ec3f-11ec-ba43-dac502259ad0.png

為了解決上述描述的問題,下面給出了兩種解決方案:第一種方案:在開啟MMU之前,我先對正在執行的這一小塊代碼建立個頁表(一一映射),那么此時的邏輯就變成了:

取指(到到物理地址0x4000處取指)、譯碼、執行取指(物理地址0x4004處取指)、譯碼、執行 -- 這條指令是開啟MMU取指(到虛擬地址0x4008處取指,經MMU單元后,物理地址依然是是0x4008)、譯碼、執行 -- 程序沒有跑飛......

d4a2db1a-ec3f-11ec-ba43-dac502259ad0.png

第二種方案:在開啟MMU之前,我確實建立個頁表(不是一一映射哦,這是正常業務的頁表),此時的邏輯如下:

取指(到到物理地址0x4000處取指)、譯碼、執行取指(物理地址0x4004處取指)、譯碼、執行 -- 這條指令是開啟MMU取指,到虛擬地址0x4008處取指,經MMU單元時在頁表是找不到0x4008這個虛擬地址的(因為沒做map),所以會產生prefetch abort異常、而在異常代碼ERET返回時,正好返回到0xXXXX地址處,該地址是虛擬地址,正好MAP到0x4008物理地址,程序得到繼續執行,譯碼、執行 -- 程序很順利哦......

d4b714f4-ec3f-11ec-ba43-dac502259ad0.png

如果看到此處,您沒有看懂,沒關系,請看下列代碼示例:

d4caa3a2-ec3f-11ec-ba43-dac502259ad0.png

程序在(1)處將 mmu_on_addr鏈接地址(虛擬地址)寫入到了X30寄存器中程序在(2)處enable MMU,此時下一條指令取指,將被當作成虛擬地址,經過MMU翻譯,而對應的頁表中自然是沒有這個地址(物理地址被當作成的虛擬地址),所以此時將產生sync abort...程序在(3)處不會被執行,因為上面已經sync abort了

跳轉到sync abort后,代碼如下方所示,什么都沒干,直接ret返回了。


	
  1. vector_entry sync_exception_sp_elx

  2. ret

ret指令返回的,PC自然是自動指向X30地址處,即 mmu_on_addr鏈接地址(虛擬地址),程序繼續跑,一切步入正常流程...

原文標題:Baron:程序運行過程中突然打開MMU會怎么樣?

文章出處:【微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 指令
    +關注

    關注

    1

    文章

    607

    瀏覽量

    35714
  • 程序
    +關注

    關注

    117

    文章

    3787

    瀏覽量

    81049
  • MMU
    MMU
    +關注

    關注

    0

    文章

    91

    瀏覽量

    18291

原文標題:Baron:程序運行過程中突然打開MMU會怎么樣?

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    TLE9879開啟看門狗后不喂狗也不會出現復位的現象是為什么?

    開啟看門狗后不喂狗也不會出現復位的現象,用官方例程也是一樣的效果,有人遇到過這個情況嗎?
    發表于 02-19 07:06

    uart串口和mqtt同時啟用,開啟藍牙掃描就會出現wifi連接超時和mqtt心跳包收不到的情況,為什么?

    uart串口和mqtt同時啟用,這時候開啟藍牙掃描就會出現wifi連接超時和mqtt心跳包收不到的情況。 也可以是我藍牙掃描和mqtt在共存時,這時加上一個uart就會出現wifi超時,mqtt
    發表于 06-05 06:06

    立體智慧倉儲解決方案.#云計算

    解決方案智能設備
    學習電子知識
    發布于 :2022年10月06日 19:45:47

    關于頁表和MMU的問題

    剛開始學,好多東西都云里霧里的TT為什么在bootloader里要進行頁表初始化然后開啟MMU,然后在進入內核后還要創建頁表開啟MMU?這兩個有什么不一樣么?s3c2410,bootl
    發表于 05-06 17:25

    有對MMU比較了解的嗎?

    我最近在寫一個MMU的裸機程序,但是無論怎么映射都不行,一旦開啟MMU,程序就會卡住。我想問的是寫MMU的程序對鏈接腳本和程序本身有什么特別的要求嗎?我的映射代碼如下(0~0x6000
    發表于 01-10 21:43

    裸機MMU實驗出現以下問題該怎么辦?

    剛接觸裸板程序,自己編mmu,make出問題,然后用韋老師MMU實驗代碼,make也出現問題如圖,
    發表于 08-28 22:42

    為什么使用STM32F103的RTC會出現外部的晶振不起振現象呢

    為什么使用STM32F103的RTC會出現外部的晶振不起振現象呢?有什么解決方案嗎?
    發表于 11-24 06:44

    am335x裸機開啟mmu和cache后,ucos2任務不能調度如何排查?

    beaglebone 開啟mmu和cache后,ucos2卡在 OSStartHighRdy,無法調度任務,請問如何排查?
    發表于 01-12 06:41

    為什么筆記本會出現暗屏

    為什么筆記本會出現暗屏   您好,為什么筆記本會出現暗屏呢? 屏暗是怎樣產生呢?普遍有以下4種情況:第一種是燈管出
    發表于 01-21 11:27 ?831次閱讀

    MMU和頁表工作機制的簡單評析

    對于一個有MMU的CPU而言,MMU開啟后,CPU是這樣尋址的:CPU任何時候,一切時候,發出的地址都是虛擬地址,這個虛擬地址發給MMU后,MMU
    的頭像 發表于 02-02 14:08 ?1.1w次閱讀
    對<b class='flag-5'>MMU</b>和頁表工作機制的簡單評析

    MacBook Air會出現防反射涂層問題

    蘋果本周在與蘋果授權服務提供商共享的備忘錄中指出,配備Retina顯示屏的MacBook Air型號可能會出現防反射涂層問題。備忘錄指出:“某些MacBook,MacBook Air和MacBook Pro電腦上的視網膜顯示屏可能會出現防反射涂層問題。”
    的頭像 發表于 03-27 14:39 ?2930次閱讀

    內存條壞了電腦會出現什么現象

    內存條壞了電腦會出現什么狀況呢,下面我們來告訴你吧。內存條壞了電腦會出現以下狀況:
    發表于 06-17 10:33 ?3.7w次閱讀

    為什么要用MMU?為什么要用虛擬地址?

    既然MMU開啟后,硬件會自動的將虛擬地址轉換成物理地址,那么還需要我們軟件做什么事情呢?即創建一個頁表翻譯都需要做哪些事情呢?或者說啟用一個MMU需要軟件做什么事情呢?
    的頭像 發表于 04-26 14:37 ?4941次閱讀

    Wi-Fi 6 開啟物聯網解決方案

    新技術星期二:Wi-Fi 6 開啟物聯網解決方案
    的頭像 發表于 12-30 09:40 ?792次閱讀

    為什么我的電源會出現振鈴和過熱?

    重點分析 電感問題。設計人員為了獲得各種優勢,例如減少輸出紋波和盡量縮減解決方案尺寸,往往會選擇超出推薦范圍的電感值。然而,選擇電感值過大或過小的元件都會導致意想不到 的后果,可能會造成芯片嚴重損壞
    的頭像 發表于 05-22 12:52 ?369次閱讀
    為什么我的電源<b class='flag-5'>會出現</b>振鈴和過熱?
    主站蜘蛛池模板: avtt天堂网 手机资源| a天堂中文在线官网| 欧美xxxxx精品| 美国色综合| 国产精品亚洲一区二区三区在线播放| 成人在线综合网| 欧美午夜视频| 乱说欲小说又粗又长| 亚洲成人在线播放| 黄色视屏免费在线观看| 人人操在线播放| 免费国产h视频在线观看| 午夜爽爽爽| 六月婷婷久久| 免费高清视频在线观看| 激情伦成人综合小说| 四虎在线播放免费永久视频| 久久综合欧美| 久久大综合| 亚洲视频第一页| 国产骚b| 手机看片日韩国产| 98色花堂永久地址国产精品| 成年人污视频| 日本黄段视频| 复古毛片| 丁香五月缴情综合网| 酒色成人| 日黄网站| 日夜夜操| 一级毛片免费全部播放完整| 国产啊v在线观看| 18videosex欧美69| 婷婷六月在线| 五月天婷婷亚洲| 色爱区综合激情五月综合激情 | 1区2区3区4区| 成人综合在线观看| 日本免费www| 狠狠噜天天噜日日噜| 日本加勒比在线播放|