在Cortex R5上快速输出用户数据

在Cortex R5上快速输出用户数据,c,debugging,arm,real-time,uart,C,Debugging,Arm,Real Time,Uart,我试图在Cortex R5上向PC输出一些用户数据,字符序列。 问题是uart对于数据量来说太慢了,我正在寻找更快的东西。我希望ITM能被使用,但遗憾的是,它只适用于Cortex M系列。这些数据包含有关流程的状态信息,我希望对这些信息进行可视化,以便更好地了解 Uart以921600波特的最大值运行,因此我正在寻找比这更快的东西。我正在寻找2-5Mbit 我找到了DCC(调试通信通道)和ETM的信息,但我无法真正了解它们的速度,以及如何将它们用于用户数据而不是跟踪数据 我有追踪器和调试器(Gr

我试图在Cortex R5上向PC输出一些用户数据,字符序列。 问题是uart对于数据量来说太慢了,我正在寻找更快的东西。我希望ITM能被使用,但遗憾的是,它只适用于Cortex M系列。这些数据包含有关流程的状态信息,我希望对这些信息进行可视化,以便更好地了解

Uart以921600波特的最大值运行,因此我正在寻找比这更快的东西。我正在寻找2-5Mbit

我找到了DCC(调试通信通道)和ETM的信息,但我无法真正了解它们的速度,以及如何将它们用于用户数据而不是跟踪数据

我有追踪器和调试器(Green Hills SuperTrace和Realview ICE),所以需要它们是没有问题的。我就是不知道如何读取数据。也许我错过了显而易见的机会


编辑:现在看来最简单的方法是绕过CP2105,它将我的uart限制在921600。我将把SoC的RX/TX引脚连接到RPi,RPi应该能够获得更高的波特率。当然,我还需要一个逻辑电平移位器,因为SoC只有2.5V的容差(74LVC245)。如果这个设置有效,我将回答我的问题。谢谢你的意见

DCC可能会很慢,而且使用起来可能会很麻烦。您只能使用JTAG访问此文件

ETM应该能够跟踪此信息,并且您应该能够配置筛选以仅跟踪对特定内存地址的访问。自从我详细研究ETMv3数据跟踪以来,已经有很长时间了,所以我不确定是否需要跟踪相关的指令。调试工具也更倾向于跟踪指令,数据是一种额外的装饰,而不是呈现原始数据流,因此处理数据可能不是一件小事

ETM应在每个周期提供数比特的数据吞吐量,因此只要数据处于小突发状态,就应有足够的带宽。显然,这取决于包,但可以实现少量的Gbps(协议成本很大,具体取决于您试图通过跟踪流推送的信息)


在某些芯片中,ETM可以在多个处理器(相同类型)之间共享。如果是这种情况,ETCSCR[14:14]将为非零,然后您只能选择一个核心并跟踪该核心(直到ETM被禁用/重新编程)。

澄清您所说的“太慢”和“数据量”是什么意思。RS-232将是最简单的接口,因此在放弃它之前,请确保它不会满足要求。遗憾的是,板上的uart控制器不允许任何超过921600波特的速度。我还需要与其他调试数据共享uart,因此我使用的数据量远低于921K波特。为了让ETM跟踪工作,出于某种原因,它只显示了4个内核中的3个。正在进行中,感谢您的输入。内核之间可能共享一个etm。Numproc应在etm中提供此信息。