This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM2434:AM64x:使用通用接口 GPIO 时发出 PRU 时序问题

Guru**** 2439560 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1547919/am2434-am64x-timing-issues-pru-with-general-purpose-interface-gpio

器件型号:AM2434


工具/软件:

你好  

我目前正在 SD 模式下使用 PRU。 要使用 GPIO、我必须依赖通用接口 (GPIO)。 我的问题是、这些外部外设的时序不太精确、并且表现出一些异常行为。

测试程序非常简单并会生成 PWM 信号。 引脚多路复用由 R5F 程序按照相应 常见问题解答文章中所述的配置使用相同的设置进行处理。

    LDI     R1.w2, 0x60
    LDI     R1.w0, 0x1000   ;GPIO1 Baseaddress (0x601000)
    LDI     R2.w0, 0x18     ;GPIO_SET_DATA01 offset
    LDI     R3.w0, 0x1C     ;GPIO_CLR_DATA01 offset
    LDI     R4.w0, 0x01     ;bit 1 -> output 0

CHECK_PROCESSING_TIMING:
    SBBO    &R4, R1, R2, 4  ;set General-Purpose Interfaces connected Pin High
    SET     R30, R30, 1     ;set PRU connected Pin 1 High
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    SBBO    &R4, R1, R3, 4  ;set General-Purpose Interfaces connected Pin Low
    CLR     R30, R30, 1     ;set PRU connected Pin 1 Low
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    JMP     CHECK_PROCESSING_TIMING
    HALT

当时序正确时、如示例代码所示、来自通用接口的信号显示的延迟约为 27ns、加上一个具有可接受抖动的时钟周期 (3.3ns)。 但是、如果我从环路中仅删除一个操作、并且周期不再与 SoC 的某些内部时序对齐、我会观察到通用接口输出中存在明显抖动。 标准偏差为 2.24ns、延迟可以在 26.3 和 34.4ns 之间变化、加一个时钟周期 (3.3ns)。

 将 PRU 与通用接口配合使用时、是否有办法始终实现更好的时序性能?

此致

Niklas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Niklas、

    引脚访问:PRU GPI/PRU GPO 与“常规“GPIO

    我们在该器件上安装 PRU 内核的一个主要原因是 PRU GPI/PRU GPO 信号从 PRU 内核内部到处理器引脚(以及从引脚到处理器)具有完全确定性的延迟。 通常、如果您关心纳秒级精度、就应该使用这些信号。

    由于多种原因、PRU 子系统外部的访问不是完全确定性的。 我尚未专门对此进行基准测试、但如果对系统 GPIO 模块的访问存在纳秒级抖动、我就不会感到惊讶。 您还可能会发现、访问 GPIO0 的平均延迟与访问 GPIO1、其中一个 SPI 接口等的延迟略有不同

    您可以在此处找到更多信息:
    【常见问题解答】什么是 PRU 内核? 为什么 PRU GPIO 信号与常规 GPIO 不同?

    然后、还可以在此处找到一些有关读写延迟的更多信息:
    【常见问题解答】PRU:如何计算读取和写入延迟? 

    仅供参考、我将向您的代码块添加一些注释、以便将来的读者更容易解释

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    供参考:PRU Academy 和 OpenPRU 即将推出!  

    今年、我们正在开展 2 个项目:PRU Academy 和 OpenPRU。

    PRU Academy 将是处理器学院中的一个模块、适用于:
    AM243x || AM26x ||  AM62x ||  AM64x

    我的目标是提供有关如何开始 PRU 开发的综合性文档、涵盖硬件主题、RTOS 和 Linux 编程、固件开发等 如果您想了解我正在努力的范围、可以浏览我 也写过的 AM64x 多核学院。

    (顺便说一下,如果您要针对 AM64x 进行开发、多核 Academy 是一个非常好的资源。 人们通常从“远程核心上的应用程序开发“部分开始)

    如果您想在 PRU Academy 的初稿上线时获得通知、请直接向我发送一条消息、暂定在大约一个月内收到通知。  

    这种文档编写需要数年时间。 因此、我专注于撰写网页、 解决人们当前面临的挑战。 这意味着您在 e2e 上提出的问题对我们 编写的下一页有直接影响!

    此致、

    Nick

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您提供此信息。 这是很好的了解、我期待从该文档中学习。 缺少适合初学者的教程是一个显著的缺点、尤其是因为大多数现有教程都基于 AM335x、并且不能反映当前标准、尤其是在使用新的 IDE 时。