一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

作者簡(jiǎn)介:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如果看到此處,您沒有看懂,沒關(guān)系,請(qǐng)看下列代碼示例:

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

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

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


	
  1. vector_entry sync_exception_sp_elx

  2. ret

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

原文標(biāo)題:Baron:程序運(yùn)行過程中突然打開MMU會(huì)怎么樣?

文章出處:【微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(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)投訴
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    616

    瀏覽量

    36468
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3826

    瀏覽量

    82993
  • MMU
    MMU
    +關(guān)注

    關(guān)注

    0

    文章

    92

    瀏覽量

    18752

原文標(biāo)題:Baron:程序運(yùn)行過程中突然打開MMU會(huì)怎么樣?

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    TLE9879開啟看門狗后不喂狗也不會(huì)出現(xiàn)復(fù)位的現(xiàn)象是為什么?

    開啟看門狗后不喂狗也不會(huì)出現(xiàn)復(fù)位的現(xiàn)象,用官方例程也是一樣的效果,有人遇到過這個(gè)情況嗎?
    發(fā)表于 02-19 07:06

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

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

    立體智慧倉儲(chǔ)解決方案.#云計(jì)算

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

    關(guān)于頁表和MMU的問題

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

    有對(duì)MMU比較了解的嗎?

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

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

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

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

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

    對(duì)MMU和頁表工作機(jī)制的簡(jiǎn)單評(píng)析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    伺服電機(jī)是現(xiàn)代工業(yè)自動(dòng)化領(lǐng)域中非常重要的一種驅(qū)動(dòng)設(shè)備,它具有高精度、高響應(yīng)速度、高穩(wěn)定性等特點(diǎn)。然而,伺服電機(jī)在實(shí)際應(yīng)用過程中,由于各種原因,可能會(huì)出現(xiàn)慣量不足的問題。本文將詳細(xì)分析伺服電機(jī)慣量不足
    的頭像 發(fā)表于 06-14 10:47 ?2113次閱讀