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.

[参考译文] AM263P4:从内核 R5F 访问 PRU 存储器

Guru**** 2693225 points

Other Parts Discussed in Thread: AM263P4, OMAP-L137

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1597877/am263p4-accessing-the-pru-memory-from-a-core-r5f

器件型号: AM263P4
主题中讨论的其他器件: OMAP-L137

尊敬的 TI 支持服务:您好!

在 AM263P4 芯片(遗憾的是我仍在等待 LaunchPad 套件)中、我当前正在尝试从内核 R5F 0 访问 PRU 存储器 PRU0_DMEM_0、以从 R5F 和 PRU 内核实现自定义队列。

ATM、我在地址 0x48000000 定义了一个自定义存储器区域(该地址值由 ChatGPT 提供...) 在.syscfg 文件中、使 linker.cmd 文件现在包含以下部分:

  •   (空载): {
      PRU_SYNC:{
      }对齐 (8)
      }> 0x48000000  

和以下自定义区域:

  • custom_X :origin = 0x48000000、length = 0x3C000

我想知道:

  • AM263P4 芯片中的 PRU 主机地址是什么
  • PRU 存储器 PRU0_DMEM_0 主机地址是什么
  • 如果存在一个示例工程、可以从 R5F 内核访问 PRU 存储器、因此我可以从中获取一些提示
  • 如果存在有关 PRU 主机地址的文档
  • 如果最好在 R5F 存储器空间中定位队列、则说明 R5F 地址是已知的
  • 还可以建议采用其他机制在 R5F 和 PRU 内核之间实现共享队列

 

此致

Michele

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

    您好、Michele:

    感谢您联系我们、并对延迟的回复表示歉意。 我很乐意在这里为您提供帮助。

    我需要一点时间来整理所有信息、但在此提供了一些快速参考。

    似乎 ChatGPT 正确地指向了您、尽管命名规则略有不同。

    AM263Px RA 中将 PRU“DMEM"描述“描述为 ICSSM_DRAMx_SLV_RAM。

    所有相关的 PRU_ICCS 寄存器物理地址均可在寄存器附录 (ti.com/lit/ug/spruj57b/spruj57b.pdf) 的相关 ICSSM 一章中找到

    我们在此处提供了有关 R5F 的 PRU-ICSS 驱动程序 API 的文档: AM263Px MCU+ SDK:编程

    可在以下位置找到 PCUICSS API 和硬件#defines :AM263Px MCU+ SDK:适用于 PRUICSS 的 API

    还有一些 PRU-software-support-package 入门 «实验室- Getting_Started_Labs 软件支持包/PRU-software-support-package - PRU 软件支持包

    根据您到目前为止分享的说明、我建议在全局/共享 SRAM 空间中实现队列、以获得来自 R5F 内核和 PRU 内核的出色访问速度/仲裁。  如果使用 ICSS DRAM、R5F 可能会存在并行访问延迟、但它仍然是一种选择。

    在这种情况下、队列数据结构以及 R5F 和 PRU 的预期访问/函数的预期用途是什么?

    此致、

    Zackary Fleenor

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

    您好、Zackary!

    非常感谢您的答复!

    我正在 PRU0 中实现扫描仪头 xy2_100 接口、当 PRU 处理位拆裂时、R5F 内核会生成 XY 16 位数据、每毫秒生成 100 对 x/y

    因此需要队列来保持 PRU 馈送。

    我当时考虑使用 PRU RAM、因为 PRU 端确实需要实时性、而 R5F 可以容忍更大的抖动。

    R5F 仅通过访问队列将数据写入队列、而 PRU 仅使用数据。

    访问队列的信息是几个 uint32_t 值、一个用于读取操作、一个用于写入操作、其中包含压缩结构:完成的操作数和索引(都是 16 位变量);我认为(希望)当以 uint32_t 形式读取/写入时、访问整个结构的原子结构

    这些值放入 4 字节对齐的 uint32_t 变量中、这些变量作为整体访问、存储器屏障放置在写入索引更新之前和读取索引更新之后。

    我已经在 OMAP-L137 的 PRU 中使用了一种类似的方法、这种方法效果很好。

    问题:

    • 如何从 R5F 对 PRU 存储器队列进行双面访问
      • 我想知道您是否可以估算 R5F 内核访问中的延迟/抖动
      • 如果我们讨论 R5F 侧的几个周期、我认为如果 PRU 侧确实有优势、可以容忍这种情况

    再次感谢您的帮助

    Michele

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ]我想知道您是否可以估算 R5F 内核访问中的延迟/抖动

    Michele、PRU 存储器类似于 R5F 的外设存储器(严格排序)、 从 R5f 到 PRU DMEM 的 32 位访问为 155ns