Other Parts Discussed in Thread: SYSCONFIG
器件型号: TMDS64EVM
主题: SysConfig 中讨论的其他器件
我正在开发在 ICSSG1 PRU0 上运行的固件。 为了测试 PRU 和 R5F Arm 内核之间的共享 RAM 接口、我在 PRU 代码中有一个简单的循环、该循环将有序递增的帧计数写入共享 RAM 存储器位置 (PRU 地址 0x1_000c、R5F 地址 0x3009_000c)。
当连接到 PRU 并使用 PRU 进行调试时、代码按预期运行、我可以看到正在写入 0x1_000c 并在其中更新的帧值没有问题。
当我连接到 R5F 并使用 SDK 库例程加载 PRU 代码时、我在 0x3009_000c 的共享存储器中看不到任何更新、即使它看起来就像 PRU 正在运行一样。
从 R5F 中运行的 PRU 初始化代码借用了一个 SDK 示例工程:
执行该代码的终端输出与我期望看到的值相匹配:
[MAIN_Cortex_R5_0_0] PRUICSS_OPEN!
PRUICSS_initMemory DRAM = 8192!
PRUICSS_initMemory 共享 RAM = 65536!
PRUICSS_disableCore = 0!
PRUICSS_writeMemory = 742!
PRUICSS_resetCore = 0!
通过观察 ICSSG1 PRU0 IRAM 区域 (0x300B_4000)、加载到该位置的数据与编译后处理步骤生成的 PRU 十六进制数组中的数据相匹配。
通过查看 ICSSG_PRU_CONTROL 寄存器 (0x300A_2000)、PRU 似乎已启动并正常运行。 加载固件并启用 PRU 内核后的寄存器值为 0x00008003 (RUNSTATE = 1、ENABLE = 1、SOFT_RST_N = 1)。
ICSSG_PRU_STATUS 寄存器 (0x300A_2004) 正在更新(注意:这可能不是问题,但寄存器值不是在调试连接到 PRU 时根据 PC 值预期的 PC 值 — 在连接到 PRU 时循环处于 0x7E0 范围内、但在通过连接到 R5F 的 ICSSG_PRU_CONTROL 观察 PC 计数器值时、PC 值正在迭代 0x160 范围内)。
我正在以简单的 R5F 示例工程为基础、除了以下几点外、几乎没有更改其设置:
1) 在工程 SysConfig 中、我添加了一个 MMU 条目以确保可以读取/写入 PRU 共享存储器:

在 SysConfig 存储器配置器下、我还为共享 RAM 区域添加了存储器区域定义、指示它与 ICSSG1 PRU 内核共享:

2) 我的所有 R5F 可执行代码都加载到 DDR 中并在 DDR 中运行。 不确定这是否会影响 R5F 与 PRU 共享 RAM 交互的能力。
有任何调试方法或者我可能出了什么问题?

