哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

3天內不再提示

開啟MMU會出現(xiàn)的問題及解決方案

Linux閱碼場 ? 來源:Linux閱碼場 ? 作者: baron ? 2022-06-15 08:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者簡介:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


	
  1. vector_entry sync_exception_sp_elx

  2. ret

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

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

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

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

    關注

    1

    文章

    624

    瀏覽量

    37661
  • 程序
    +關注

    關注

    117

    文章

    3847

    瀏覽量

    85453
  • MMU
    MMU
    +關注

    關注

    0

    文章

    92

    瀏覽量

    19288

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

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

    關于頁表和MMU的問題

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

    有對MMU比較了解的嗎?

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

    裸機MMU實驗出現(xiàn)以下問題該怎么辦?

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

    為什么筆記本會出現(xiàn)暗屏

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

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

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

    水泵為什么會出現(xiàn)燒電機的情況?

    2月15日周五水泵為什么會出現(xiàn)燒電機的情況?帶負荷啟動可以造成電機損壞;實際使用揚程低于泵銘牌揚程太多
    的頭像 發(fā)表于 02-16 08:19 ?2w次閱讀

    MacBook Air會出現(xiàn)防反射涂層問題

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

    內存條壞了電腦會出現(xiàn)什么現(xiàn)象

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

    減速機軸承位置磨損會出現(xiàn)什么后果?怎么處理?

    減速機軸承位置磨損會出現(xiàn)什么后果?怎么處理?
    發(fā)表于 04-06 16:39 ?15次下載

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

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

    Wi-Fi 6 開啟物聯(lián)網(wǎng)解決方案

    新技術星期二:Wi-Fi 6 開啟物聯(lián)網(wǎng)解決方案
    的頭像 發(fā)表于 12-30 09:40 ?1586次閱讀

    為什么我的電源會出現(xiàn)振鈴和過熱?

    重點分析 電感問題。設計人員為了獲得各種優(yōu)勢,例如減少輸出紋波和盡量縮減解決方案尺寸,往往會選擇超出推薦范圍的電感值。然而,選擇電感值過大或過小的元件都會導致意想不到 的后果,可能會造成芯片嚴重損壞
    的頭像 發(fā)表于 05-22 12:52 ?1359次閱讀
    為什么我的電源<b class='flag-5'>會出現(xiàn)</b>振鈴和過熱?

    伺服電機慣量不足會出現(xiàn)什么現(xiàn)象

    伺服電機是現(xiàn)代工業(yè)自動化領域中非常重要的一種驅動設備,它具有高精度、高響應速度、高穩(wěn)定性等特點。然而,伺服電機在實際應用過程中,由于各種原因,可能會出現(xiàn)慣量不足的問題。本文將詳細分析伺服電機慣量不足
    的頭像 發(fā)表于 06-14 10:47 ?3086次閱讀
    瑞丽市| 临汾市| 岳阳市| 施秉县| 岑巩县| 望谟县| 荆门市| 都昌县| 溧阳市| 潞城市| 盘山县| 台中市| 锦屏县| 三台县| 栾川县| 饶阳县| 当雄县| 龙山县| 通辽市| 西乡县| 三门峡市| 长泰县| 林西县| 五指山市| 如皋市| 昆明市| 永新县| 塔城市| 高青县| 西贡区| 舞钢市| 蒙自县| 吴江市| 博白县| 朔州市| 平江县| 米脂县| 惠安县| 永州市| 布尔津县| 漠河县|