色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

hypervisor的調試分析方法

我快閉嘴 ? 來源:嵌入式ARM和Linux ? 作者:嵌入式ARM和Linux ? 2022-10-08 09:40 ? 次閱讀

我們在編寫裸機程序(baremetal)、虛擬化管理程序(hypervisor)和操作系統(OS)時,Debug分析程序是必不可少的。不像linux內核,有大量的調試方法,很多裸機程序、hypervisor沒有完善的調試分析方法。

異常相關寄存器

但也不是無計可施,在硬件上,ARM架構為程序的異常行為提供了詳細的寄存器:

ESR_ELx寄存器(x=1,2,3)

保存發生異常時的特征,比如異常分類(ESR_ELx.EC)、異常具體原因(ESR_ELx.ISS)等。

ELR_ELx寄存器(x=1,2,3)

保存發生異常時,保存要返回的地址,一般情況下就是發生異常時的指令地址。

FAR_ELx寄存器(x=1,2,3)

保存錯誤地址。

HPFAR_EL2寄存器

保存stage-2階段的地址轉換發生的錯誤IPA地址。

ARM從硬件架構上設計了4層異常級:EL0、EL1、EL2和EL3。不同特權等級的程序,運行在不同的異常級上。本文從hypervisor虛擬機管理程序的角度,講解如何利用這些寄存器,對程序的異常情況進行分析。

hypervisor本身的abort異常

我們以meta-hypervisor出現的具體異常為例:

esr_el2=0x97010046
elr_el2=0xfd8000005880
far_el2=0xfd8000005880

在這兒,esr_el2的值為0x97010046,對應的位域為:

EC IL ISS
100101 1 1_0000_0001_0000_0000_0100_0110

EC = 100101:

說明是數據abort異常,但是沒有發生異常級改變(EL2);或者,當支持嵌套虛擬化時與VNCR_EL2相關的訪問產生的數據abort異常。

ISS編碼(數據abort異常的具體原因)

ISV SAS SSE SRT SF AR VNCR LST FnV EA CM S1PTW WnR DFSC
24 23-22 21 20-16 15 14 13 12-11 10 9 8 7 6 5-0
1 00 0 00001 0 0 0 00 0 0 0 0 1 000110

通過上面各個位域的信息,綜合得出:把W1寄存器中一個字節的數據寫入內存時發生的錯誤。

我們再來看匯編代碼中,0xfd8000005880地址處的內容:

void *memset(void *dest, uint32_t c, uint32_t count)
{
    // ......省略
        *d = c;
    fd8000005874:   b94007e0    ldr w0, [sp, #4]
    fd8000005878:   12001c01    and w1, w0, #0xff
    fd800000587c:   f9400fe0    ldr x0, [sp, #24]
    fd8000005880:   39000001    strb    w1, [x0]
        d++;
    fd8000005884:   f9400fe0    ldr x0, [sp, #24]
    fd8000005888:   91000400    add x0, x0, #0x1
    fd800000588c:   f9000fe0    str x0, [sp, #24]
}

代碼中,fd8000005880: 39000001 strb w1, [x0]確實是往x0寄存器中的地址寫入一個字節。這正好與我們對異常原因分析的結果相同。說明異常正是memset函數發生的錯誤。

ISV: 1, 說明23-14位保存著合法指令的異常信息

SAS: 00, 說明訪問字節數據時產生的錯誤

SSE: 0, 字節訪問不要求符號擴展

SRT: 00001,錯誤指令的Wt/Xt/Rt操作數的寄存器編號

SF: 0, 指令訪問的是32位通用寄存器

AR: 0, 指令沒有aquire/release語義

VNCR:0, 保留

LST: 00, 產生abort異常的指令未指定

FnV: 0, FAR寄存器是合法的

EA: 0, 表示不是外部abort

CM: 0, 表示錯誤不是由cache維護指令產生的

S1PTW: 0, 表示不是stage-2錯誤

WnR: 0, 表示寫內存

DFSC:000110,L2地址翻譯錯誤

如果memset函數只有一處調用的話,Bug原因結合代碼就很容易分析出來了。但是,我們自己編寫的hypervisor中有很多處調用memset函數的地方。所以,就文中的bug示例而言,目前還不能分析出原因。所以,我們需要使用qemu模擬器,通過gdb進行單步調試,看看出問題的代碼位置(參見下一篇《QEMU+GDB調試ARM程序》)。

Guest OS的abort異常

我們設計的hypervisor支持Guest OS觸發的4類異常,具體定義如下:

abort_handler_tabort_handlers[64]=
{
[ESR_EC_DALEL]=aborts_data_lower,
[ESR_EC_SMC64]=smc64_handler,
[ESR_EC_SYSRG]=sysreg_handler,
[ESR_EC_HVC64]=hvc64_handler
};

ESR_EC_HVC64 = 0x16:用于處理Guest OS發起的HVC調用,我們設計使用HVC指令在VM之間建立通信

ESR_EC_SMC64 = 0x17:用于處理Guest OS發起的SMC調用,我們知道ARM規定了PSCI規范,通過將電源管理等代碼在ATF代碼中實現,這樣就實現了資源的安全管理。PSCI規范的底層就是通過SMC指令實現的。hypervisor需要將Guest OS發起的虛擬核的PSCI調用轉發給物理核。

ESR_EC_SYSRG = 0x18:模擬寄存器和外設。因為Guest OS需要訪問一些特殊寄存器和外設,而外設有時候需要多個VM共享,hypervisor對其進行模擬。

ESR_EC_DALEL = 0x24:用于處理Guest OS發生的abort異常。比如,Guest OS訪問我們未指定的物理內存。

對于ESR_EL2寄存器的分析,與前面的一段一樣,不在具體詳述。

而HPFAR_EL2寄存器保存著出錯的IPA地址,通過該地址,我們就可以知道,Guest OS訪問哪塊內存出錯,就能解決某些bug了。

審核編輯:湯梓紅

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

    關注

    134

    文章

    9084

    瀏覽量

    367386
  • 寄存器
    +關注

    關注

    31

    文章

    5336

    瀏覽量

    120230
  • Linux
    +關注

    關注

    87

    文章

    11292

    瀏覽量

    209328

原文標題:ARM深入理解-hypervisor調試方法一(異常寄存器分析)

文章出處:【微信號:嵌入式ARM和Linux,微信公眾號:嵌入式ARM和Linux】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    QEMU+GDB調試ARM程序

    通過GDB調試代碼的便利性無需贅言。我們直接以調試meta-hypervisor為示例進行說明。
    的頭像 發表于 10-08 09:17 ?2909次閱讀

    電源管理入門:Hypervisor中的電源管理

    很多時候聽說Hypervisor,但是對底層軟件技術不了解的人感覺挺神秘。本篇文章簡單介紹下Hypervisor的基本概念,另外介紹下電源管理在Hypervisor之上多OS間怎么應用。
    的頭像 發表于 12-06 09:27 ?1447次閱讀
    電源管理入門:<b class='flag-5'>Hypervisor</b>中的電源管理

    學習hypervisor嵌入式產品安全設計

    第一部分(第1~2章)介紹Hypervisor基礎,涵蓋虛擬化技術與實現、主流的嵌入式Hypervisor產品,以及基于分離內核的嵌入式Hypervisor等內容。第二部分(第3~12章)介紹嵌入式
    發表于 08-25 09:11

    【「嵌入式Hypervisor:架構、原理與應用」閱讀體驗】+第一二章讀后感

    非常感謝社區提供的閱讀機會,拿到書后,就迫不及待的的開始閱讀了。 社區還有簽名留念呢,值得紀念。 《嵌入式Hypervisor:架構、原理與應用》的第一、二章為讀者提供了關于Hypervisor技術
    發表于 10-09 18:22

    【「嵌入式Hypervisor:架構、原理與應用」閱讀體驗】+第三四章閱讀報告

    保證系統實時性的同時,提供強大的虛擬化支持。 功能特性 :深入分析了PRTOS Hypervisor的功能特性,如虛擬機管理、資源調度、安全隔離等。這些特性使得PRTOS Hypervisor能夠滿足
    發表于 10-09 18:29

    【「嵌入式Hypervisor:架構、原理與應用」閱讀體驗】+全文學習心得

    景和需求,選擇合適的特性和策略,以實現最佳的系統性能和資源利用率。 三、實際應用與案例分析 在書籍的后半部分,我深入學習了嵌入式Hypervisor在各個領域中的實際應用和案例分析。這些領域包括物聯網
    發表于 10-09 19:11

    【「嵌入式Hypervisor:架構、原理與應用」閱讀體驗】+ 了解Hypervisor

    正值舉國歡度國慶佳節之際,我收到了《嵌入式Hypervisor:架構、原理與應用》一書,在此感謝電子發燒友論壇!當初申請評測此書之時,我根本就不知道這個Hypervisor是什么,只是看到有嵌入式
    發表于 10-13 16:47

    【「嵌入式Hypervisor:架構、原理與應用」閱讀體驗】+ Hypervisor應用場景調研

    繼續研讀《嵌入式Hypervisor:架構、原理與應用》,想搞清楚Hypervisor的具體應用場景,是否能用于我們的嵌入式產品設計。 通過閱讀“Hypervisor類型和產品”一節,知道了
    發表于 10-14 11:21

    嵌入式Hypervisor的相關資料分享

    https://blog.csdn.net/bbc955625132551/article/details/71597863“hypervisor 的核心要素之一是頁映射器,它將硬件指向特定操作系統
    發表于 11-09 07:58

    怎樣通過波形分析方法調試UART收發呢

    首先對UART數據波形進行分析:本文通過對一步串行數據格式的分析,闡述通過波形分析方法調試UART收發原理和
    發表于 01-24 08:18

    Enea推出實現系統整合技術Enea Hypervisor

    Enea推出實現系統整合技術Enea Hypervisor Enea最新推出的Enea Hypervisor使Enea公司多核技術得到了進一步拓展。Enea Hypervisor (在多核處理器上實現了多元高性能計算環境的構建
    發表于 03-19 14:04 ?820次閱讀

    Enea Hypervisor技術培訓簡化多核開發過程

    Enea Hypervisor技術培訓簡化多核開發過程 Enea公司最新推出的Enea Hypervisor使Enea公司多核技術得到了進一步拓展。Enea Hypervisor (www.enea.com/
    發表于 03-22 10:12 ?593次閱讀

    嵌入式Hypervisor了解

    https://blog.csdn.net/bbc955625132551/article/details/71597863“hypervisor 的核心要素之一是頁映射器,它將硬件指向特定操作系統
    發表于 11-03 20:36 ?3次下載
    嵌入式<b class='flag-5'>Hypervisor</b>了解

    虛擬化概述,Hypervisor簡介

    主操作系統內嵌Hypervisor擴展,一般稱為Type2 Hypervisor,基本管理功能可以通過主機操作系統實現,Hypervisor擴展只專注于虛擬化支持,與主機操作系統配合實現虛擬化功能。這類
    的頭像 發表于 09-09 15:03 ?8280次閱讀

    教程 8:調試方法

    教程 8:調試方法
    發表于 03-16 19:00 ?1次下載
    教程 8:<b class='flag-5'>調試</b><b class='flag-5'>方法</b>
    主站蜘蛛池模板: 99亚洲精品自拍AV成人软件| 秋霞最新高清无码鲁丝片| 国产精品久久人妻无码网站一区无| 在线观看视频中文字幕| 一个人的免费完整在线观看HD| 亚洲AV无码乱码国产精品品麻豆| 私人玩物在线观看| 善良的小峓子2在钱免费中文字 | 99九九精品视频| 51国产午夜精品免费视频 | 日韩 亚洲 欧美 中文 高清| 欧美gay老头互吃| 欧美色图14p| 日本不卡三卡四卡| 三级全黄的视频| 无码内射成人免费喷射| 午夜福利院电影| 亚洲精品无码一区二区三区四虎 | 忘忧草秋观看未满十八| 偷拍 拍自 欧美色区| 无码射肉在线播放视频| 亚洲a视频在线观看| 亚洲欧美精品一中文字幕| 亚洲午夜久久久精品电影院 | 男人J进入女人P免费狂躁| 欧美乱妇狂野欧美在线视频| 人人超碰97caoporen国产| 涩涩免费网站| 亚洲欧美日韩另类精品一区二区三区| 亚洲精品在线播放视频| 永久免费在线看mv| AV无码国产精品午夜A片麻豆| 潮 喷女王cytherea| 国产日韩欧美高清免费视频| 红色机尾快播| 嗯啊…跟校草在教室里做h| 日操夜操天天操| 亚洲精品久久久无码AV片软件| 永久免费精品影视网站| FREE另类老女人| 国产精品一区二区亚瑟不卡|