ARM体系结构调试系统

预计会有几篇较大篇幅的文章大体描述下ARM体系结构调试系统方面的软硬件接口设计。

简述

经历过软件开发基本上都知道调试的重要性,能一次写好,并且没有BUG的软件毕竟少之又少。

ARM体系结构从ARMv4开始硬件支持各种调试特性,随着系统的复杂度提升,到现今的ARMv7,甚至ARMv8,ARM从硬件层面也提供了更多的调试方式。

本文从大方向上概述ARM调试系统的组成,包括其中的debug,trace,profiling等方面 ,又着重在调试系统的软硬件接口配合。

调试分类

从大方向上看,我们基本可以将调试总结为:

  • SD:self-hosted debug。自调试,比如直接在树莓派上,运行gdb调试应用程序。
  • ST:self-hosted trace。这个比较少见。
  • SP:self-hosted profiling。这个也比较少见,但是相对self-hosted trace 使用好用,调试上也更方便使用。
  • ED:external debug。 外部调试,SOC设计初期会更常用到,比如通过JTAG连接SOC,控制CPU调试。
  • ET:externl trace。一般由CoreSight支持,并与profiling配合使用。
  • EP:external profiling。比较常见的就是DS-5配套的profiling工具。

Self-hosted debug

自调试(self-hosted debug)在X86平台上很常见,比如大家用gdb调个PC程序,就是自调试。

ARMv8针对这块专门相对比较重视。

external debug

ARM毕竟以嵌入式平台为主,因此在芯片设计之初,或者firmware以及驱动开发等过程中,难免会接触到外部调试(external debug)。毕竟这时候,很可能基本的系统都还未稳定,更不可能做系统的自调试了。

常见的外部调试当然就是JTAG了,一般正版的JTAG调试器都价格不菲,当然淘宝上也有盗版的几十块钱的JLINK可以买来练练手。

如果是学习ARM 的Cortex-M系列,则可以买STM之类的开发板,板子默认集成调试模块,连上一根USB线就可以用了。

profiling

profiling估计大多数人都接触的比较少,主要是性能调优阶段会有类似的需求。关心这阶段的,大多是开发应用或者平台中间件的居多。

对Cortex-A系列的CPU,有会有高性能和低消耗,以及可靠性的需求。

最常见的ARM的profiling工具大概就是DS-5中的工具吧,下图是profiling界面的截图。

DS-5 profiling工具的效果图示

时间: 2024-07-30 20:24:23

ARM体系结构调试系统的相关文章

ARM体系结构和汇编指令

第一节 可编程器件的编程原理 1. 可编程器件的特点 1 . CPU在固定频率的时钟控制下节奏运行 2 . CPU可以通过总线读取外部存储设备中的二进制指令集,然后解码执行 3 . 这些可以被CPU解码执行的二进制指令集是CPU设计的时候确定的,是CPU的设计者(ARM公司)定义的,本质上是一串由1和0组成的数字.这就是CPU的汇编指令集 2. 从源代码到cpu执行过程 第二节 指令集对cpu的意义 1. 汇编语言与C等高级语言的差异 汇编无移植性,c语言有一定可移植性,jave等更高级的语言移

ARM JTAG 调试原理

OPEN-JTAG 开发小组 1 前言 这篇文章主要介绍 ARM JTAG 调试的基本原理. 基本的内容包括了 TAP (TEST ACCESS PORT) 和 BOUNDARY-SCAN ARCHITECTURE 的介绍, 在此基础上,结合 ARM7TDMI 详细 介绍了的 JTAG 调试原理. 这篇文章主要是总结了前段时间的一些心得体会,希望对想了解 ARM JTAG 调试的网友们 有所帮助. 我个人对 ARM JTAG 的理解还不是很透彻,在文章中,难免会有偏失和不准确的地 方, 希望精通

ARM体系结构与编程-5

GET通常用于包含定义常量的源文件. 例如:GET 2440addr.inc 用AREA定义一个段,ENTRY用于指定程序的入口点,END用于告诉汇编器源文件已经结束. 例如: AREA init, CODE, READONLY ENTRY ...... END EQU用于定义常量,提醒:在每条ARM指令前必须有空格,但是用EQU定义常量时,必须顶格写,否则编译器报错. LTORG用于声明一个文字池,所谓文字池就是一个数据缓存区. ALIGN伪操作通过调整地址指针,使得当前地址满足一定的对齐方式

【嵌入式Linux+ARM】ARM体系结构与编程(ARM概述)

ARM体系结构与编程 本文章记录一些看<ARM体系结构与编程>这一本书的记录: 个人觉得,学习ARM体系时,不需要死记硬背,只要把某些关键的大致记住,比如ARM寄存器(通用寄存器.PC.LR.SP.CPSR.SPSR).ARM中断处理体系.常用的ARM汇编指令等. 本文基本都是从书上截图,都是一些关键的知识,需要我们时常去复习的. 一.ARM概述 ARM处理器的7种工作模式: ARM处理器寄存器: ARM中PC(R15)寄存器: ARM中CPSR寄存器: ARM异常处理模式--响应过程和返回过

ARM体系结构与编程-4

ARM异常中断处理: ARM体系异常中断种类:按中断的处理优先级从高到低依次为:复位.数据访问中止.快速中断请求.外部中断请求.预取指中止.未定义指令.软件中断. ARM体系中的异常中断向量表: 0x0 复位 0x4 未定义指令 0x8 软件中断(SWI) 0x0c 预取指中止 0x10 数据访问中止 0x14 保留 0x18 外部中断请求(IRQ) 0x1c 快速中断请求(FIQ) 各异常中断对应着一定的处理器模式,不同处理器模式下有各自的物理寄存器.如果异常中断处理程序中使用它自己的物理寄存

ARM体系结构与编程

ARM处理器的7中运行模式:usr.fiq.irq.svc.abt.und.sys. ARM处理器共37个寄存器:31个通用寄存器(未备份寄存器R0-R7,在所有模式下指的都是同一个物理寄存器:备份寄存器R8-R12,每个寄存器对应两个不同的物理寄存器.对于R13[sp]和R14[lr]来说,每个寄存器对应6个不同的寄存器:程序计数器R15[pc]),6个状态寄存器(当前程序状态寄存器[cpsr]:5个备份状态寄存器[spsr]). ARM体系的异常中断:复位.未定义指令.软件中断.指令预取中止

快速上手ARM体系结构--学习3 异常处理机制

以下所有截图都是来自如下链接:(侵删) 快速上手ARM体系结构 - 网易云课堂 <end> 原文地址:https://www.cnblogs.com/LearnFromNow/p/9554590.html

外网访问ARM嵌入式Linux系统

外网访问ARM嵌入式Linux系统 实验室里的ARM嵌入式Linux系统,只能在局域网内访问,怎样从外网也能访问ARM嵌入式Linux系统? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动ARM嵌入式Linux系统 ARM嵌入式Linux系统默认的sshd端口是22. 2. 实现步骤 2.1 下载并解压holer软件包 Holer软件包:holer-linux-arm.tar.gz Holer支持多种ARM版本,请选择跟自己ARM版本匹配的holer程序上传至系统上. 2.2 获

ARM体系结构与编程-第五章

第5章 ARM存储系统 5.1 ARM存储系统概述 存储系统: 包含多种类型的存储器件,如FLASH.ROM.SRAM和SDRAM 通过使用CACHE及WRITE BUFFER技术缩小处理器和存储系统得速度差别 内存管理不见使用内存映射技术实现虚拟空间到物理空间的映射. 引入存储保护机制 引入一些机制保证将I/O操作映射成内存操作后,各种I/O操作能够得到正确的结果 5.2 ARM中用于存储管理的系统控制协处理器CP15 在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15