coresight(一)coresight简介
coresight(二)coresight寄存器
coresight(三)APB,ATB总线
coresight(四) channel interface
coresight(五) rom table
coresight(六) power requestor
ARM Cortex-M系列的调试架构CoreSight技术简介

一、coresight

coresight是ARM公司提出的,用于对复杂的SOC,实现debug和trace的架构。该架构,包含了多个coresight组件。众多的coresight组件,构成了一个coresight系统。我们也可以根据coresight架构,实现自己的coresight组件。

每个coresight的组件(component),都要遵循coresight架构的要求。

1、 典型的一个coresight的环境

以下是一个典型的coresight环境,包含了两个ARM core,一个DSP,和众多的coresight组件。这个coresight组件,实现对core,DSP的debug和trace功能。

环境中,总共包括3个通路

  • trace通路: 将core和DSP内部信息输出到外部
  • debug通路:对core和DSP实现debug
  • trigger通路: 用于core和core之间,core和DSP之间,传输trigger信号

1.1、trace通路

trace通路,实现对master组件的数据追踪功能,使用ETM来追踪。

ETM负责追踪处理器和DSP的信息,将信息打包,通过ATB总线发送到trace bus上。trace bus上有trace funnel,funnel接收多个ATB总线数据,然后合并成一个ATB总线数据,发送给replicator。

replicator接收到ATB数据,根据配置,将ATB数据发送给ETB和TPIU。

1.2、debug的通路

debug通路,用于外部的debugger,对ARM core和DSP进行调试功能。

上图中,只考虑了JTAG的port。其实还有SW的port。

DAP接收外部端口的JTAG数据,然后转化成对DAP内部的AP的访问,然后AP再转化为memory-mapped的总线访问,去访问soc内部的资源。

上图中,DAP输出两个memory-mapped总线,一个是debug apb总线,连接到debug APB互联上,用于访问debug组件的寄存器,一个是system bus,连接到bus matrix,用于访问soc的内部的资源。

debug APB互联,连接了有CTI,ETM,HTM,ITM,ETB,TPIU等coresight组件,因此外部的debugger可以通过JTAG port,对这些coresight组件进行访问。

bus matrix一般是连接soc的一些外设,如memory,串口等,因此外部的debugger可以通过JTAG port对这些外设设备进行访问。

1.3、trigger通路

trigger通路,用于给指定的组件发送trigger信号,或者接收指定的组件的trigger信号。这个功能由CTI和CTM来实现。

每个core和DSP都有一个CTI组件相连,CTI可以给处理器(DSP)发送trigger信号,也可以接收处理器(DSP)的trigger信号。

所有的CTI和CTM相连,因此可以实现多个CTI之间的trigger信号的相互发送与接收。

2、coresight组件的种类

2.1、control component

trigger的coresight组件

ECT(embedded cross trigger)
CTI(cross trigger interface):接收和发送trigger信号
CTM(cross trigger matrix):CTI之间的trigger信号传递

2.2、trace sources

trace的coresight组件:

ETM(embedded trace macrocells):追踪指定设备(处理器,DSP)的trace信息,每个设备(处理器,DSP)均有自己的ETM。

AMBA trace macrocells:追踪AMBA总线的trace信息。
PTM(program flow trace macrocells):
STM(system trace macrocells):追踪总线互联上的trace信息

2.3、trace links

trace信息传递过程中所需要的中间coresight组件:

trace funnel : 将接收的多个ATB总线数据合并成一个ATB总线数据
replicator: 将一个ATB总线数据,分发成多个ATB总线数据发送
ATB bridge: ATB 桥,用于两个不同的ATB域之间数据传输

2.4、trace sinks

最终接收trace信息的coresight组件

TPIU(trace port interface units):将ATB数据通过trace port发送给外界
ETB(embedded trace buffers): 存储ATB数据的buffer
TMC(trace memory controller):每个trace sink可以有一个trace formatter。

2.5、debug access port

DAP不属于coresight的组件,但是我们会通过DAP来对coresight的组件进行访问。
DAP包括以下:

  • APB access port(APB-AP)
  • AHB access port(AHB-AP)
  • AXI access port(AXI-AP)
  • JTAG access port(JTAG-AP)
  • serial wire JTAG debug port(SWJ-DP)
  • JTAG debug port(JTAG-DP)
  • ROM table

DAP主要是由DP和AP组件。DP负责接收外部的JTAG或SW数据,然后转化为对AP的访问,而对AP的访问,是可以发起memory-mapped的访问。因此就可以对内部的资源进行访问。

如上图:

DAP包括了三个AP

  • APB-AP: 对挂接到debug APB总线上的内部调试设备的访问
  • AHB-AP: 对挂载在AHB系统总线上的设备的访问
  • JTAG-AP: 对JTAG设备的访问。这个是兼容以前较早的ARM处理器,如ARM9。这些较早的处理器内部是用JTAG来调试的。但是现在的ARM处理器,已经不用这种方式,统一用memory-mapped方式进行调试。

目前的ARM soc中,一般至少会包括一个DAP。而一个DAP可以包括1-256个AP(access port),AP受DP的控制。只有对AP的访问,才可以转化成memory-mapped总线,对soc的内部资源进行访问。
DP中有一个SELECT寄存器,该寄存器用来选择,DP对AP的访问,是针对于哪一个AP进行访问。
DAP中,是可以有多个AP的,而每次,只能对一个AP进行访问。因为需要对AP进行编号,编号的值就在APSEL位域中。因为这个位域有8位,因此DAP中可以最多有256个AP。


DAP的内部结构如下图:

包括了一个DP,和3个AP,依次是AHB-AP,APB-AP,JTAG-AP。

DP通过JTAG或者SW管脚,连接外部的debugger,和外部debugger进行通信。

DP接收到外部debugger发送的JTAG或SW数据,转化为对内部AP的访问。经过decoder模块,判断是对哪一个AP进行访问,然后将访问信息发送给对应的AP。AP接收到DP的访问后,转化为对应的总线访问,去访问内部资源。然后将访问的信息,才回送给DP,DP再通过JTAG或SW,将访问信息返回给外部的debugger。

ARM Coresight相关推荐

  1. 【ARM Coresight 介绍 3 - ARM Cortex-M DWT】

    文章目录 1.1 ARM DWT 介绍 1.1.1 跟踪接口: 1.1.2 调试模式 1.1.3 数据观察点和跟踪(Data Watchpoint and Trace) 1.1.4 Cortex-M7 ...

  2. ARM 之十二 Cortex-M 内核异常处理、异常定位方法、在线调试、Keil MDK-ARM 的使用

      Cortex-M 内核本身提供了非常强大的异常处理机制.它可以非常有效的捕捉非法的内存访问以及其他一些异常.而我们常用的开发工具的异常处理就是使用了 Cortex-M 核的异常处理机制.   在 ...

  3. 基于ARM Cortex-M和Eclipse的SWO单总线输出

    最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关通过SWD的跟踪接口SWO获取ARM Cortex-M相关信息的文章,文章结构明晰,讲解透彻,本人深受启发,特意将其翻 ...

  4. ARM Cortex-M处理器详解

    ARM Cortex-M处理器家族现在有8款处理器成员.在本文中,我们会比较Cortex-M系列处理器之间的产品特性,重点讲述如何根据产品应用选择正确的Cortex-M处理器.本文中会详细的对照Cor ...

  5. ARM CPU挂死和总线挂死的DS-5调试方法

    DS-5以及配套的DSTREAM/RealView是对ARM处理器进行裸机调试的利器,本文将针对工作中常见的CPU挂死情况,进行具体分析,将介绍如何区分CPU挂死以及通过CSAT区分总线挂死的具体操作 ...

  6. 一文看懂ARM Cortex-M处理器

    ARM Cortex-M处理器家族现在有8款处理器成员.在本文中,我们会比较Cortex-M系列处理器之间的产品特性,重点讲述如何根据产品应用选择正确的Cortex-M处理器.本文中会详细的对照Cor ...

  7. 如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M7系列MCU进行SWD接口调试

    该篇幅介绍如何使用FT2232H适配器和开源调式工具OpenOCD对ARM Cortex M系列MCU进行SWD接口调试? 如何连接FT2232HL Debuger Adapter和目标板的的SWD调 ...

  8. arm cortex a57 linux,ARM Cortex-A57处理器详细介绍-控制器/处理器-与非网

    Cortex-A57处理器简介 The Cortex-A57 processor is ARM's highest performing processor, designed to further ...

  9. Coresight - Devicetree/ACPI简介

    文章目录 一.设备树简介 二.CoreSight Components 1.1 Required properties 1.2 Optional properties 1.2 replicators ...

  10. ARM Cortex系列(A8/A9/A15/A7) NEON多媒体处理SIMD引擎优化

    出处: http://houh-1984.blog.163.com/blog/static/31127834201211275111378/ Cortex-A9的NEON多媒体处理器是基于ARMv7的 ...

最新文章

  1. 下列不属于python第三方库的是-测验9: Python计算生态纵览 (第9周)-单选题
  2. Visial Studio 2019提示:namespace std 没有成员 max 的解决方法
  3. Python 的变量作用域和 LEGB 原则
  4. Python环境下工具安装小结
  5. 基于OpenCV人脸识别项目
  6. WPS 删除线快捷键
  7. 数据结构-带头双向循环链表
  8. 数据结构视频教程 -《浙江大学数据结构与算法徐镜春》
  9. python写梦幻西游手游脚本_AirtestIDE实践一:梦幻西游手游师门任务自动化
  10. vue防止用户恶意点击按钮
  11. Elasticsearch 多字段查询 best_fields、most_fields、cross_fields,傻傻分不清楚?
  12. 【提供代码获取方式】matlab使用风羽法画大气环流
  13. python简易搭建环境_在Windows上搭建Python2.7环境
  14. iOS开发学习笔记-C语言学习(一)
  15. RxJava 过滤操作符 ofType
  16. 基于ffmpeg+opengl+opensl es的android视频播放器
  17. c#中如何在cshtml页面实现js调用cs变量(mvc模式)
  18. 17世纪初诞生了第一台电子计算机,世界上第一台计算机诞生于多少年?
  19. PCIE控制器——数据链路层——DLLP报文
  20. 【21岁扶墙当CTO】之无人机篇(1/n)

热门文章

  1. PowerVR 6系列架构分析
  2. 面向对象方式爬取知乎鸡汤
  3. Pycharm下载与安装教程
  4. linux bsd格式,Linux系统日志管理_Linux/BSD系统
  5. python在windows与linux下读取doc文件
  6. C. Garland dp
  7. 学术论文写作 | (7)NLP学术论文写作方法和技巧
  8. Javascript 格式化json字符串
  9. docker部署eureka时无法启动容器(问题解决)
  10. C语言字符串分割 trimmed simplified split