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

标签 c debugging arm real-time uart

我正在尝试将 Cortex R5 上的一些用户数据、字符系列输出到 PC。 问题是 uart 对于数据量来说太慢了,我正在寻找更快的东西。我希望可以使用 ITM,但遗憾的是它仅适用于 Cortex M 系列。这些数据包含有关流程的状态信息,我希望将其可视化以获得更好的洞察力。

Uart 的最高运行速度为 921600 波特,因此我正在寻找比这更快的东西。我正在寻找 2-5 Mbit。

我找到了 DCC(调试通信 channel )和 ETM 的信息,但我无法真正弄清楚它们的速度以及如何将它们与用户数据而不是跟踪数据一起使用。

我可以访问跟踪器和调试器(Green Hills SuperTrace 和 Realview ICE),因此要求这些是没有问题的。我只是不知道如何读取数据。也许我错过了显而易见的事情?

编辑:目前看来最简单的方法是绕过 CP2105,它将我的 uart 限制为 921600。我会将 SoC 的 RX/TX 引脚连接到 RPi,这应该能够获得更高的波特率。当然,我还需要一个逻辑电平转换器,因为 SoC 仅支持 2.5V (74LVC245)。如果这个设置有效,我会回答我的问题。感谢您的投入!

最佳答案

DCC 可能会很慢,而且使用起来可能会造成干扰。您只能使用 JTAG 来访问此内容。

ETM 应该能够跟踪此信息,并且您应该能够配置过滤以仅跟踪对特定内存地址的访问。自从我详细查看 ETMv3 数据跟踪以来已经很长时间了,所以我不确定您是否需要跟踪相关的指令。调试工具也往往更侧重于跟踪指令,数据是额外的装饰,而不是呈现原始数据流,因此处理数据可能并不简单。

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

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

关于c - 在 Cortex R5 上快速输出用户数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49030454/

相关文章:

sql-server - Node js - 导入 mssql 模块以用于 Angular 2 项目错误 : "Can' t resolve 'dns' "and " Can't resolve 'dgram' "

c++ - 一种简单编译的脚本语言

gcc - arm-eabi-none 对 LPC2148 的 memset 错误的 undefined reference

c - 多个 printf 不起作用错误 6

包含不同 header 时,C 实现是否可以隐式包含标准 header ?

c - 编写 GDB 脚本来收集数据

android - 如何在 Android 上使用混淆(使用 ProGuard)应用程序进行调试?

c - Tibco RV C 客户端停止接收消息

c - OpenGL 颜色在使用照明时不起作用

c - 存储在 EEPROM 中的数据结构的卷影副本