我正在尝试将Cortex R5上的一些用户数据,字符系列输出到PC。 问题是 uart 对于数据量来说太慢了,我正在寻找更快的东西。我希望可以使用ITM,但遗憾的是,它仅适用于Cortex M系列。数据包含有关流程的状态信息,我想将其可视化以获得更好的见解。
Uart 以最大 921600 波特的速度运行,因此我正在寻找比这更快的东西。我正在寻找 2-5 Mbit。
我找到了DCC(调试通信通道)和ETM的信息,但我无法真正弄清楚它们的速度以及如何将它们与用户数据一起使用而不是跟踪数据。
我可以使用跟踪器和调试器(Green Hills SuperTrace和Realview ICE),因此需要这些是没有问题的。我只是不知道如何读取数据。也许我错过了显而易见的事情?
编辑:目前看来最简单的方法是绕过CP2105,它将我的uart限制为921600。我将 SoC 的 RX/TX 引脚连接到 RPi,它应该能够获得更高的波特率。当然,我还需要一个逻辑电平转换器,因为SoC的容限电压仅为2.5V(74LVC245)。如果此设置有效,我将回答我的问题。感谢您的输入!
DCC 可能会很慢,而且使用起来可能会很麻烦。您只能使用 JTAG 来访问它。
ETM 应该能够跟踪此信息,并且您应该能够配置过滤以仅跟踪对特定内存地址的访问。自从我详细查看 ETMv3 数据跟踪以来已经有很长时间了,所以我不确定您是否需要跟踪相关的指令。调试工具也往往更侧重于跟踪指令,数据是一种额外的装饰,而不是呈现原始数据流,因此处理数据可能并不简单。
ETM 应为每个周期提供几位数据吞吐量,因此只要数据处于小突发状态,就应该有足够的带宽。显然,这取决于包,但可以实现少量的 Gbps(协议成本很高,具体取决于您尝试通过跟踪流推送的信息)。
在某些芯片中,ETM可以在多个处理器(相同类型)之间共享。如果是这种情况,ETCSCR[14:14] 将非零,然后您只能选择一个内核并跟踪它(直到 ETM 被禁用/重新编程)。