【ARM AMBA ATB 入门 1 - ATB 总线简介】

news2025/2/11 8:47:49

文章目录

    • 背景
    • 1.1 ATB BUS
      • 1.2.1 全局信号
      • 1.2.2 数据信号
      • 1.2.3 流控信号
      • 1.2.4 Trace ID
      • 1.2.5 Buffer Flusing

背景

AMBA3 中,增加了 Advanced Trace Bus (ATB) 总线作为片上调试的总线接口,为 DebugTrace 提供一种解决方案。第3代总线是2003年发布的AMBA3标准。在第三代总线中,增加AHB-Lite精简协议,升级了APB总线外,为了满足更高的互联性能需求,增加了Advanced eXtensible Interface (AXI),这是一个重要的标志,至此开启了高性能系统设计的通道,在AXI总线的加持下,系统性能得到了质的提升。

1.1 ATB BUS

ATB Bus 用来在 Coresight 组件之间传递 Trace 信息用,主要包括两部分:

  • Master: 在ATB总线上产生 Trace 信息的接口;
  • Slave: 在ATB总线上接收 Trace 信息的接口。

ATB 总线以 AT 作为信号的前缀

如下图 1-1:HTMxTM 是产生 trace 信息的 Master,通过 ATB 总线,发送给 Funnel,Funnel 将收到的两路 ATB 数据合并成一路 ATB 数据发送给 Replicator,Replicator 再将接收的一路 ATB 数据,重复以两路 ATB 数据分别发送给 ETB 和 TPIU,TPIU 通过 Trace port 发送到外部。
在这里插入图片描述

图 1-1 ATB relationships

专用名词解释如下

  • ETB(embedded trace buffer): 片内存储 trace 数据的SRAM;
  • xTM(trace macrocells): 从连接的处理器中追踪数据,产生 trace 信息输出, 包括两个:
    • ETM(embedded trace macrocell): 可以产生指令trace信息,也可以产生数据trace信息;
    • PTM(program flow macrocell): 产生指令 trace 信息;
  • HTM(advanced high-performance bus trace macrocell): 连接到AHB互联总线上,产生总线的trace信息;
  • TPIU( trace port interface unit):接收ATB trace数据,传输到trace port上,将trace信息输出到片外;
  • Trace Replicator: 将一个ATB数据发送给独立的两个ATB slave;
  • Trace Funnel: 将多个trace源信息,合并成一个trace数据输出。

1.2.1 全局信号

时钟复位信号:复位信号低电平有效。数据在时钟的上升沿采样
在这里插入图片描述

1.2.2 数据信号

在这里插入图片描述

1.2.3 流控信号

在这里插入图片描述
master 和 slave 之间的通信,通过 ATVALIDATREADY 作为握手信号。
在这里插入图片描述

  • Master 将 ATVALID 拉高,表示 master 传输的数据有效;
  • Slave 将 ATREADY信号拉高,表示 slave 准备好接收 master 的数据。

如果 master 发送数据,发现 slave 的 ATREADY 没有拉高,那么就要将数据重新发送一遍。

时序图如下
在这里插入图片描述

  • T1: master 发送数据A,ATVALID拉高。但是master检测到ATREADY没有拉高;
  • T2: master 检测到上一次数据传输,ATREADY没有拉高,因此需要将数据A重新发送, 此时ATREADY为1,表示此时数据发送成功。因此下一次可以发送新的数据;
  • T3: master 发送数据B,ATREADY为1,表示此时数据发送成功,下一拍可以发送新的数据;
  • T4: master将 ATVALID 拉低,表示没有数据发送;

如果 slave 在 master 发送数据的时刻,不能及时接收 master 发送的数据(ATREADY 不能在 master 发送数据时刻拉高),那么在 slave 端,建议实现 internal buffer(etf/etb),接收 master 发送的数据。然后再处理。这样的话,当 buffer 没有满的话,ATREADY 信号就可以一直为高,master 就不用一直重新发数据。

对于 ATBYTES[m:0]ATDATA[n:0]:

   m = log2(n+1)4

在这里插入图片描述

1.2.4 Trace ID

对于 ATID 信号,trace 的数据要伴随着 ATID 进行发送的,因为产生 trace 的组件有很多,因此需要一个 ID 来识别这些组件,ID 就保存在 ATID中发送。

ATID是一个7位的值。0x000x70-0x7f 是 coresight 中规定的保留值,在 soc实现中,coresight trace 组件不应该使用这些ID

在一个 soc 中,对于每个trace组件,ID 必须是唯一的。对于ID,有两种选择:

  • Fixed ID:在soc设计的时候,就将ID值给固定了;
  • Programmed ID: trace 组件的 ID 可以通过外部的 debugger 进行更改,但是 debugger 要保证,组件的 ID 必须是唯一的。

ATIDATDATA,在同一时刻被 slave所接收。

1.2.5 Buffer Flusing

一般 Trace 数据都是从 trace source 发送到 trace sink, 但是在某些情况下,trace sink 需要主动要求 trace source 发送数据,此时就会用到 flusing。
在这里插入图片描述

sink 发送 flush 信号给 source,source 将内部所有的 trace 数据全部发送出去,发送完毕后,回应 sink flush complete 信号。

flush 使用 AFVALID 和 AFREADY 两个信号来作为握手信号。
在这里插入图片描述

推荐阅读
http://www.lujun.org.cn/?p=2365
https://zhuanlan.zhihu.com/p/407577715

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645996.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

存储快速入门——【1】网络存储主要技术(NAS、SAN、SCSI、CIFS、zone)

存储快速入门——【1】网络存储主要技术 1 NAS简介(网络) 在20世纪80年代初,英国纽卡斯尔大学布赖恩.兰德尔教授 ( Brian Randell)和同事通过“纽卡斯尔连接”成功示范和开发了在整套UNIX机器上的远程文件访问。继“纽卡斯尔连接”之后&…

Springboot集成Redis常见的报错和解决方案

Springboot集成Redis后运行时常见的报错信息和其解决方案 1. io.lettuce.core.protocol.CommandHandler : null Unexpected exception during request: java.io.IOException: 远程主机强迫关闭了一个现有的连接。报错信息原因分析解决方案 2. io.netty.util.internal.OutOfDire…

Python自动化测试 史上最全的进阶教程

Python自动化测试就是把以前人为测试转化为机器测试的一种过程。自动化测试是一种比手工测试更快获得故障反馈的方法。 随着时代的变革,也许在未来测试这个职位的需求会越来越少甚至消失,但是每一个组织,每一个客户对软件质量的要求是永远不…

剪辑软件生成的mp4素材无法打开的修复方法

专业剪辑软件可以对视频、音频进行各种修改、美化,像adobe的PR等。今天我们来看一个剪辑软件生成的视频无法打开的修复案例,看看遇到这种情况如何处理. 故障文件:273M和1.72G两个文件 故障现象: 剪辑完成后保存到移动硬盘(文件系统为exfat…

VALSE 2023 无锡线下参会个人总结 6月10日-1

VALSE2023无锡线下参会个人总结6月10日-1 会场照片6月10日会议日程安排大会主旨报告:高文:特征编码与数字视网膜焦李成:下一代深度学习的思考与若干问题陈熙霖:计算机视觉-从孤立到系统性方法 企业宣讲环节(一&#xf…

邓铎:书中自有天地人

邓铎,一个优秀的艺术家,他的书法作品、理论文章自成一派,从书法中咀嚼出人生百味,大千世界,写下了他生命中“六十余载,书中天地人”的执着与坚持。 作为一名优秀的书法家,邓铎的艺术表达具有独…

网安笔记14 firewall

防火墙概述 由软件和硬件组成的系统,它处于安全的网络和不安全的网络之间,根据由系统管理员设置的访问控制规则,对数据流进行过滤 对于内部攻击以及绕过防火墙的连接却无能为力 对数据流如何处理 允许数据流通过拒绝数据流通过&#xff0…

构建工具 Vite、Webpack、Rollup对比

Webpack介绍 热更新方面:webpack支持HMR,但是webpack需要全部重新编译并更新,效率较低 tree-shaking:webpack2开始支持且消除效果不好,但是webpack5有更好的tree-shaking(去除未使用代码) 分包…

0基础学习VR全景平台篇第43篇:编辑器底部菜单-隐藏场景

大家好,欢迎观看蛙色VR官方系列——后台使用课程! 本期为大家带来蛙色VR平台,底部菜单—隐藏场景功能操作。 功能位置示意 一、本功能将用在哪里? 隐藏场景功能,指将选中的场景隐藏,浏览页将不显示隐藏的…

最详细,从0-1性能测试步骤详细,测试老鸟经验总结...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 性能测试流程 性…

sandfly-entropyscan:一款功能强大的恶意程序熵扫描工具

关于sandfly-entropyscan sandfly-entropyscan是一款功能强大的熵扫描工具,该工具可以用于检测与恶意软件相关的打包文件或加密二进制文件。除此之外,该工具还支持查找恶意文件和Linux进程相关的安全信息,并提供带有加密哈希的输出结果。 s…

cesium学习(下载,官方案例)

下载cesium源码 可以从官网直接下载,官网下载的是编译好的。链接: https://www.cesium.com/downloads/从github下载源码,方便我们本地调试学习(本文采用这种方式)。链接: https://github.com/CesiumGS/cesium 运行项目 安装依赖 npm i运行 npm run …

八股|ThreadLocal的内存泄露

ThreadLocal是个好用的工具类,但是使用不好是会导致内存泄露的。 内存泄露:之前开辟使用的内存空间,在使用完毕后未释放,结果导致一直占据该内存单元,无法被gc回收,导致该内存单元后续无法被使用&#xff0…

优思学院|质量管理六大思维陷阱【四】:抽样检查是最经济又能保证质量的方法吗?

在质量控制的过程中,一个常见的误解是认为抽样检查是最经济又能保证质量的方法。许多人认为进行百分之百的全数检查既浪费人力又时间不够。因此,他们倾向于采用抽样检查的方法,认为这样既符合经济成本,又能确保产品质量的水准。 …

Java中的死锁和Lock锁

6.死锁 1.死锁的理解: 不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁 2.说明: 1出现死锁后,不会出现异常,不会出现提示,只是锁的线程…

【小白入门】Verilog实现异步FIFO

之前也在CSDN上面写过两个FIFO相关的文章,不过代码看起来比较复杂,且注释也比较少,不利于新手入门。很多时候都没有耐心继续看下去。 http://t.csdn.cn/0dPX6 http://t.csdn.cn/lYvoY 因为自己本身是一个初学者,就从初学者的视…

交换排序——冒泡排序和快速排序

一、交换排序的基本思想 1、两两比较&#xff0c;如果发生逆序则交换&#xff0c;直到所有记录都排好序为止。 2、常见的交换排序方法&#xff1a;冒泡排序和快速排序 3、最简单的交换排序——简单选择排序算法描述 void SelectSort(SqList &K) {for (i1; i<L.lengt…

浅谈C++和Java中对象的等号赋值

随着对C学习的深入&#xff0c;发现了一些和Java在设计思想上有所不同的地方。其一就是对象的拷贝赋值。 在Java中&#xff0c;如果定义了两个对象s1和s2&#xff0c;在堆内存中将会创建两个对象实体。那么s1 s2;表示s1指向的对象发生改变&#xff0c;即指向了s2所指向的对象…

8分钟让你完全掌握代理IP基础知识和实际应用

概念 代理IP可以理解为一个中转服务器&#xff0c;将用户和目标服务器之间的请求和响应进行转发和代理。使用代理IP的主要目的是隐藏用户的真实IP地址、访问被限制的内容、提高网络连接速度和保护用户隐私。 目录 概念 一、代理IP的工作原理 二、代理IP的类型 三、为什么…

总结的太到位:python 多线程系列详解

前言&#xff1a; 上vip课的时候每次讲到框架的执行&#xff0c;就会有好学的同学问用多线程怎么执行&#xff0c;然后我每次都会说在测开课程会详细讲解&#xff0c;这并不是套路&#xff0c;因为如果你不理解多线程&#xff0c;不清楚什么时候该用什么时候不该用&#xff0c;…