内容来自 DEN0024A_v8_architecture_PG.pdf

本质

  • ARMv8 Debug 是什么
历史在 ARMv4 开始被引入,并已发展成一系列广泛的调试(debug1)和跟踪(trace)功能ARMv6和ARMv7-a 新增了 自托管调试(debug2)和性能评测(trace-enhance)ARMv8处理器提供硬件功能侵入式        : 调试工具能够对核心活动提供显著级别的控制非侵入式      : 以非侵入性方式收集有关程序执行的大量数据。侵入式调试提供了一些工具,使您能够在C源代码级别或汇编语言指令中停止程序并逐行执行它们。这可以通过使用芯片JTAG引脚连接到内核的外部设备实现,也可以通过调试监控代码实现。非侵入性调试允许在执行时观察核心行为。有不同种类的非侵入性调试1. ETM : 可以记录执行的内存访问(包括地址和数据值),并生成程序的实时跟踪,查看外围访问、堆栈和堆访问以及变量的更改。带来了很大问题: 1. 大量信息很难被传出 // 引脚输出可以以远低于内核时钟的速率进行切换当前的内核可能会在每个周期执行一个或多个64位缓存访问,记录数据地址和数据值可能需要很大的带宽。2. 大量传出的信息很难被解码2. ETB : 尝试压缩信息以减少所需的带宽

侵入式调试硬件概念

侵入式调试Invasive debug may be divided into 1. halting debug (also known as external debug) // 传统上的概念是外部调试器调试the debug event causes the core to enter debug state. 也叫 Halting Debug mode.也叫 external debug model.In debug statethe core is halted, meaning that it no longer fetches instructions. the core executes instructions under the direction of a debugger running on a different host connected through JTAG, or another external interface.2. monitor debug (also known as self-hosted debug)  // 传统上的概念就是主机侧调试(例如用本机的gdb调试本机的应用程序),本质利用异常处理函数the debug event causes a debug exception to be raised.也叫 self-hosted debug model , 也叫 Monitor debug mode. The exception must be handled by dedicated debug monitor software running on the same core. Monitor debug presupposes software support.注意 : halting debug 和 monitor debug 被称为一个过程,并不对应任何ARM实际概念
debug eventdebug event 包括什么Software debug eventsBreakpoint debug eventWatchpoint debug eventSoftware Step debug eventSoftware breakpoint instruction debug eventA64 : BRKA32 : BKPTVector Catch debug eventHardware debug eventsexternal debugger send a request sequence to halt the core // 最后会进入 debug state // TODOdebug event 的四种处理情况 // 只会进入一种或不进入1. 进入 debug state // 所谓的 halting debug// depending on the setup of the External Debug Status and Control Register (EDSCR)2. 进入 debug exception // 所谓的 monitor debug// depending on the setup of the External Debug Status and Control Register (EDSCR)3. 什么都不做 // 所谓的 Ignore the debug event.4. Pend the debug event and convert it into an action later

Semihosting debug

半托管是一种机制,使ARM目标上运行的代码能够使用运行调试器的主机上提供的功能。这方面的示例可能包括键盘输入、屏幕输出和磁盘I/O。例如,您可以使用此机制启用C库函数,例如printf()和scanf(),以使用主机的屏幕和键盘。开发硬件通常没有完整的输入和输出设施,但半托管使主机能够提供这些设施。半托管由一组定义的软件指令实现,这些指令会生成异常。应用程序调用适当的半宿主调用,然后调试代理处理异常。调试代理提供与主机所需的通信。semihosting对ARMv8处理器使用的规范与对实现ARMv7的处理器使用的规范不同。DS-5调试器通过拦截AArch64中的HLT 0xF000来处理半托管。当然,在开发环境之外,在主机上运行的调试器通常不会连接到系统。因此,开发人员有必要重新定位任何使用半托管的C库函数,例如,使用fputc()。这需要将使用SVC调用的库代码替换为可以输出字符的代码。

非侵入式调试硬件概念

ARMv8 Debug相关推荐

  1. ARMV8体系结构简介:AArch64系统级体系结构之Self-hosted debug

    1. 前言 2. 关于self-hosted debug Debugger调试器 是操作系统或系统软件的一部分,它会处理debug exception或修改debug system register, ...

  2. [register]-ARMV8系统中通用寄存器和系统寄存器的介绍和总结

    ★★★ 个人博客导读首页-点击此处 ★★★ . 说明: 在默认情况下,本文讲述的都是ARMV8-aarch64架构,linux kernel 64位 . 自制ARMv8 aarch64 registe ...

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

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

  4. ARMV8体系结构简介

    1.前言 本文的主要内容来源于ARMV8白皮书v5,对ARMV8做一个概述.包含如下的内容: 首先从背景谈起,讲述ARM的发展历程: 之后介绍ARMV8体系结构的基本特征: 介绍A64指令集 介绍异常 ...

  5. ARMv8体系结构基础02:搭建实验环境

    目录 1 实验环境概述 1.1 实验环境种类 1.2 树莓派4b简介 2 实验代码分析 2.1 实验代码结构 2.2 Makefile文件分析 2.3 linker.ld文件分析 2.4 程序流程分析 ...

  6. goland debug Got a connection, launched process /private/var/folders/l9/

    把你docker关了 如果你是mac M1芯片 程序要运行 golang 下载 armv8架构 程序要debug 下载aarch架构goland

  7. ARMv8.1-M的一些特性

    简单阐述下ARMv8.1-M的一些特性,更多的特性及其详细信息,请查看Armv8-M Architecture Reference Manual-DDI0553B_m. 1. MVE(M-Profil ...

  8. 深入理解虚拟/物理地址转换,页表--基于ARMV8

    目录 背景 一.相关基础知识 1,MMU的作用 2,逻辑地址,虚拟地址,线性地址 二.页表转换寄存器描述符 1,页表/页目录结构 2,转换相关寄存器描述符 1.转换基址寄存器 2.转换描述符格式 3. ...

  9. ARMv8 Linux内核异常处理过程分析

    NOTE:为了方便大家阅读,制作了PDF版文档,下载请猛戳这里 老样子,为了赚点积分下载其他人的文件,下载以上资料需要资源分2分, 如果没有积分请留言所有文档,留下邮箱即可. 看了Linaro提供的开 ...

最新文章

  1. 给jar包进行数字签名(2014-06-28记)
  2. NSOperationQueue线程队列完毕finished状态检测
  3. 微信公众号网页开发:播放视频,在列表中滑动会脱离文档流
  4. 常用STL整理 (施工中 2017.8.11更新)
  5. JavaScript进阶【二】JavaScript 严格模式(use strict)的使用
  6. python 3教程_Python 3 教程
  7. 学习手记——技术博文汇总(持续更新)
  8. 云栖回顾|龙蜥论坛圆桌环节都有哪些精彩观点?
  9. 她每天吃一个煮熟的苹果,从此打开了通往新世界的大门~
  10. [shell][原创]shell脚本遍历文件夹下所有文件
  11. python课程结课感悟_python听课的感悟与建议
  12. 计算机网络小黑指北-单选题自测
  13. 【考研数学高数部分】无穷级数
  14. 创建工作生活新范式 开拓经济增长新空间
  15. 854计算机专业基础,东华大学2019年考研854计算机及软件工程专业基础综合考试大纲...
  16. 科大讯飞的语音合成(播放)功能
  17. asp.net通用的sql插入与修改语句,一劳永逸
  18. mod_rewrite htaccess 简单使用
  19. 乐吾乐2D可视化智慧光伏能源赋能方案
  20. 05 - Protege OWL API 的使用 - 本科毕设整理

热门文章

  1. 阿昌教你IDEA一键启动服务设置
  2. 阿里3.10笔试第一题
  3. 机器学习之超参数优化 - 网格优化方法(对半网格搜索HalvingSearchCV)
  4. codeforces 708A - Letters Cyclic Shift
  5. 杨辉三角c语言程序for循环,C语言循环结构 -C语言打印杨辉三角
  6. Excel数据筛选出来后修改再粘贴进去的方法
  7. MHz, MIPS, DMIPS之间的区别
  8. VS运行C语言代码,cmd命令行窗口一闪而过
  9. 三大创作平台优势分析,闲暇时间月入上万
  10. 粗糙集在计算机网络中的应用,粗糙集理论在入侵检测系统中的应用研究软件工程专业论文.docx...