Perface
在许多应用中,我们需要对嵌入式系统进行详尽的调试和测试。此时,官方的IDE可能无法满足我们的需求,而需要寻找其他的专业工具。其中,劳特巴赫公司提供的调试工具备受推崇。该公司专门为各种不同的芯片和处理器提供高端的调试解决方案,其工具功能强大,易于使用,但价格较为昂贵。
对于某些特定领域或大型项目,系统的复杂性和规模需要更强大的调试工具。此时,劳特巴赫公司成为了一个值得信赖的选择。他们的调试工具可以捕捉偶发性的问题、进行死机调试、代码分析、函数运行时间测试等操作,这些都是在开发过程中非常实用的功能。
但是,对于一般的小型企业和个人开发者来说,劳特巴赫公司的调试工具可能过于昂贵。因此,在选择调试工具时,需要根据实际情况进行权衡和选择。
当然这里不讲工具本身,先来讲讲与工具密切配合的CoreSight
ARM调试:CoreSight、ETM、PTM、ITM、HTM、ETB等常用术语解析
我们使用劳特巴赫的时候会有如下的打印:
++++++++++++ DAP Discovery -> Guessed Debugger Setup ++++++++++++++++++ AP#0 APB2/3-AP -> SYStem.CONFIG DEBUGACCESSPORT 0. 0xxxxxxxxx ROMTABLE -> no setup required 0xxxxxxxxx DEBUG Cortex-A55 -> SYStem.CONFIG.COREDEBUG.Base 0xxxxxxxxx 0xxxxxxxxx CTI -> SYStem.CONFIG.CTI.Base 0xxxxxxxxx 0xxxxxxxxx PMU Cortex-A55 -> SYStem.CONFIG.BMC.Base 0xxxxxxxxx 0xxxxxxxxx ETM/PTM -> SYStem.CONFIG.ETM.Base 0xxxxxxxxx 0xxxxxxxxx DEBUG Cortex-A55 -> SYStem.CONFIG.COREDEBUG.Base 0xxxxxxxxx 0xxxxxxxxx CTI -> SYStem.CONFIG.CTI.Base 0xxxxxxxxx 0xxxxxxxxx PMU Cortex-A55 -> SYStem.CONFIG.BMC.Base 0xxxxxxxxx 0xxxxxxxxx ETM/PTM -> SYStem.CONFIG.ETM.Base 0xxxxxxxxx AP#3 AXI-AP -> SYStem.CONFIG AXIACCESSPORT 3. 0x00000000 ROMTABLE -> no setup required ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- AP#0:表示应用程序的进程编号,其中“0”表示第一个进程。
- APB2/3-AP:表示APB总线2和APB总线3上的应用程序。APB(Advanced Peripheral Bus)是一种先进的外部总线,用于连接嵌入式系统中的外设。
- SYStem.CONFIG:表示系统配置,该日志记录了与系统配置相关的信息。
- DEBUGACCESSPORT:表示调试访问端口,用于远程调试和访问设备。
- ROMTABLE:表示ROM表,用于存储设备的配置信息和地址映射。
- Cortex-A55:表示ARM Cortex-A55处理器,是一种适用于高性能、低功耗应用的处理器。
- CTI:表示Cortex Test Interface(CTI),用于在Cortex-A处理器上进行测试和调试。
- PMU:表示Power Management Unit(PMU),用于管理处理器的电源状态。
- ETM/PTM:表示Embedded Trace Macrocell(ETM)和Processor Trace Macrocell(PTM),用于在处理器内部进行跟踪和调试。
- SYStem.CONFIG.COREDEBUG.Base 和 SYStem.CONFIG.CTI.Base 等:表示系统配置中不同模块的基地址,用于调试和访问这些模块。
- BMC.Base:表示Baseboard Management Controller(BMC)的基地址,用于硬件管理控制器(通常在服务处理器中)。
下面先看看这些关键词是什么意思?
CoreSight
- CoreSight
CoreSight CoreSight 是一种基础架构,它可对完整的芯片上系统 (SoC) 设计的性能进行调试、监视和优化,CoreSight™ 跟踪宏单元在 SoC 中提供全面的非干预性可见性。
通过遵循 CoreSight 架构规范,可以方便地将合作伙伴特定的跟踪宏单元集成到 CoreSight 系统中
CoreSight是ARM公司提出的一个用于对复杂的SoC(System on a Chip)实现debug和trace的架构。它是一个硬件和软件组件的集合,旨在提供强大的调试和测试功能,以帮助开发人员开发和维护复杂的嵌入式系统。
CoreSight的主要组件包括:
- CTI(Cross-Trigger Interface):用于在处理器和其他组件之间传递触发信号,以控制执行流程和触发调试事件。
- CTM(Cross-Trigger Matrix):用于实现多个CTI之间的触发信号的相互发送与接收,以支持多处理器调试和测试。
- ETM(Embedded Trace Macrocell):用于跟踪处理器执行指令的地址和数据,生成跟踪数据以供调试和测试使用。
- PTM(Processor Trace Macrocell):用于在处理器内部实现跟踪功能,记录处理器的状态和事件,以供调试和测试使用。
- TMC(Trace Memory Controller):用于控制跟踪数据的存储和读取,将跟踪数据保存到外部存储器中或从外部存储器中读取跟踪数据。
- DCC(Debug Communication Controller):用于实现调试器与目标设备之间的通信,包括将调试命令发送到目标设备或从目标设备读取数据。
- DMC(Debug Memory Controller):用于控制对目标设备内存的访问,包括将数据写入目标设备内存或从目标设备内存读取数据。
通过这些组件的组合和配置,CoreSight可以实现对复杂SoC的debug和trace功能。开发人员可以使用调试工具链来访问和处理CoreSight生成的跟踪数据,以进行故障排除、性能优化、安全分析等操作。
CTI
CoreSight CTI是ARM Cortex-A系列处理器的一个调试和测试接口。它提供了一种硬件触发信号机制,用于测试处理器内部状态,并实现跟踪和调试功能。
在硬件结构上,CTI接口连接到一个Cortex-A处理器的调试端口上,并与一个或多个其他CTI接口或调试工具相连。它包含一组触发信号线,用于向处理器发送触发信号或接收来自处理器的触发信号。
触发信号是用于控制处理器执行特定操作的电信号。通过使用CTI触发信号,调试工具可以控制处理器的执行流程,以便在特定条件下暂停处理器的执行,或者将处理器置于调试状态。
CTI触发信号有多种类型,包括软件触发信号、硬件触发信号和跟踪触发信号。
其中,
- 软件触发信号是通过调试命令将处理器置于调试状态;
- 硬件触发信号是根据预设的条件或事件来触发处理器执行特定操作;
- 跟踪触发信号则是用于在处理器执行代码时生成跟踪数据。
除了触发信号外,CTI还提供了一些其他调试和测试功能。例如,它可以通过访问处理器内部寄存器和内存来读取和写入数据,以便检查处理器状态或控制处理器执行特定操作。此外,CTI还可以生成中断信号,以便在特定条件下中断处理器的执行。
CTI的触发信号类型
- Input triggers:这类触发信号是由处理器发送给CTI的,用于触发事件输入到CTI。当处理器检测到特定事件时,它会通过Input triggers信号线将触发信号发送给CTI。这些信号可以用于控制处理器的执行流程,例如在特定条件下暂停处理器的执行或将其置于调试状态。
- Output triggers:这类触发信号是由CTI发送给处理器的,用于触发事件输出到处理器。当CTI检测到特定事件时,它会通过Output triggers信号线将触发信号发送给处理器。这些信号可以用于控制处理器的执行流程,例如在特定条件下触发处理器执行特定操作或将其置于调试状态。
- Input channels:这类信号是通道事件输入到CTI的。当CTM(Cross-Trigger Matrix)检测到特定事件时,它会通过Input channels信号线将信号发送给CTI。这些信号可以用于控制处理器的执行流程,例如在特定条件下触发处理器执行特定操作或将其置于调试状态。
- Output channels:这类信号是通道事件输出到CTM的。当CTI检测到特定事件时,它会通过Output channels信号线将信号发送给CTM。这些信号可以用于控制处理器的执行流程,例如在特定条件下触发处理器执行特定操作或将其置于调试状态。
这些触发信号类型提供了对处理器执行流程的精细控制,使得开发人员可以更方便地进行调试和测试。通过使用这些触发信号,调试工具可以灵活地控制处理器的执行流程,以便在特定条件下检查处理器状态或执行特定操作。
CTM:CoreSight CTM(Cross-Trigger Matrix)是一个交叉触发矩阵,用于实现多个CTI(Cross-Trigger Interface)之间的触发信号的相互发送与接收。它可以将触发信号从一个CTI发送到另一个CTI,以便在设备之间传播事件。
每个Core和DSP都有一个CTI组件相连,CTI可以给处理器(DSP)发送trigger信号,也可以接收处理器(DSP)的trigger信号。所有的CTI和CTM相连,因此可以实现多个CTI之间的trigger信号的相互发送与接收。
这些信息对于理解和使用CoreSight CTM是非常有帮助的。
ETM,嵌入式跟踪宏单元
ETM 宏单元为 ARM 微处理器提供实时指令跟踪和数据跟踪。跟踪软件工具使用 ETM 生成的信息重建全部或部分程序的执行情况。
ETM (Embedded Trace Macrocell) 是一种在 ARM 微处理器中使用的硬件单元,它主要用于提供实时的指令跟踪和数据跟踪。这种跟踪信息对于调试和性能分析等任务非常有用。
ETM 宏单元的主要功能如下:
- 实时指令跟踪:ETM 可以跟踪微处理器执行的每一条指令。这使得开发人员能够精确地了解程序在执行时的行为,这对于调试和性能优化特别重要。
- 数据跟踪:ETM 还能跟踪微处理器中的数据流动。这使得开发人员可以清楚地看到哪些数据被读取、写入和修改,这对于理解程序的数据使用情况非常有帮助。
使用 ETM 生成的信息,开发人员可以使用跟踪软件工具来重建程序的部分或全部执行情况。这使得开发人员可以更深入地理解程序的运行方式,有助于发现潜在的错误或性能瓶颈。
白话一刻
ETM 就像是一个微处理器中的“间谍”,它默默地观察并记录下微处理器在做些什么。对于程序员来说,这就像有一个私人助手,随时告诉他们程序在什么时候、在哪里、怎样运行的。
- 指令跟踪:想象一下,你正在让一个朋友帮你编写一个程序,但是他编写的代码出了问题,导致程序行为异常。这时,ETM 就相当于一个隐藏的摄像头,记录下了朋友编写的每一行代码。通过查看 ETM 记录的信息,你就能知道程序在哪个地方出现了问题,就像看回放一样。
- 数据跟踪:ETM 还可以跟踪程序运行时数据的流动情况。比如说,你的程序需要读取一个文件,然后进行处理。通过 ETM,你可以看到程序在什么时候读取了文件,读取了哪些数据,以及这些数据后来被怎样处理。这样,你就可以更好地理解程序的运行过程,看看是否有改进的地方。
ETM 就像是一个微处理器的“监控摄像头”,默默地记录下程序的一切行为。通过这些记录的信息,程序员可以更好地理解程序的行为,找出潜在的问题,优化程序的性能。
ETM 在优化程序性能方面有什么帮助?
- 识别性能瓶颈:通过 ETM 提供的数据跟踪信息,开发人员可以清楚地看到哪些代码部分是程序运行最慢的部分,从而识别出性能瓶颈。这样,他们就可以针对这些瓶颈进行优化,以提升程序的总体性能。
- 理解数据使用:通过 ETM 的数据跟踪功能,开发人员可以清楚地看到程序在运行过程中数据的读取、写入和修改情况。这有助于他们更好地理解程序的数据使用情况,从而优化数据结构、算法或者数据处理流程,以提升程序性能。
- 指令优化:通过 ETM 的指令跟踪功能,开发人员可以观察到程序执行的每一条指令。这样,他们就可以针对这些指令进行优化,比如使用更高效的指令集、优化指令排序等,以提高程序的运行速度。
- 系统级优化:ETM 提供的信息不仅可以帮助开发人员优化程序本身,还可以帮助他们优化整个系统。例如,通过 ETM 提供的数据,开发人员可以更好地理解程序在内存、CPU 利用率等方面的情况,从而优化系统配置或调整系统参数,以提升整个系统的性能。
ETM 提供了哪些数据跟踪信息?
ETM 提供的数据跟踪信息主要包括以下几类:
- 指令跟踪信息:ETM 会记录微处理器执行的每一条指令。这使得开发人员可以了解程序执行的完整过程,包括指令的执行顺序、执行时间等。这些信息对于调试程序和性能优化都非常有用。
- 数据跟踪信息:ETM 还会记录微处理器中数据的读取、写入和修改情况。这使得开发人员可以了解程序在运行过程中数据的变化情况,从而更好地理解程序的运行过程。
- 异常和中断信息:当程序出现异常或中断时,ETM 会记录下相关的信息,包括异常的类型、发生时间、发生位置等。这有助于开发人员更好地理解程序的异常处理和中断响应机制。
- 系统级信息:除了指令和数据跟踪信息,ETM 还可以提供一些系统级的信息,例如 CPU 利用率、内存使用情况等。这有助于开发人员更好地了解程序的运行环境和系统资源配置情况。
ETM 记录的指令跟踪信息主要包括以下内容:
- 指令地址:每条指令在内存中的地址。
- 指令操作码:指令的操作码,即指令的功能码,表示该指令执行什么样的操作。
- 指令参数:指令所需的参数,如操作数、偏移量等。
- 指令执行时间:该指令被执行的时间。
- 指令来源:该指令是从哪个寄存器、内存地址或外部设备读取的。
- 指令目标:该指令将结果存储在哪个寄存器或内存地址中。
- 指令执行结果:该指令执行后的结果,如计算结果、跳转目标等。
PTM,程序跟踪宏单元
PTM 是一个模块,它根据程序流程跟踪 (PFT) 体系结构执行实时指令流跟踪。跟踪工具使用 PTM 生成的信息重建全部或部分程序的执行情况。
PTM 是一种硬件或软件模块,它被设计为在程序执行时进行实时的指令跟踪。它记录的是程序执行时的**指令序列,**这使得开发人员可以了解程序执行的所有细节。
这个指令序列或者说“跟踪信息”,可以用于多种目的:
- 程序调试:通过查看 PTM 生成的指令序列,开发人员可以精确地了解程序在何时、何地以及如何执行每一条指令。这对于找出程序中的错误、异常或性能问题非常有帮助。
- 性能分析:PTM 提供的指令序列还可以用于性能分析。通过分析这些信息,开发人员可以了解程序的哪些部分消耗了最多的计算资源,从而找出潜在的性能瓶颈。
- 程序重建:跟踪工具可以使用 PTM 生成的信息来重建程序的执行情况。这允许开发人员在程序运行后,或在特定的程序状态(例如在发生错误时)下,重新查看程序的状态和行为。
- 系统级优化:PTM 提供的信息不仅可以用于优化程序本身,还可以用于优化整个系统。例如,通过分析 PTM 提供的信息,系统管理员可以了解程序的内存使用情况、CPU 利用率等,从而优化系统的资源配置。
白话一刻
PTM 就像是一个记录员,它在程序运行的时候,认真“听”了每一个指令并且把它记录下来。这些记录的信息就像是一本书,记录了程序是怎么一步步运行的。
那么,PTM 记录了哪些信息呢?
- 指令顺序:PTM 会记录程序执行每条指令的顺序。这就像是你看电影时,知道电影中每个镜头的先后顺序一样。
- 指令内容:PTM 还会记录每条指令的内容。这就像是你看电影时,知道每个镜头发生了什么一样。
那么,PTM 的记录信息有什么用呢?
- 找错误:如果程序运行结果不正确,PTM 的记录信息就像是“现场直播”的回放,帮助开发人员找到问题出在哪里。
- 优化性能:通过 PTM 的记录信息,开发人员可以找出程序中“走得慢”的部分,就像是跑步比赛中的“瓶颈”一样。针对这些部分进行优化,可以提高程序的总体性能。
- 程序回放:PTM 的记录信息还可以让开发人员重新查看程序的运行情况。就像是重新看一遍电影一样,帮助开发人员更好地理解程序的行为。
PTM的记录信息还有什么用途?
这些信息可以用于程序的可视化、调试和性能分析等方面。PTM的记录信息也可以用于程序的反向工程,例如在逆向分析中推断程序的结构和功能。
另外,PTM还可以用于软件测试和验证,通过重放程序的执行情况,可以验证程序的正确性和可靠性。总之,PTM的记录信息对于程序的开发、调试、优化、测试和验证等方面都有重要的应用价值。
PTM和ETM的关系
PTM和ETM都是嵌入式跟踪宏单元(ETM)架构规范中的一部分,它们之间的关系是互补的。ETM是一个通用的跟踪宏单元,它可以用于跟踪不同的信息,例如指令跟踪和数据跟踪。而PTM是ETM的一个特定实现,专门用于进行程序流程跟踪(PFT)。
PTM和ETM都提供了实时的跟踪信息,这些信息可以用于调试、性能分析和程序验证等。PTM主要记录的是程序的指令序列和相关的程序流程信息,例如分支指令、异常事件等。而ETM则可以记录更广泛的信息,例如指令地址、数据地址和数据值等。
在实际应用中,ETM和PTM通常会一起使用。例如,在调试程序时,可以使用ETM来跟踪程序的指令和数据流动情况,而使用PTM来跟踪程序的流程和执行路径。这样可以更全面地了解程序的执行情况,从而帮助开发人员进行调试和优化。
PTM和ETM在ETM架构规范中的关系是什么?
PTM和ETM在ETM架构规范中的关系是互补的。ETM是一个通用的跟踪宏单元,它可以用于跟踪不同的信息,例如指令跟踪和数据跟踪。而PTM是ETM的一个特定实现,专门用于进行程序流程跟踪(PFT)。
PTM基于PFT架构进行实时的指令流跟踪,它会copy一份正在执行的code,只在一些program execution point(叫做waypoint)进行trace。这些点是由PTM内部的一些特定机制决定的,例如当执行到某个特定的指令或者达到某个特定的数据条件时,PTM就会开始记录当前的指令和数据状态。
PTM会记录下这些waypoint之间的指令执行情况,从而帮助开发人员了解程序执行的具体流程和路径。同时,PTM还可以记录下程序执行过程中的一些关键事件,例如异常事件、分支指令等,这些信息对于调试和性能分析都非常重要。
它们就像是一对双胞胎,各自有不同的特点,但是又相互关联。
ETM是一个非常厉害的“记录员”,它可以在程序运行的时候记录下很多信息。而PTM就像是一个专注的“小弟弟”,它告诉ETM只记录哪些关于程序“行走”的信息。
PTM说:“我只关注程序怎么走的,其他的我都不关心。” 所以PTM记录的信息都是关于程序怎么从一个地方走到另一个地方,也就是程序执行时的指令序列。
ETM听从PTM的话,于是它只记录了程序执行时的指令和数据。但是它不只记录了指令序列,还记录了其他一些信息,比如指令是在哪个时间执行的,是在哪个内存地址执行的等等。
所以,PTM和ETM就像是一对合作默契的好搭档。PTM告诉ETM应该关注什么,然后ETM就专注地记录下这些信息。两者相互配合,可以提供更全面、更准确的程序执行情况记录。
这里的waypoint怎么生成?
PTM的waypoint是PTM内部通过一种特定机制来生成的。PTM会根据一些预设的条件或者规则来确定这些waypoint的位置。
一种常见的做法是使用预设的断点作为waypoint。开发人员可以在程序中预设一些断点,当程序执行到这些断点时,PTM就会开始记录当前的指令和数据状态。这些断点可以是固定的位置,也可以是根据某些条件动态生成的。例如,当程序执行到某个特定的指令或者达到某个特定的数据条件时,PTM可以将其作为waypoint并开始记录。
另一种常见的做法是使用动态的计数器作为waypoint。 PTM内部会维护一个计数器,当计数器达到某个预设的值时,PTM就会开始记录当前的指令和数据状态。这种方式的优点是可以根据需要动态地生成waypoint,而不需要在程序中预设断点。
无论采用哪种方式,PTM的waypoint都是根据预设的条件或者规则来生成的,可以灵活地根据需要进行设置。这些waypoint的位置对于PTM来说是非常重要的,因为它们决定了PTM记录哪些指令和数据状态,从而帮助开发人员了解程序执行的具体流程和路径。
ITM,测量跟踪宏单元
CoreSight ITM 块是一个软件应用程序驱动的跟踪源。支持的代码将生成软件测量跟踪 (SWIT)。此外,该块还提供粗略的时间戳功能。
ITM块是一个嵌入式跟踪宏单元(ETM)架构规范中的一部分,它是一个软件应用程序驱动的跟踪源。当应用程序执行时,ITM块可以监视和记录应用程序的执行过程,并生成软件测量跟踪(SWIT)。
SWIT是一种跟踪数据格式,它记录了应用程序执行时的指令序列和相关数据。这些数据可以用于调试、性能分析和故障排除等应用场景。通过分析SWIT数据,开发人员可以了解程序执行的具体流程、数据访问模式、函数调用关系等,从而更好地理解程序的行为和性能表现。
除了生成SWIT数据,ITM块还提供了一个粗略的时间戳功能。这个时间戳可以用于测量代码执行的时间,但需要注意的是,它可能不够精确。尽管如此,这个时间戳对于评估程序的执行效率、识别性能瓶颈和故障排查仍然非常有用。
通过使用ITM块,开发人员可以在实际硬件上执行应用程序,同时收集跟踪数据。这些数据可以通过串口或JTAG等方式传输到主机进行分析和处理。这样,开发人员可以在实际运行环境中监视和跟踪应用程序的执行,从而更好地理解程序的行为、性能瓶颈以及可能存在的错误。
总之,ITM块提供了一种高效的跟踪解决方案,可以帮助开发人员更好地理解程序的行为、性能表现和错误原因。它在嵌入式系统的开发过程中具有重要的作用,是调试、性能分析和故障排除等应用场景中不可或缺的工具之一。
该块的主要用途是:
- 支持 printf 风格调试
- 跟踪操作系统和应用程序事件
- 发出诊断系统信息
ITM和PTM、ETM有什么关系
ITM(Instrumentation Trace)块、PTM(Program Trace Macro)块和ETM(Embedded Trace Macro)块都是嵌入式跟踪宏单元(ETM)架构规范中的一部分,它们之间存在密切的关系。
ETM是一个通用的跟踪宏单元,它可以用于跟踪不同的信息,例如指令跟踪和数据跟踪。PTM是一个模块,它根据程序流程跟踪(PFT)体系结构执行实时指令流跟踪。PTM可以记录下程序执行时的指令序列和其他相关信息,帮助开发人员了解程序的执行流程和路径。
ITM块则是一个软件应用程序驱动的跟踪源,它支持通过特定的代码生成软件测量跟踪(SWIT)。ITM块还提供粗略的时间戳功能,可以用于测量代码执行的时间。
ITM块与PTM块和ETM块的关系是互补的。PTM块主要用于程序流程跟踪,而ITM块则提供了更细粒度的指令跟踪和时间戳功能。ETM块作为通用的跟踪宏单元,可以集成ITM块和PTM块的功能,并根据需要选择不同的跟踪模式。
在实际应用中,ETM、PTM和ITM通常会一起使用。ETM作为核心的跟踪宏单元,可以记录程序执行时的各种信息。PTM可以根据程序流程跟踪体系结构执行实时指令流跟踪,而ITM则可以提供更细粒度的指令跟踪和时间戳功能。这些宏单元相互配合,可以提供更全面和准确的程序执行情况跟踪。
HTM,AHB 跟踪宏单元
HTM 可显示无法使用 ETM 从内核跟踪推断的总线信息:
了解多层总线利用率。
软件调试。例如,内存区域访问和数据访问的可见性。
跟踪触发器或过滤器的总线事件检测,以及用于总线分析。
HTM 提供了有关 AHB 总线的地址和数据跟踪信息。
通过将 HTM 中的信息与调试器结合使用,可对基于 AHB 的嵌入式系统进行方便、精确的调试。
HTM 提供了广泛的资源以使事件识别功能生成触发事件。
HTM 通过 AMBA 跟踪总线 (ATB) 来生成输出的跟踪数据。
跟踪调试功能是非干预性的。可以使用 APB (AMBA v3) 接口来控制 HTM。
HTM用于什么场景?
HTM则主要用于虚拟化环境中。HTM块是用于显示虚拟机监视器(VMM)或操作系统内核的跟踪信息。
它提供了一种机制,使得VMM可以获取和显示与虚拟机相关的信息,例如虚拟机的指令序列、内存访问等。
HTM块可以用于监视和控制虚拟机的执行,帮助开发人员更好地理解虚拟机的行为和性能表现。因此,HTM在虚拟化技术中具有重要的作用,可以用于调试、优化和监控虚拟机的运行状态。
STM,系统跟踪宏单元
STM为所有软件开发人员提供了低成本的软件和硬件执行实时可见性,尤其是应用程序和内核开发人员,从而为整个供应链中支持 ARM 处理器的设备提供了功能丰富且优化的低能耗软件。
STM 是一种软件工具,它可以让开发人员以低成本的方式观察和分析他们的程序在硬件上的执行过程。这种工具对于应用程序和内核开发人员特别有用,因为它们可以帮助开发人员更好地了解程序的执行情况,从而更容易地找出和修复问题。
STM 的工作原理是通过记录程序执行时的指令序列和其他相关信息,例如寄存器状态和内存访问。这些信息可以通过串口或 JTAG 等方式传输到主机进行分析和处理。通过这些信息,开发人员可以了解程序执行的时间和顺序,从而优化程序的性能。
除了对开发过程中的问题解决和优化有重要作用外,STM 还对整个供应链中支持 ARM 处理器的设备提供了功能丰富且优化的低能耗软件。通过使用 STM,设备制造商可以获得一种可靠的、高效的工具来优化其设备的能耗,同时提高其功能和性能。这对于当前和未来的 ARM 处理器设备非常重要,因为这些设备通常需要在更小的空间内提供更高的性能,同时尽可能减少能耗。
总的来说,STM 就像一个“监视器”一样,帮助开发人员实时观察程序的执行情况,从而更容易地找出和解决问题。同时,它也为设备制造商提供了优化其设备性能的工具,使得整个供应链中的 ARM 处理器设备能够更好地满足用户的需求。
ECT,嵌入式交叉触发
CoreSight ECT 是一个控制和访问组件,支持 SoC 内的多个触发事件的交互和同步。
CoreSight ECT 是一个控制和访问组件,它支持 SoC(System on a Chip)内的多个触发事件的交互和同步。ECT(Error Checking and Correction)是一种用于检测和纠正内存错误的机制,它通常在计算机系统中用于确保数据的完整性和可靠性。
CoreSight 是 ARM 的一个嵌入式调试和跟踪平台,它提供了一套完整的工具链,用于开发和调试基于 ARM 处理器的系统。ECT 是 CoreSight 平台的一部分,它提供了一种高效的内存错误检测和纠正机制,以确保在系统运行时数据的完整性和可靠性。
ECT 通过在内存中插入校验和(checksum)来检测数据错误,并使用一个或多个 ECC(Error Checking and Correcting)寄存器来存储校验和。当系统读取或写入内存时,ECT 会自动计算校验和并将其与存储在 ECC 寄存器中的校验和进行比较。如果发现错误,ECT 会自动纠正单比特错误,并报告多比特错误。
除了支持内存错误的检测和纠正,ECT 还支持 SoC 内多个触发事件的交互和同步。这意味着 ECT 可以与其他的 CoreSight 组件和外部硬件设备进行通信,以实现更复杂的事件处理和系统控制。例如,ECT 可以与 CoreSight 的其他组件配合,实现系统级的错误检测和纠正,或者与其他硬件设备进行通信,以实现更高效的内存访问和控制。
CoreSight ECT 是一个功能强大的控制和访问组件,它支持 SoC 内的多个触发事件的交互和同步,并提供了一种高效的内存错误检测和纠正机制,以确保系统的完整性和可靠性。
CoreSight ECT 的工作原理是什么?
CoreSight ECT(Error Checking and Correction)是一种用于检测和纠正内存错误的机制,它主要在系统运行时工作。以下是其工作原理的简要说明:
- 校验和计算:当系统写入数据到内存时,ECT 会自动计算数据的校验和(checksum)。这个校验和是根据数据的每个字节计算出来的,并被存储在一个或多个 ECC(Error Checking and Correcting)寄存器中。
- 校验和检查:当系统从内存中读取数据时,ECT 会自动计算数据的校验和,并将它与存储在 ECC 寄存器中的校验和进行比较。如果两个校验和匹配,说明数据是正确的;否则,说明数据存在错误。
- 错误纠正:如果发现数据错误,ECT 会自动纠正单比特错误。它会使用 ECC 寄存器中的正确校验和来修正错误的数据,并通知系统继续运行。对于多比特错误,ECT 会报告错误但不进行纠正,因为多比特错误可能超出了其纠正能力。
- 触发事件交互和同步:除了支持内存错误的检测和纠正,ECT 还支持与其他 CoreSight 组件和外部硬件设备的交互和同步。这使得 ECT 可以与其他组件配合,实现更复杂的事件处理和系统控制。例如,ECT 可以与 CTI(CTI)组件配合,实现多个触发事件之间的相互发送与接收。
CoreSight ECT 的工作原理是利用校验和计算和检查来检测数据错误,并使用 ECC 寄存器来纠正单比特错误。同时,它还支持与其他组件的交互和同步,以实现更复杂的事件处理和系统控制。
ECT如何与外部硬件设备进行交互?
首先,ECT 可以与其他的 CoreSight 组件进行交互。CoreSight 是 ARM 的一个嵌入式调试和跟踪平台,提供了一套完整的工具链,用于开发和调试基于 ARM 处理器的系统。ECT 是 CoreSight 平台的一部分,因此它可以与其他 CoreSight 组件进行通信和交互。例如,ECT 可以与 CTI(Communication Trace Interface)组件配合,实现多个触发事件之间的相互发送与接收。
其次,ECT 也可以与外部硬件设备进行交互。这通常是通过与其他硬件设备进行通信实现的。例如,ECT 可以使用串行通信接口(如 UART 或 I2C)或并行通信接口(如 SPI 或 USB)与其他硬件设备进行通信。通过通信接口,ECT 可以接收来自其他硬件设备的数据,也可以向其他硬件设备发送数据。
在交互过程中,ECT 可以利用其错误检测和纠正能力,对接收到的数据进行校验和检查。如果发现数据错误,ECT 可以自动纠正单比特错误,或者将错误报告给系统或其他硬件设备,以采取相应的纠正措施。同时,ECT 也可以利用其触发事件交互和同步能力,与其他硬件设备配合实现更复杂的事件处理和系统控制。
ECT 与外部硬件设备的交互主要是通过与其他 CoreSight 组件和外部硬件设备配合实现的。它可以使用各种通信接口与其他设备进行通信和数据交换,并利用其错误检测和纠正能力保证数据的完整性和可靠性。
ETB,嵌入式跟踪缓存
CoreSight ETB 是一个跟踪接收器,它可使用可配置大小的 RAM 为跟踪数据提供芯片上存储。
CoreSight ETB(Embedded Trace Buffer)是一个跟踪接收器,它可以使用可配置大小的 RAM 为跟踪数据提供芯片上存储。它主要用于在嵌入式系统中进行调试和跟踪,以便开发人员在系统运行时观察和跟踪硬件事件和数据。
ETB 通常与 CoreSight 的其他组件一起使用,例如嵌入式跟踪宏单元(ETM)和通信跟踪接口(CTI),以提供全面的调试和跟踪解决方案。
ETB 的主要特点是它可以使用可配置大小的 RAM,这意味着开发人员可以根据他们的需求调整跟踪数据的存储大小。ETB 可以配置为存储固定数量的数据或根据需要动态扩展。这种可配置性使得 ETB 能够适应不同的应用场景和需求。
除了使用 RAM 存储跟踪数据外,**ETB 还支持多种跟踪数据格式,**例如跟踪事件、跟踪数据包和跟踪快照。这些格式可以灵活地选择和配置,以适应不同的跟踪需求和协议。
此外,ETB 还支持多个跟踪通道,这意味着它可以同时接收和处理来自不同源头的跟踪数据。这使得 ETB 非常适合用于复杂的系统架构中,其中同时发生多个硬件事件和数据交互。
总之,CoreSight ETB 是一个功能强大的跟踪接收器,它使用可配置大小的 RAM 为跟踪数据提供芯片上存储,并支持多种跟踪数据格式和多个跟踪通道。这些特点使得 ETB 成为嵌入式系统中调试和跟踪的理想选择。
CoreSight ETB有哪些应用场景?
- 调试硬件事件和数据:ETB 可以用于观察和跟踪硬件事件和数据,例如中断、异常、寄存器访问等。开发人员可以通过分析跟踪数据来调试硬件问题,并确保系统在特定条件下正确地执行。
- 系统性能分析:ETB 可以用于分析系统的性能特征,例如处理器使用率、内存访问模式、功耗等。通过跟踪系统的运行情况,开发人员可以识别性能瓶颈和优化机会,以提高系统的整体性能。
- 实时系统监控:ETB 可以用于实时监控系统的状态和行为。例如,开发人员可以设置触发条件,当系统满足特定条件时,自动保存跟踪数据并通知调试器进行进一步分析。这种应用可以帮助开发人员在系统运行时检测和识别异常行为。
- 系统错误诊断:当系统出现错误或故障时,ETB 可以用于保存错误发生时的跟踪数据。这些数据可以用于后续的分析和故障诊断,帮助开发人员定位错误的原因。
- 算法优化和验证:ETB 可以用于跟踪算法的运行过程,帮助开发人员在算法开发初期发现问题并进行优化。同时,ETB 也可以用于验证算法的正确性和性能,确保算法在实际应用中表现良好。
- 嵌入式系统开发:ETB 常用于嵌入式系统的开发过程中。在软件开发和硬件调试阶段,开发人员可以使用 ETB 来跟踪程序的执行过程、内存访问和硬件事件,以便快速定位问题并进行修复。