ARM嵌入式跟踪缓冲器技术参考手册
随着工艺速度的提高,从嵌入式跟踪宏单元(ETM)获取芯片的跟踪信息越来越困难。这导致了在保持可接受的信号质量方面的困难,或者信号需要被解复用到非常多的跟踪端口引脚上。
解决办法是在芯片上提供一个缓冲区,将跟踪信息储存起来,以后再以较慢的速度从芯片上读取。
ETB存储由ETM产生的数据。缓冲的数据可以被调试工具使用JTAG(IEEE 1149.1)接口访问,如图1-1所示。
图1-1 SoC调试实现
提供片上缓冲器使ETM产生的跟踪数据(以系统时钟速率)能被调试器以较低的时钟速率读取。这消除了对跟踪数据的高速垫的要求。
这种缓冲数据也可以通过作为ETB一部分的基于AHB从属存储器映射的外设来访问。这使得运行在处理器上的软件可以读取ETM产生的跟踪数据。
第1-2页图1-1所示的主要块是:
ETM ETM
监控 ARM 核心总线并将压缩信息实时传递到 ETB,存储信息供以后检索。 然后数据通过 JTAG 跟踪端口传递到接口单元。
这是一个外部硬件设备,它将信息从跟踪端口传递到调试工具,例如 PC。 调试工具:
• 从接口单元检索数据
• 重建处理器活动的历史视图,包括数据访问
• 通过JTAG 接口单元和端口配置宏单元。
用户可定义的过滤器允许您限制在搜索错误时捕获的信息量,从而减少从跟踪端口分析器上传的时间。
嵌入式ICE
EmbeddedICE 是基于 JTAG 的 ARM 微处理器调试环境。 EmbeddedICE 提供 ARM 源代码级符号调试器、ARMxd 和嵌入在任何 ASIC 中的 ARM 微处理器之间的接口。 ARMxd 调试器可用于 PC 兼容平台和 Sun 工作站平台。
EmbeddedICE 提供
• 实时地址和数据相关断点
• 单步执行
• ARM CPU 的完全访问和控制
• 访问ASIC 系统。
EmbeddedICE 还允许嵌入式微处理器访问主机系统外设
JTAG接口
边界扫描是一种允许通过软件控制对 JTAG 兼容设备的边界引脚进行完全控制和观察的方法。 此功能无需专门设计的在线测试设备即可进行在线测试。
1.2 ETM的版本和变体
ETB被设计为与ETM的所有版本和变体一起使用。ETM是随着ARM处理器的发展而不断改进的项目。
表1-1中列出了ETM的历史。
ETB具有与ETMv1和ETMv2架构设备兼容的模式。 ETB也适用于通用跟踪端口接口,以便与未来架构版本兼容。
2.1 功能信息
本节提供基本功能信息:
• 接口
• 全局可配置性
• 第2-3 页的ETM 版本兼容性。
2.1.1 接口
片上 ETB 模块具有三个主要接口:
• 来自 ETM 的跟踪端口
• 一个 5 针 IEEE 1149.1 (JTAG) 接口
• 基于AHB 从机的内存映射外设,用于提供对ETB 寄存器的软件访问。
此外,ETB访问一个必须在目标技术中实现的跟踪RAM。由于可以集成大量不同的RAM,所以不可能提供一个单一的通用RAM接口块。因此,RAM接口被指定,但RAM块必须由系统集成商提供。RAM接口在第2-22页的跟踪RAM接口中描述。
ETB模块的方框图见第2-3页的图2-1。
2.1.2 全局可配置性
为了能够在 RTL 中配置跟踪 RAM 的深度,使用了三个常量:
• RAM_ADDR_WIDTH 用于定义:
— 跟踪 RAM 地址总线、读指针寄存器和写指针寄存器的宽度。
— 触发计数寄存器的宽度
— 从 RAM 深度寄存器中读取的值。
RAM 地址宽度最大为 32 位。 定义参数 RAM_ADDR_WIDTH 和派生参数 MSB_ADDR 位于文件 EtbDefs.v 中。
• RAM_BIT_WIDTH 用于启用要在RTL 中配置的跟踪RAM 的位宽(24 或32 位)。
如果您打算使用 32 位跟踪 RAM:
— 不收集跟踪时作为系统内存的 ETB
— TRACEOUTPUT 的所有 32 位。
否则使用 24 位跟踪 RAM。
• BYTE_WRITE 表示跟踪RAM 支持字节写入。 如果 ETB 用作系统内存,则必须如此。
图2-1 ETB模块框图
下载ARM嵌入式跟踪缓冲器技术参考手册请到一牛网论坛
https://bbs.16rd.com/thread-598758-1-1.html
(出处: 一牛网论坛)
相关文章
- C++ Boost 内存池与智能指针
- 用 POWER BI 爬取网上薪酬数据
- PHP 常见漏洞代码总结
- POWER BI数据仪表盘建模,回答你老板的一切问题
- C++ Boost 实现异步IO远控
- C/C++ Qt 监控文件状态变化
- C/C++ 远程线程DLL注入
- C/C++ 修改EIP实现DLL注入
- C/C++ 内存反射式DLL注入 [手动映射]
- C/C++ 强制让进程执行自己的 ShellCode
- C/C++ 进程隐藏&加载寄生&僵尸进程
- C/C++ Rootkit 修改PEB隐藏dll
- C/C++ Rootkit 实现进程伪装
- C/C++ 揭秘MBR病毒如何运行
- C/C++ 病毒木马LSP劫持应用
- C/C++ 实现外部D3D屏幕绘制
- C/C++ 获取 MAC 地址的几种方法
- C/C++ 实现ShellCode编写与提取
- C/C++ 开发一款多人聊天室
- C/C++ 实现内存特征码搜索