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.

[参考译文] 编译器/AM3358:PRU 程序直接写入 DDR 保留部分的映射

Guru**** 2535150 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/939020/compiler-am3358-mapping-for-pru-program-to-write-directly-into-a-reserved-part-of-ddr

器件型号:AM3358

工具/软件:TI C/C++编译器

您好!

我正在尝试创建一个程序、该程序直接从 PRU 直接输入寄存器(R30)写入 DDR 存储器。 最后200m 保留在臂侧、因此可以自由写入。

我们已经在 pasm 中提供了此功能的版本。 但是、我们希望使用 clpru 迁移到 c。  

我对此有以下问题:

  • 我是否需要在 AM335x_PRU.cmd 文件中定义所需的存储器部分?  
  • 我是否需要使用 mmap 或 c 代码中类似的内容来保留此存储器、或者我是否可以只定义指向所需地址的指针?
  • 是否还有其他必要的东西能够从 clpru 写入 DDR?

目前、我调整了 AM335x_PRU.cmd 文件中的以下行:  

DDR:org = 0x8000000 len = 0x20000000CREGISTER=31 

这样、我就可以写入整个 DDR、然后从 ARM 端读取和验证存储的数据。 但是、如果我写入较大的器件、CPU 会崩溃。

目前、我用于写入的起始地址为0x92c00000、有效范围为大约310MB、因此它应该位于为 Linux 内核保留的器件后面。

在初始测试中、我对前400个字节写入了一个计数器、该计数器工作正常。 但是、当我尝试写入更多数据时、它会崩溃、尽管其余的存储 器(从0x12C00000到 DDR 的末尾)也应该不适用于 PRU  

此致、
RENS

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

    问题得到解决。  

    我只保留了400m、这意味着我实际上覆盖了 Linux 用户空间。