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.

[参考译文] CCS/AM4379:访问 ICSS0和 ICSS1上的相同存储器地址

Guru**** 2556360 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/624669/ccs-am4379-access-same-memory-addresses-on-icss0-and-icss1

器件型号:AM4379

工具/软件:Code Composer Studio

您好!

我想使用 ICSS0和 ICSS1访问相同的存储器地址。 用户应该使用地址0x0004_0000来读取/写入存储器地址0x0000_0000、正如 TRM 中第30.3.1.2章所述。 因此、我尝试处理该偏移、但我得到了一个奇怪的结果:

如图所示、如果您要保存4个以上的字节、系统似乎会覆盖较低的字节。

此致

Simon

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已通知软件团队。 他们的反馈将在此处发布。

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

    我已在我的设置中复制此问题。 似乎 SBBO 指令是将6个字节存储在单个存储器位置并绕回的指令。 我通过看到的是、这仅在使用0x40000偏移方法写入其他 PRUSS DRAM 时发生。 如果我对同一存储器使用完整的32位全局地址(0x54400000)、则所有6个字节都将写入不同的存储器位置(正确)。 此外、如果我写入本地 DRAM 存储器(而不是其他 PRUSS 存储器)、则字节也会正确存储。

    这似乎是执行地址转换时的芯片错误(在另一个 PRUSS 中从0x40000到0x00000)。 我已经通知芯片设计人员、他们是否知道这个问题、我将告诉您是否有权变措施。

    目前、您可以每4字节数据使用1条 SBB0指令(同时使用0x40000偏移量将数据放入另一个 PRUSS)、也可以使用您要写入的存储器的全局地址(本例中为0x54400000)。

    Jason Reeder

    P.S. 当我进入数据 RAM 存储器并插入正确的值(对于所有6个字节)时、我可以看到 LBCO 指令将6个字节移入 R4和 R5。 在本例中、LBCO 指令按预期工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Simon、

    然后再与 IP 设计人员进行一些来回测试。 这看起来仍然是使用 PRU 子系统之间的本地桥接器时字节突发操作的硅故障。 我确认、如果您尝试从地址0x00040000进行字节突发读取操作(在本例中为 LBBO 或 LBCO)、则您将从同一地址读取两次(与 SBBO 在使用地址0x00040000时存储到同一地址两次相同的方式相同)。

    知道这一点后、权变措施将与我在上面发布的相同、可以使用本地桥(0x00040000)并对每条指令写入/读取4个字节(每4字节读取~7个 PRU 周期) 或者、您也可以将32位全局地址用于存储器位置(0x54400000)、并在每条指令中读取/写入多个字节(对于4字节读取、使用较大的脉冲、则读取的 PRU 周期为~33个、从而缩短平均周期时间)。

    因此、如果您的突发读取大小小于16字节、那么使用本地桥和4个 LBBO 操作将更有意义。 但是、在超过16字节突发大小的某个点、使用全局32位地址切换到单个 LBBO 操作是有道理的。

    Jason Reeder

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我应该澄清的是、保持在一个 PRUSS 内的字节突发操作没有任何问题。 因此、在您的情况下、执行读取(LBCO)的 PRU 正在读取其本地 DRAM、因此不会出现任何问题。

    仅当一个 PRU 使用0x00040000地址偏移访问另一个 PRUSS 的 DRAM 时、才会出现此问题。

    因此、仅当您需要从其他 PRUSS DRAM 中读取时、才能对读取时间进行周期计数权衡。

    Jason Reeder
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢你的帮助。 因此、我必须专注于处理4个字节、直到错误得到修复。

    此致
    Simon