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.
工具与软件:
您好!
我将使用 PRU 来访问 AM3358上的某些主 DDR 存储器。 操作系统将无法通过叠加使用存储器块、因此 PRU 会对存储器块进行写入(采用乒乓缓冲器形式)。 在接收到 rpmesg 后、主应用程序(在 ARM 内核上)会读取此存储器、通知其写入了哪个区域(乒乓或乒乓)。
我遇到的问题是显著的存储器访问延迟(无论写入多少、大约1 - 2us)、这会导致 PRU (ADC)采样环路中出现一些抖动。 当写入 PRU 本地共享存储器时、不会出现此问题。
我的问题是:
1) 1)这是预期行为吗?
2) 2)这是否可以缓解这些访问时间的差异?
3) 3) ARM 内核可以访问 PRU 共享存储器吗?
4)对替代方法有什么建议?
对 DDR 进行采样:
采样到 PRU 存储器
谢谢!
Tom
2024年6月18日编辑
您好、Tom、
我遇到的问题是显著的存储器访问延迟(无论写入多少、大约1us - 2us)
1) 1)这个1-2us 对于 PRU 内核是否用于写入存储器? 或1-2 μ s、以便 ARM 内核访问存储器?
对于我来说、这个结果对于用 PRU 内核写入存储器而言没有意义。 请参阅 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1096933/faq-pru-how-do-i-calculate-read-and-write-latencies 中的"使用 SBBO 计算写入延迟"一节
如果是单个缓冲区、则 ARM 内核访问存储器的时间较长、并且 PRU 只是等待 ARM 完成读取后再继续写入、那么我建议使用乒乓缓冲方法。 这样、PRU 可以在 ARM 从第一个存储器缓冲区进行读取的同时继续写入第二个存储器缓冲区。
2) 2)您正在 ARM 内核上运行哪些操作系统? 如果您运行的是 Linux、PRU 是与 Linux userspace (Linux 内核空间)进行通信还是与 Linux 内核空间进行通信?
A8 A53内核还应能够访问 PRU 的内部存储器。 具体细节将取决于 A8 A53内核上运行的软件。
此致、
Nick
您好、Nick。
感谢您的答复。 需要澄清的几件事:
1) 1)该延迟用于写入、是的、我正在使用乒乓缓冲器。 PRU 通过 RPmsg 通知 Linux 用户空间应用它应该从哪个缓冲器中读取数据。 我将通读 SBBO 延迟备注-谢谢。
2) Linux 用户空间
3) 3)我正在使用 AM3358 (A8内核、而不是 A53)
此致、
Tom
您好、Tom、
问题
当每次写入需要1-2us 时、PRU 写入有多大的内存?
设计思想
如果您的代码编写在单个 PRU 内核上、如下所示:
sample ADC sample ADC ... sample ADC write ADC data to DDR sample ADC sample ADC ...
然后、可以通过执行 以下操作来帮助解决延迟问题:
1) 1)在2个 PRU 内核之间划分代码。 我们经常看到客户 使用一个 PRU 内核控制引脚(即 ADC 采样)、并使用另一个 PRU 内核在 PRU 子系统和其他处理器内核之间移动数据。
2) 2)一次向 DDR 写入更少的数据
3)让 Linux 直接从 PRU 本地存储器中读取、如上所述
访问 PRU 本地存储器时的 Linux 用户空间注意事项
如果您决定选择此路由、我们需要考虑安全注意事项。 一般而言、Linux 用户空间不能直接访问设备内存、通常必须通过 Linux 驱动程序。
如果你有一个无头系统,没有办法(或理由)恶意分子侵入计算机,一些客户只是给用户空间提升权限在他们的最终设计. 这样客户就可以通过/dev/mem.直接访问 PRU 存储器
如果不想为 Linux 用户空间授予 sudo 权限、另一个选项是编写自定义字符驱动程序、向用户空间公开特定的内存区域。
这里提供了一些示例、帮助您进行思考
https://e2e.ti.com/support/processors/f/791/t/689315
或参阅 TIDA-01555文档和代码:
http://www.ti.com/tool/TIDA-01555
在您的 AM335x SDK 中、位于 examples/applications/pru-adc-x.x/(访问 dev/mem 需要 sudo 权限)
此致、
Nick
您好、Nick。
PRU 不会写入太多数据–每2.5us 写入8字节。 写入本地 PRU 存储器时、延迟很小(几十 ns)
非常感谢您提出后续建议。 我首先会尝试建议(3)、因为这是对当前用户空间应用程序和 PRU 代码的相当简单的更改。 它也是一个无头应用程序、因此可以接受对/dev/mem 的提升权限访问。
现在、我要将此标记为已解决。
再次感谢您的建议和建议。
此致、
Tom
听起来不错! 如果有其他问题出现、可以在此处找到、如果您有其他问题、也可以在其他主题上找到。
此致、
Nick