ARM RealView ARMulator ISS User Guide

RealView™ ARMulator® ISS
ۈ
፿ઓᒎฉ
Copyright © 2002, 2003 ARM Limited
ARM DUI 0207ASC-00
版权所有
RealView ARMulator ISS
፿ઓᒎฉ
Copyright © 2002, 2003 ARM Limited
版权所有
ۈ۾ቧᇦ
本书进行了以下更改
ৎখ଑ഺ
྇໐ ቲ ৎখ
2002 年 8
A
1.3
Ⴥᎌཚᄰস
®或 ™
标有
的词语和徽标是 ARM Limited 拥有的注册商标或商标 此处提及的其它品牌和名称可能
是其相关所有者的商标
除非事先得到版权所有人的书面许可 否则不得以任何形式改编或复制本文档包含或产品描述的全 部或部分信息
本文档描述的产品将进行持续的开发和改进 ARM 将如实提供所有产品特性以及本文档包含的使 用方法
但是 所有暗示或明示的担保 包括但不限于对特定用途适销性或适用性的暗示担保 均
不包括在内
本文档的目的仅在于帮助读者使用产品 对由于使用本文档中的任何信息 这些信息中的任何错误 或遗漏或任何不正确的使用产品而导致的任何损失或损害
ARM Limited 概不负责
ii Copyright © 2002, 2003 ARM Limited
版权所有
ARM DUI 0207ASC-00
目录
RealView ARMulator ISS
༄ዔ
关于本书 ......................................................................................................... vi
反馈 ................................................................................................................ ix
ᐺ଼
1
1.1 RealView ARMulator ISS 概述 .................................................................... 1-2
2
ARMulator
2.1 关于 ARMulator ........................................................................................... 2-2
2.2 ARMulator 组件 ........................................................................................... 2-3
2.3 跟踪器 ......................................................................................................... 2-5
2.4 Profiler ....................................................................................................... 2-12
2.5 ARMulator 周期类型 .................................................................................. 2-14
2.6 页表模块 .................................................................................................... 2-19
2.7 缺省存储器模型 ......................................................................................... 2-27
2.8 使用映射文件进行存储器建模 ................................................................... 2-28
2.9 Semihosting .............................................................................................. 2-31
2.10 外围设备模型 ............................................................................................ 2-32
૥߻ᒀဤ
፿ઓᒎฉ
ᐺܠ
3
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
ARMulator
3.1 ARMulator 扩展套件 .................................................................................... 3-2
3.2 写新外围设备模型 ....................................................................................... 3-6
ෝቯ
版权所有
iii
3.3 构建新模型 .................................................................................................. 3-8
3.4 配置 ARMulator 以使用新模型 .................................................................. 3-10
3.5 配置 ARMulator 以禁用模型 ..................................................................... 3-12
4
ARMulator
4.1 ARMulator 模型 .......................................................................................... 4-2
4.2 与内核进行通信 .......................................................................................... 4-3
4.3 基本模型接口 ............................................................................................ 4-12
4.4 协处理器模型接口 ..................................................................................... 4-15
4.5 异常 .......................................................................................................... 4-26
4.6 事件 .......................................................................................................... 4-29
4.7 处理程序 ................................................................................................... 4-33
4.8 存储器访问函数 ........................................................................................ 4-38
4.9 事件调度函数 ............................................................................................ 4-40
4.10 通用函数 ................................................................................................... 4-41
4.11 访问调试器 ................................................................................................ 4-54
4.12 跟踪器 ....................................................................................................... 4-58
4.13 映射文件 ................................................................................................... 4-60
4.14 ARMulator 配置文件 ................................................................................. 4-64
4.15 ToolConf ................................................................................................... 4-69
4.16 外围设备参考 ............................................................................................ 4-74
ݬఠ
ࠤ૏ܭ
iv Copyright © 2002, 2003 ARM Limited
版权所有
ARM DUI 0207ASC-00
༄ዔ
此前言对 RealView 行了介绍
vi
ix
它包含以下内容
关于本书 反馈
ARMulator® 指令集模拟器 (RealView ARMulator ISS) 目标进
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
版权所有
v
前言
᎖۾ၗ
း፿࣪ሷ
本书提供了有关 RealView ARMulator ISS 即 ARM 处理器模拟器 的参考信息
ဧ፿۾ၗ
本书专为使用远程调试接口 1.5.1 兼容调试器的所有开发人员而写 您是一位有经验的软件开发人员
并且您熟悉 ADS v1.2 Getting Started Guide
前提是假定
RealView Compilation Tools v1.2 Getting Started Guide 中描述的 ARM 开发工具
本书由以下章节组成
简介
简介
1
简介简介
阅读本章以简单了解本书内容以及 RealView ARMulator ISS 的概要 描述
第第第第 2 章章章章 ARMulator
基础知识
基础知识
基础知识基础知识
阅读本章以简单了解 RealView ARMulator ISS
ARM 指令集模
拟器
第第第第 3 章章章章
编写
编写
ARMulator
编写编写
模型
模型
模型模型
阅读本章以帮助您记录您对 RealView ARMulator ISS 的扩展和修改
第第第第 4 章章章章 ARMulator
参考
参考
参考参考
本章提供帮助您使用 RealView ARMulator ISS 的更多详细内容
vi Copyright © 2002, 2003 ARM Limited
版权所有
ARM DUI 0207ASC-00
፝ၮಿ
本书使用了以下印刷惯例
前言
斜体
突出显示重要注释
࠰ᄏ 突出显示界面要素
的重点以及 ARM 处理器信号名称
等宽
表示可以从键盘输入的文本
表示允许的命令或选项缩写
等宽
输入命令或选项的全名
等宽斜体
表示此处的命令和函数变量可用特定值代替
ࢀ౑࠰ᄏ
表示使用示例代码以外的语言关键字
介绍特殊术语 表示内部交叉链接和引用
如菜单名称 必要时也用于强调说明列表中
如命令 文件和程序名以及源代码
可只输入下划线标记的文本 无需
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
版权所有
vii
前言
໚჈ࣗᇕ
本部分列出了 ARM Limited 和第三方发布的 发代码附加信息的相关读物
ARM 将定期对其文档进行更新和更正 问题
ARM
请访问
ၗఓ
http://www.arm.com
有关最新勘误表 附录以及 ARM 常见
本书包含特定 RealView ARMulator ISS 的信息 与调试器配合使用的信息
请参阅调试器说明文档
可提供有关 ARM 系列处理器开
有关将 RealView ARMulator ISS
viii Copyright © 2002, 2003 ARM Limited
版权所有
ARM DUI 0207ASC-00
ౣ
ARM Limited 乐于收到有关 RealView ARMulator ISS 及其文档的任何反馈
前言
᎖
RealView ARMulator ISS
᎖۾ၗࡼౣ
ࡼౣ
如果您对 RealView ARMulator ISS 有任何疑问 商提供快捷
有用的答复 请提供
您的姓名和公司
产品序列号
您所用的版本的详情
您运行的平台的详情
如硬件平台 操作系统类型和版本
再现问题发生的独立样本代码
您期望发生和实际发生的情况的详细说明
您使用的命令
包括所有命令行选项
解释问题的示例输出
工具的版本字符串
如果您对本书有任何问题
包括版本号和日期
请发送电子邮件到
文档标题
文档编号
您有意见的页码
您的意见的简单说明
请与供应商联系 为便于供应
errata@arm.com
并提供
我们还欢迎您对新增和改进之处提出一般建议
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
版权所有
ix
前言
x Copyright © 2002, 2003 ARM Limited
版权所有
ARM DUI 0207ASC-00
1
଼஑
本章介绍了 RealView ARMulator 提供的调试支持工具 本章包含以下内容
1-2 RealView ARMulator ISS
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
指令集模拟器
概述
版权所有
(RealView ARMulator ISS) 1.3
1-1
简介
1.1 RealView ARMulator ISS
您可以使用远程调试接口 (RDI) 1.5.1 兼容调试器调试您的原型软件 调试器在 主计算机上运行
您的目标系统可以是以下任何一个
软件模拟器 RealView ARMulator ISS
ARM 评估或开发板
基于 ARM 的第三方开发板
您自己设计的基于 ARM 的硬件
本文档只介绍 RealView ARMulator ISS 有关其它目标系统的详情 请参阅该目 标的说明文档
1.1.1
ဠඐဵ
RealView ARMulator ISS
RealView ARMulator ISS
独立产品 通信的工具
ARMulator 是一个 模拟指令集和 ARM 处理器的结构 自定义存储器系统
ARMulator 在与调试器相同的主计算机上运行
গၤ
并连接至运行原型软件的目标系统
模拟 ARM 硬件
后文称为 ARMulator ARM 调试器提供 是一个
指令集模拟器
请参阅第 3
(ISS)
它与存储器系统和外围设备一起 可以
您还可以将其扩展至模拟其它外围设备和
编写
ARMulator
并且包括与调试器
模型
您可以将 ARMulator 用于软件开发 也可以将其作为以 ARM 为目标的软件的 基准程序
请参阅第 2-2
它可以模拟指令集和计数周期 作为基准程序的精度会受到限制
精度

1.1.2 Semihosting

您可以使用主计算机上的 I/O 设备
semihosting
有关详情 请参阅 RealView Compilation Tools v1.2 Compilers and
而非目标系统提供的设备 这就是所谓的
Libraries Guide
缺省情况下
ARM C C++ 代码使用 semihosting 设备
要从汇编代码访问 semihosting 设备 请使用 semihosting ARMulator 中止 semihosting SWI 并从主计算机请求服务
1-2 Copyright © 2002, 2003 ARM Limited
版权所有
软件中断
(SWI)
ARM DUI 0207ASC-00
2
ARMulator
૥߻ᒀဤ
本章描述 ARMulator 即提供 ARM 处理器软件模拟的程序集成 它包含以下 内容
关于
2-2
2-3 ARMulator
2-5
2-12 Profiler
2-14 ARMulator
2-19
2-27
2-28
2-31 Semihosting
2-32
ARMulator
组件
跟踪器
周期类型 页表模块 缺省存储器模型 使用映射文件进行存储器建模
外围设备模型
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
版权所有
2-1
ARMulator
基础知识
2.1
2.1.1
᎖
ARMulator
றࣞ
ARMulator 是一种指令集模拟器
它可以模拟指令集和各种 ARM 处理器结构
要在 ARMulator 上运行软件 请通过 RDI 1.5.1 兼容调试器进行访问
ARMulator 适用于软件开发 以模拟指令集和计数周期 程序的精度和周期计数精度会受到一定限制
并可作为以 ARM 为目标的软件的基准程序 它可
请参阅第 2-14 ARMulator
请参阅
周期类型

精度

作为基准
ARMulator 可提供使全部 C C++ 程序在模拟系统上运行所需的全部工具 有关 ARMulator 支持的 C semihosting SWI 的信息 另请参阅 RealView
Compilation Tools v1.2 Compilers and Libraries Guide
ARMulator 不能达到 100% 的精度 言
不是很复杂 非高速缓存的 ARM 处理器内核模型精度较高 而带高速缓
因为它并不是基于真实处理器的 一般而
存的那些内核模型可能与实际硬件的精度不完全相同
ARMulator 适合用作系统设计的软件开发工具
但如果需要 100% 的精度 则必
须使用硬件模型
在以下情况下 您可以使用 ARMulator 作为基准程序
您正在建模的内核没有高速缓存
您只需要近似比较
ARMulator 不会在高速缓存内核上建立 Asynchronous Mode 模型 CP15 中设置了控制位以便指定 Asynchronous Mode
Set to Asynch mode, WARNING this is not supported
您可以继续调试 但 ARMulator 将完全按照 Synchronous Mode 的方式运行
2-2 Copyright © 2002, 2003 ARM Limited
版权所有
如果您在
ARMulator 将会发出警告
ARM DUI 0207ASC-00
ARMulator
基础知识
2.2 ARMulator
ᔝୈ
可作为
ARMulator 由一系列模块组成
共享对象
Linux Solaris
.so
主模块是
ARM 处理器内核模型
处理器所用存储器的模型
这些部件中的每一个均有备选的预定义模块 储器模型组合
其中一个预定义的存储器模型
mapfile
允许您指定窄内存和等待状态
储器建模
另外 还有其它您可以使用的预定义模块
建立附加硬件模型
建立预安装的软件模型
抽取调试或基准信息
例如协处理器或外围设备
例如 C
请参阅第 2-5
您可以使用不同的预定义模块组合和不同的存储器映射 请参阅第 2-4
ARMulator
如果提供的模块不符合您的要求 您也可以写自己的模块或者编辑预定义模块 的副本
建立不同外围设备
例如
协处理器或操作系统的模型
建立不同存储器系统的模型
提供其它调试或基准信息
动态链接库
文件或所有平台上的
您可以选择要使用的处理器和存
mapfile
允许您详细指定模拟的存储器系统
请参阅第 2-28
semihosting SWI 处理程序或操作系统
跟踪器
Windows
文件
.sdi
.dll
来执行
文件
使用映射文件进行存
和第 2-12 页 Profiler
配置
一些模块的源代码已提供 您可以这些模块为示例 来写自己的模块 请参阅 第 3
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
编写
ARMulator
模型
版权所有
2-3
ARMulator
基础知识
2.2.1
๼ᒙ
ARMulator
您可以从 RDI 1.5.1 兼容调试器配置一些 ARMulator 的详细资料
要进行其它配置调整 您必须编辑
.ami
文件副本
ARMulator 提供以下
文件
bustypes.ami
default.ami
example1.ami
peripherals.ami
processors.ami
vfp.ami
这些文件位于
install_directory/RVARMulator/ARMulator/1.3/release/platform
在此路径中
platform
Windows Linux Solaris
对于 Windows
win_32-pentium
linux-pentium
solaris-sparc
请用 \ 替换 /
如果要写自己的任何 ARMulator 模型 请先生成其它的 您的模型
有关如何操作的详情 请参阅第 4-64 ARMulator
文件
.ami
以允许配置
配置文件
.ami
调试器启动 ARMulator 后 径上的
install_directory/RVARMulator/ARMulator/1.3/release/platform
.ami
文件
初始设置为 ARMulator 目录
ARMulator 会读取环境变量
以下小节依次描述每个预定义模块以及如何配置这些模块
如果
文件中的配置设置与您在调试器中的设置发生冲突
.ami
试器设置
2-4 Copyright © 2002, 2003 ARM Limited
版权所有
中定义的所有路
ARMCONF
则将优先采用调
ARM DUI 0207ASC-00
ARMulator
基础知识
2.3
2.3.1
ৌᔍ໭
您可以使用跟踪器跟踪指令 存储器访问和事件 由配置文件 来控制跟踪内容
本节包括以下小节
2-6
2-10
ࢯ၂໭ৌᔍᑽߒ
如果您的调试器不直接支持跟踪功能 第 4 位来启用或禁用跟踪功能
RealView 调试器中的
调试器当量
有关通过 ARMulator 使用跟踪功能的详情 请参阅调试器文档
跟踪器由调试器开启或关闭
请参阅第 4-64 ARMulator

调试器跟踪支持

解释跟踪文件输出
配置跟踪器
$rdi_log
配置文件
跟踪器将使用 RDI 记录级别变量的
记录级别变量为以下其中之一
@mdebug_rdi_log
但由
.ami
文件控制
peripherals.ami
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
版权所有
2-5
ARMulator
基础知识
2.3.2
ஊျৌᔍᆪୈၒ߲
本节描述如何解释从跟踪器输出的信息
ৌᔍᆪୈာಿ
以下示例显示了部分跟踪文件
Date: Thu Aug 9 16:41:36 2001 Source: Armul Options: Trace Instructions (Disassemble) Trace Memory Cycles
BNR4O___ A0000000 00000C1E BNR8O___ 00008000 E28F8090 E898000F BSR8O___ 00008008 E0800008 E0811008 BSR8O___ 00008010 E0822008 E0833008 BSR8O___ 00008018 E240B001 E242C001 MNR4O___ 00008000 E28F8090 IT 00008000 e28f8090 ADD r8,pc,#0x90 ; #0x8098 MNR4O___ 00008004 E898000F IT 00008004 e898000f LDMIA r8,{r0-r3} BNR4O___ A0000000 00000C1E BNR8O___ 00008098 00007804 00007828 BSR8O___ 00008080 10844009 E3C44003 BSR8O___ 00008088 E2555004 24847004 BSR8O___ 00008090 8AFFFFFC EAFFFFF2 MNR8____ 00008098 00007804 00007828 BNR8O___ 000080A0 00007828 00007840 BSR8O___ 000080A8 E3A00840 E1A0F00E BSR8O___ 000080B0 E92D400C E28F0014 BSR8O___ 000080B8 E5901000 E5900004 MNR8____ 000080A0 00007828 00007840 MNR4O___ 00008008 E0800008 IT 00008008 e0800008 ADD r0,r0,r8 MNR4O___ 0000800C E0811008 IT 0000800C e0811008 ADD r1,r1,r8 MNR4O___ 00008010 E0822008
以下类型的行可以出现在跟踪文件中
2-7
2-8
2-8
2-9
2-9
2-6 Copyright © 2002, 2003 ARM Limited
跟踪存储器 跟踪指令I 行 跟踪事件 跟踪寄存器 跟踪总线
E
B
M
R
版权所有
ARM DUI 0207ASC-00
ARMulator
基础知识
ৌᔍࡀ߼໭
M
M 行表示
存储器访问
片内存储器访问
用于不带片上存储器的内核
用于带片内存储器的内核
它们具有以下通用存储器访问格式
M<type><rw><size>[O][L][S] <address> <data>
其中
<type>
<rw>
<size>
O
L
表示周期类型
S N
连续 不连续
表示读或写操作
R W
读 写
表示存储器访问的大小
字 半字 字节
32
16 8
4 2 1
表示操作码获取 指令获取
表示锁定的访问
SWP
指令
S
D
<address>
<data>
表示推测性的指令获取
表示 ARM9TDMI
数据接口的 DMORE 信号是 HIGH
按十六进制格式给出的地址 例如
可显示为以下一种模式
value
(wait) (abort)
给定读/写值 例如 表示 nWAIT 为 LOW 相对于插入等待状态而言 表示 ABORT 为 HIGH 相对于中止访问而言
跟踪存储器行也可以有以下格式
用于空闲周期
MI
用于协处理器周期
MC
用于 Harvard 体系结构处理器
MIO
闲周期
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
00008008
EB00000C
ARM9TDMI™指令总线上的空
版权所有
2-7
ARMulator
基础知识
ৌᔍᒎഎ
I
跟踪指令 (I) 行的格式如下
[ IT | IS ] <instr_addr> <opcode> [<disassembly>]
例如
IT 00008044 e04ec00f SUB r12,r14,pc
其中
IT
IS
<instr_addr>
<opcode>
<disassembly>
Thumb 代码中带链接的分支显示为两个条目
1st instr of BL pair.
ৌᔍူୈ
E
表示指令被执行
表示指令被跳过 几乎所有 ARM 指令都能有条件执行
按十六进制格式显示指令地址 例如
按十六进制格式给出操作码 例如
表示反汇编 如果指令已被执行则大写 例如
r12,r14,pc Disassemble=True
此为可选项 可通过在
启用
第一个标记为
00008044
e04ec00f
peripherals.ami
SUB
中设置
事件 (E) 行的格式如下
E <word1> <word2> <event_number>
例如
E 00000048 00000000 10005
其中
<word1>
<word2>
<event_number>
2-8 Copyright © 2002, 2003 ARM Limited
给出一对字的第一个 例如 pc
给出一对字的第二个 例如中断地址
给出事件编号 例如 事件在第 4-29
事件
0x10005
中有描述
版权所有
这是 MMU
Event_ITLBWalk
ARM DUI 0207ASC-00
ARMulator
基础知识
ৌᔍ଎ࡀ໭
R
事件 (R) 行的格式如下
R <register>=<newvalue>[,<anotherregister>=<newvalue>[...]]
例如
R r14=20000060, cpsr=200000d3
其中
<register>
<newvalue>
ৌᔍᔐሣ
B
总线 (B) 行的格式与 M 行的格式相同
当前指令的结果寄存器 , 保存指令执行结果
<register>
中的新内容
B 行表示片外存储器访问
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
版权所有
2-9
ARMulator
基础知识
2.3.3
๼ᒙৌᔍ໭
ARMulator 外围设备配置文件 (
{ Default_Tracer=Tracer ;; Output options - can be plaintext to file, binary to file or to RDI log ;; window. (Checked in the order RDILog, File, BinFile.) ;VERBOSE=True ;RDILog=True RDILog=False File=armul.trc BinFile=armul.trc ;; Tracer options - what to trace TraceInstructions=True TraceRegisters=False OpcodeFetch=True ;;Normally True is useful, but sometimes it's too expensive. TraceMemory=True ;TraceMemory=False TraceIdle=True TraceNonAccounted=False TraceEvents=False ;;If there is a non-core bus, do we trace it (as well). TraceBus=True ;; Flags - disassemble instructions; start up with tracing enabled; Disassemble=True TraceEIS=False StartOn=False }
peripherals.ami
) 中有关于跟踪器的部分
其中
RDILog
File
指示跟踪器输出至调试器的 RDI 日志窗口
定义写跟踪信息的文件 另外 您还可以使用 进制格式存储数据
其它选项控制跟踪内容
TraceInstructions
TraceRegisters
OpcodeFetch
TraceMemory
TraceIdle
TraceNonAccounted
2-10 Copyright © 2002, 2003 ARM Limited
跟踪空闲周期
跟踪指令
跟踪寄存器
跟踪指令获取存储器访问
跟踪存储器访问
跟踪未统计的 RDI 存储器
版权所有
BinFile
按二
即那些由调试器产生的访问
ARM DUI 0207ASC-00
ARMulator
基础知识
TraceEvents
TraceBus
Disassemble
TraceEIS
跟踪事件 有关更多信息 请参阅下面的
可能是
TRUE FALSE
总线 已跟踪片外访问 内核 未跟踪片外访问
反汇编指令
如果设为
TRUE
具对跟踪进行比较
StartOn
指示 ARMulator 在执行一开始即进行跟踪
໚჈ৌᔍ఼ᒜ
您还可以通过以下指令控制跟踪
Range=low address,high address
只在指定的地址范围内执行跟踪
Sample=n
只将每
个跟踪条目发送至跟踪文件
n
ৌᔍူୈ
跟踪事件时
EventMask=mask,value
您可以选择要跟踪的事件 方法如下
跟踪事件
如果您启用反汇编 则模拟速度会较慢
则将输出格式与其它模拟器兼容 这可使工
只跟踪那些编号被
Event=number
只跟踪
number
例如 以下指令只跟踪 MMU/高速缓存事件
EventMask=0xFFFF0000,0x00010000
有关更多信息 请参阅第 4-29
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
事件
屏蔽后 位与 与
mask
这相当于
EventMask=0xFFFFFFFF,number
版权所有
value
相等的事件
2-11
ARMulator
基础知识

2.4 Profiler

Profiler 由调试器控制
除配置程序执行时间外 误
进行配置
有关详情 请参阅调试器文档
Profiler 还允许您使用配置机制对事件
如高速缓存错
从调试器打开配置功能时 您应指定一个数字 n 以便控制配置频率 有关详
请参阅第 2-13
Profiler 可以配置 C 和汇编语言函数
FUNCTION
ENDFUNC
配置
Profiler
指令进行标记
要配置汇编语言函数 您必须将函数用
有关详情 请参阅 RealView Compilation Tools
v1.2 Assembler Guide
2-12 Copyright © 2002, 2003 ARM Limited
版权所有
ARM DUI 0207ASC-00
ARMulator
基础知识
2.4.1
๼ᒙ
Profiler
ARMulator 外围设备配置文件
{ Default_Profiler=Profiler ;VERBOSE=False ;; For example - to profile the PC value when cache misses happen, set: ;Type=Event ;Event=0x00010001 ;EventWord=pc Type=MICROSECOND
;;Alternatives for Type are ;; Event, Cycle, Microsecond. ;;If type is Event then alternatives for EventWord are ;; Word1,Word2,PC. }
peripherals.ami
中有关于 Profiler 的部分
本部分中的每一行均为一个注释 因此 ARMulator 将执行其缺省配置 缺省设 置是每隔 100 微秒进行一次配置取样
有关更多信息 请参阅调试器文档
如果本部分未加注释 则会配置数据高速缓存出错 有关更多信息 请参阅 第 4-29
Type
Type=Microsecond
Type=Cycle
事件
条目控制配置间隔
指示 Profiler 每隔
指示 Profiler 每隔
微秒进行一次取样
n
个指令进行一次取样
n
此为缺省值
并记录自上次取
样后的内存周期数量
Type=Event
也允许
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
指示 Profiler 每隔一定的相关事件即进行配置
4-29
EventMask=mask,value
事件
请参阅第 2-5
n 被忽略
版权所有
请参阅
跟踪器
2-13
ARMulator
基础知识
2.5 ARMulator
ᒲ໐ಢቯ
除模拟 ARM 内核上的指令执行之外
从调试器您可以以
本节描述所计算的各种周期类型的含义 它包含以下部分
RealView Debugger
2-15
2-16
2-16
2-17
2-17
2-18
2.5.1 RealView Debugger
ARMulator 可以按 RDI 中周期计数器调用所报告的那样增加周期计数器 详情
则符号
X
带下划线字符
然而
@cycle_count
并提供合理的时间定义
$statistics
中的周期计数器 未高速缓存的 未带缓存的 带
MMU 或 PU 和 AMBA ASB
MMU 或 PU 和 AMBA AHB
von Neumann
Harvard
带高速缓存内核的内部周期类型 内核相关的详细统计数据
ᒦࡼᒲ໐ଐၫ໭
请参阅第 4-35
@rdi_X
未知的
RDI
信息处理程序
即为周期计数器名称
这些计数器出现在寄存器选项卡中
RealView Debugger 跟踪不使用
这由监测内核和高速缓存或存储器之间总线的存储器回调服务提
ARMulator 还可以计算总线和处理器周
或调试器当量 访问这些计数
内核
架构内核
接口的高速缓存内核
接口的高速缓存内核
如果 RDI 周期计数器名称是
其中
可将所有非字母数字字符转换为
X
$statistics
RealView Debugger 使用
有关
尽管
@cycle_count
可能与周期计数器
内核内部和外部之间的总线比率意味着
2-14 Copyright © 2002, 2003 ARM Limited
Total
@cycle_count
版权所有
不同 但这种差别并不重要
是其它时钟值的数倍
ARM DUI 0207ASC-00
ARMulator
基础知识
2.5.2
ᆚ঱Ⴅદࡀࡼ
von Neumann
2-1 显示了未高速缓存的 von Neumann 内核的周期类型的含义 ARM7TDMI
ᒲ໐ಢቯ
S_Cycles 1 1
N_Cycles 0 1
I_Cycles 1 0
C_Cycles 0 0
To ta l - -
IS - -
SEQቧnMREQ
ೌኚᒲ໐
CPU 可从以下地址请求转移或转移到以下地址
与前述周期访问地址相同的地址
ቧ
ด
®
即是一个未带高速缓存的 von Neumann 型内核
ܭ
ᆚࡒદࡀࡼ
2-1
ፃ
连续周期 有关详情 请参阅
非连续周期 转移到该地址
内部周期
协处理器周期
S_Cycles
合并的 I-S 周期
CPU 从与前述周期所用地址无关的地址请求转移或者
CPU 不需要请求转移 因为它正在执行内部函数
N_Cycles I_Cycles C_Cycles Wai t s 的总和
有关详情 请参阅
von Neumann
连续周期
合并的
例如
ଦ৩ดࡼᒲ໐ಢቯ
I-S
周期
在前述周期访问地址一字之后的地址
在前述周期访问地址一个半字之后的地址
݀ࡼ
I-S
ᒲ໐
内存控制器可以在 I-Cycle 期间推测性地开始解码地址 个 S_Cycle
则内存控制器可以比其它方式更早启动 此周期的计时功能取决于
内存控制器的实施
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
版权所有
仅限于 Thumb 指令获取
如果 I_Cycle 后跟随一
2-15
ARMulator
基础知识
2.5.3
ᆚࡒદࡀࡼ
Harvard
ଦ৩ด
2-2 显示了未带高速缓存的 Harvard 型内核的周期类型的含义 ARM9TDMI 即是一个没有高速缓存的 Harvard 内核
ᒲ໐ಢቯ ᒎഎᔐሣ ၫ௣ᔐሣ ፃ
内核周期
ID_Cycles
I_Cycles
空闲周期 空闲 空闲
D_Cycles
Total - -
2.5.4
--
活动 活动
活动 空闲
空闲 活动
MMU ૞ PU  AMBA ASB
୻ాࡼ঱Ⴅદࡀด
2-3 显示了带 AMBA ASB 接口的高速缓存内核的总线周期类型的含义 这些内核的其它周期类型
例如
ܭ
ᆚࡒ঱Ⴅદࡀࡼ
2-2
内核时钟运行的总数 导致的管道中断
-
-
-
-
内核周期 ID_Cycles I_Cycles Idle_Cycles D_Cycles Wa it s 的总和
Harvard
这包括由于互锁和指令需要多个周期而
ଦ৩ดࡼᒲ໐ಢቯፃ
有关
请参阅第 2-17
带高速缓存内核的内部周期类型
例如
ARM920T 即是带 MMU 和高速缓存的内核 ARM940T 是带 PU 和高速
缓存的内核示例
ܭ
2-3 ࡒ AMBA ASB
ᒲ໐ಢቯ ፃ
A_Cycles
S_Cycles
地址预测 无数据转移 在 $statistics 中作为 I_Cycles
从当前地址连续传输数据
这些内核没有 N_Cycles 非连续访问使用 A_Cycle 后面跟随 S_Cycle 这与合 并的 I-S 周期相同
2-16 Copyright © 2002, 2003 ARM Limited
୻ాࡼ঱Ⴅદࡀดࡼᒲ໐ಢቯࡼፃ
或调试器当量
版权所有
列出
ARM DUI 0207ASC-00
ARMulator
基础知识
2.5.5
2.5.6
MMU ૞ PU  AMBA AHB
ᒲ໐ಢቯ ፃ
IDLE
BUSY
NON-SEQ
SEQ
ࡒ঱Ⴅદࡀดࡼดݝᒲ໐ಢቯ
୻ాࡼ঱Ⴅદࡀด
2-4 说明了在
先进高速总线
是带 AHB 接口的高速缓存内核
(AHB) 上使用的传输类型
有关这些内核的其它周期类型 请参阅
缓存内核的内部周期类型
ܭ
2-4 AMBA AHB
总线主控器不想使用总线
总线主控器位于分段传输中间 上的零等待状态 OKAY 进行响应
分段传输或单个访问的开始
继续进行分段传输
从属器必须以 HRESP 上的零等待状态 OKAY 进行响应
但不能进行下一个连续访问 从属器必须以 HRESP
地址与上次访问的地址没有关联
地址等于前一个地址加上数据长度
2-5 显示了高速缓存内核的内部周期类型的含义
ܭ
例如
঱Ⴅદࡀดࡼดݝᒲ໐ಢቯ
2-5
ARM946E-S
୻ా࿟ࡼᒲ໐ಢቯ
带高速
ᒲ໐ಢቯ ፃ
F_Cycles
Core Cycles
True Idle Cycles
快速时钟 (FLCK) 周期 这些是访问高速缓存的内部内核周期 对于非高速缓存的 访问 由于内核时钟转换为总线时钟 因此 F_Cycles 不会增加
内核周期是指内核时钟的跳转 运行在 FCLK 高速缓存访问 还是总线时钟
空闲周期并不是 I-S 合并周期的一部分
每次时钟跳转 Core Cycles 均会增加 无论内核是
如果您希望计算执行时间
MMU
PU 和 AMBA ASB
接口的高速缓存内核
速缓存的访问
ARM DUI 0207ASC-00 Copyright © 2002, 2003 ARM Limited
F_Cycles 不会增加
请使用外部总线周期计数 请参阅第 2-16 页带
接口的高速缓存内核或带
您不能使用 F_Cycles 计算执行时间 因为对于未经高
版权所有
BCLK
非高速缓存访问 下
MMU 或 PU 和 AMBA AHB
2-17
ARMulator
基础知识

2.5.7 StrongARM1

2-6 显示了 StrongARM1 周期类型的含义
ᒲ໐ಢቯ ፃ
Core_Idle
Core_IOnly
Core_DOnly
Core_ID
2.5.8
ดሤࡼሮᇼᄻଐၫ௣
未从指令高速缓存获取指令 未从数据高速缓存获取数据
从指令高速缓存获取指令
未从指令高速缓存获取指令
从指令高速缓存获取指令
default.ami
Counters=False
文件中有以下一行
未从数据高速缓存获取数据
从数据高速缓存获取数据
从数据高速缓存获取数据
您可以将其更改为
Counters=True
这样 数
ARMulator 会计算其它统计数据
并显示在
$statistics
或调试器当量 中 这些统计数据是特定内核相
如高速缓存命中数和高速缓存未命中
关的
ܭ
2-6 StrongARM
ᄂࢾᒲ໐ಢቯ
2-18 Copyright © 2002, 2003 ARM Limited
版权所有
ARM DUI 0207ASC-00
Loading...
+ 116 hidden pages