1. 前言

2. 关于self-hosted debug

  • Debugger调试器

是操作系统或系统软件的一部分,它会处理debug exception或修改debug system register,debugger运行在EL0,提供了用户debugger接口;

  • Debugger异常

Debugger异常是在程序正常运行过程中由debugger编程PE来产生,满足如下两个条件,PE可以产生某个特定的异常:

(1)当前的异常级别和安全状态下使能了debug异常;

(2)Debugger使能了某个特定的debug异常

  • Debug异常类型

(1)Break-point instruction异常:在程序流的特定点可以引起异常的指令,不能被mask,A64下为BRK#<immediate>;

(2)breakpoint异常:提供2-16个breakpoint异常,可以基于特定的指令地址或特定的PE上下文通过编程产生的异常;

(3)watchpoint异常:提供2-16个watchpoint异常,可以基于访问特定的数据地址或访问一个地址范围的数据;

(4)vector catch异常:只能在AArch32 translation regime???下产生;

(5)software step异常:运行在高异常级别的软件可以debug低异常级别的软件,被debug的软件每单步执行一条指令,PE会捕获software step异常;

3. Debug异常使能控制

breakpoint instruction异常

总是使能的;

breakpoint异常

MDSCR_EL1.MDE, plus an enable control for each breakpoint, DBGBCR<n>_EL1.E

watchpoint异常

MDSCR_EL1.MDE, plus an enable control for each watchpoint, DBGWCR<n>_EL1.E

vector catch异常

MDSCR_EL1.MDE

software step异常

MDSCR_EL1.SS

4. Debug异常路由

  1. EL1和EL2都是debug异常的目标异常级别;
  2. 通常情况下debug异常被路由到EL1;
  3. 如果实现了EL2,且MDCR_EL2.TDE==1 且debug异常来自于non-secure,则异常被路由到EL2

5. Debug异常使能

当前异常级别和安全状态下满足如下4个条件则debug异常使能:

  • OS lock解锁??
  • DoubleLockStatus() == FALSE???
  • 当前异常级别的debug异常使能

(1)       如下两种情况debug异常被禁用:

a. 当前异常级别 > (EL1 or EL2)

breakpoint instruction异常之外的debug异常被禁用;

b. 当前异常级别 == (EL1 or EL2):

local debug enable bit(即MDSCR_EL1.KDE==0,breakpoint instruction异常之外的debug异常被禁用;

debug exception mask bit(PSTATE.D)==1,breakpoint instruction异常之外的debug异常被禁用

(2)其它情况debug异常均使能

  • 当前secure state的debug异常使能

(1)如果MDCR_EL3.SDD==1,则debug异常被禁用;

(2)其它情况下,debug异常均使能

6. 参考文档

[1] DDI0487A_k_armv8_arm_iss10775.pdf

ARMV8 datasheet学习笔记4:AArch64系统级体系结构之Self-hosted debug的更多相关文章

  1. ARMV8 datasheet学习笔记3:AArch64应用级体系结构

    1.前言 本文主要从应用的角度介绍ARMV8的编程模型和存储模型 2. AArch64应用级编程模型 从应用的角度看到的ARM处理器元素: 可见的元素(寄存器/指令) 说明 可见的寄存器 R0-R30 ...

  2. ARMV8 datasheet学习笔记5:异常模型

    1.前言 2.异常类型描述 见 ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST 一文 3. 异常处理路由对比 AArch32.AArch64架 ...

  3. ARMV8 datasheet学习笔记1:预备知识

    1. 前言 ARMv8的架构继承以往ARMv7与之前处理器技术的基础; 除了支持现有的16/32bit的Thumb2指令外,也向前兼容现有的A32(ARM 32bit)指令集. 基于64bit的AAr ...

  4. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(1)-EL/ET/ST

    1.前言 ARMV8系统级编程模型主要包括异常级别.运行状态.安全状态.同步异常.异步异常.DEBUG 本文主要对系统级编程模型做一个概要介绍 2. 异常级别 2.1 Exception level概 ...

  5. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之Generic timer

    1.前言 2.generate timer 2.1 概述 提供了一个系统计数器,用来实时测量流逝的时间: 提供了一个虚拟计数器,用来测量某个虚拟机上流逝的虚拟时间: 定时器,每隔一段时间会触发事件,支 ...

  6. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之存储模型

    1.前言 关于存储系统体系架构,可以概述如下: 存储系统体系结构的形式 VMSA 存储属性   2. 存储系统体系结构 2.1.    地址空间 指令地址空间溢出 指令地址计算((address_of ...

  7. ARMV8 datasheet学习笔记2:概述

    1. 前言 本文主要概括的介绍ARMV8体系结构定义了哪些内容,概括的说: ARM体系结构定义了PE的行为,不会定义具体的实现 ARM体系结构也定义了debug体系结构和trace体系结构 ARM体系 ...

  8. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之VMSA

    1. 前言 2. VMSA概述 2.1 ARMv8 VMSA naming VMSAv8 整个转换机中,地址转换有一个或两个stage VMSAv8-32 由运行AArch32的异常级别来管理 VMS ...

  9. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(4)- 其它

    1. 前言 2.可配置的指令使能/禁用控制和trap控制 指令使能/禁用 当指令被禁用,则这条指令就会变成未定义 指令Trap控制 控制某条或某些指令在运行时进入陷阱,进入陷阱的指令会产生trap异常 ...

  10. ARMV8 datasheet学习笔记4:AArch64系统级体系结构之编程模型(3)- 异常

    1.前言 本文介绍异常相关内容,包括异常类型,异常进入,异常返回,异常层次结构,异常的路由等 2.  RESET ARMV8体系结构支持两种类型的RESET Cold reset:Reset PE所有 ...

随机推荐

  1. 自学工业控制网络之路2.2-PROFINET

    返回 自学工业控制网络之路 自学工业控制网络之路2.2-PROFINET PROFINET由PROFIBUS国际组织(PROFIBUS International,PI)推出,是新一代基于工业以太网技 ...

  2. 沉迷Link-Cut tree无法自拔之:[BZOJ2049]洞穴勘探(蒟蒻的LCT板子)

    来自蒟蒻 \(Hero \_of \_Someone\) 的 \(LCT\) 学习笔记 最近学了一波 \(LCT\) , 于是怒刷 \(LCT\) 合集...... $ $ 学的时候借鉴了 Clove ...

  3. 洛谷P3474 KUP-Plot purchase

    简要题意: 给你一个n * n的非负矩阵,求问是否有子矩阵满足和在[k, 2k]之间.若有输出方案.n<=2000. 解: 首先n4暴力很好想(废话),然后发现可以优化成n3log2n,但是还是 ...

  4. mac 终端输入带空格的路径 cd

    mac 在终端如何进入名称带空格的目录? 后来找到原因,是因为要对空格转义或者输入“ ”或‘ ’,方案如下: 1. cd Appications/Android\Studio.app/sdk  这个好 ...

  5. 关于checkbox全选与全不选的实现与遇到的问题

    HTML: <div class="outbox"> <label for="box">全选</label> <inp ...

  6. Java 读取文件的内容

    Java 读取文件的内容 1) CLASS_NAME: 换成自己真实的类名 2) /page/test.json: 换成自己真实的page 3) FileUtils: 来自于org.apache.co ...

  7. POJ1742Coins(多重背包)

    Coins Time Limit: 3000MS   Memory Limit: 30000K Total Submissions: 32309   Accepted: 10986 Descripti ...

  8. Math对象小笔记

    来,总结下Math对象的常用方法和属性 1.E  自然对数的底数 Math.E; //2.718281828459045 2.PI 圆周率 Math.PI; //3.141592653589793 3 ...

  9. saltstack 常用模块

    cp模块 功能:实现远程文件.目录的复制,以及下载URL文件等操作 使用cp模块配置管理之前,要首先指定saltstack所有状态文件的根目录,在master上做如下操作: 指定根目录(确定指定的目录 ...

  10. Scala进阶之路-Spark独立模式(Standalone)集群部署

    Scala进阶之路-Spark独立模式(Standalone)集群部署 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们知道Hadoop解决了大数据的存储和计算,存储使用HDFS ...