器件型号: AM263P4
1.DRAM 0 和 1“共享“
在处理 PRU_0 和 PRU_1 时、我们对其与 DRAM0 和 DRAM1 的交互方式感到惊讶。 我们将为这两个内核编写 c 代码、并根据示例代码编写链接器文件。 经过大量实验后、发现 PRU_0 数据 RAM 地址 0x00000000 转到 DRAM0 地址 0x00000000、ICSS 相对地址 0x00000000。 但意外地、PRU_1 数据 RAM 地址 0x00000000 转到 DRAM1 地址 0x00000000、ICSS 相对地址 0x00002000。 两个链接器文件都对数据 RAM 使用 0x00000000 的起始 RAM 地址和 0x2000 的长度。 我们还注意到 PRU_0 通过引用大于 0x2000 的地址来访问 DRAM1。 我们还注意到 PRU_1 始终无法直接使用 DRAM0。 这是令人惊讶的、因为技术参考手册将 DRAM0 和 DRAM1 描述为共享。
2.在 ICSS 外进行 DRAM2 访问
我们能够确定 PRU 的两个内核可以按预期利用 DRAM2、并且该区域中的 PRU_0 和 PRU_1 之间交换数据。 但是、我们无法按预期使用 R5 内核 0_0 将值读取或写入 0x48010000。 真正有趣的是、如果 R5 内核 0_0 写入 0x48010000、它可以正确读回该值、但是两个 PRU 内核都无法从 0x00010000 检索该值。 在这些情况下、我们真的对 R5 内核 0_0 实际写入的内容感到困惑。 我们还验证了 MPU 设置是否正确、以允许对该区域进行读取/写入操作。
PRU 堆栈值的 CCS 显示
这不奏效。 在 CCS 中进行调试时、我们的局部变量都找不到正确的存储器地址。 我们能够通过浏览汇编代码来跟踪可变存储器位置、从而确定是否在 RAM 中正确地处理了这些代码。
4. CCS 在内存查看器中显示 DRAM2
当在调试会话期间选择任一 Device_Memory 内核、并且存储器窗口设置为 PRU_PRU 时、0x00010000 (DRAM2) 处的所有值均显示为 0。 我们编写了测试代码来直接读取/写入该区域中的值、并验证数据流是否符合预期、它只是不会显示在存储器查看器中。
5、技术参考手册错误
在 SPRUJ55D(最新的 AM263P 技术参考手册)的第 2.3 节中、该文档按照预期将 PRU-ICSS 数据 RAM2 列为从 0x00010000 开始、到 0x0001FFFF 结束。 但它列出了此大小为 64KB、但没有。 我们认为这应该是 32KB、以便与说明 DRAM2 大小的文件中列出的位置和其他区域保持一致。
请澄清我们通过开发测试观察到的内容是 TI 期望的内容、但尚未在技术参考手册中明确记录。





