您好!
我尝试在我的解决方案中使用 PRU0、PRU-ICSS0。
PRU0的 GPIO 可以正常工作、直到现在为止。
我尝试在 PRU0 PRU-ICSS0中使用 RPMsg、然后遇到一些问题。
我使用的 SDK 版本是 ti-processor-sdk-linux-rt-am437x-evm-02.00.02.11。
问题是当 PRU 执行以下代码时、它将崩溃。
int16_t PRU_virtqueue_get_ave_buf ( struct pru_virtqueue* vq、 void** buf、 uint32_t* len ) { int16_thead; struct vring _descdesc; struct vring _avid* avail; avail = vq->vring。avail; /*没有任何可用的*/ 如果(VQ->LAST_AVAK_IDx =AVA--> IDx)//It 在此损毁。 返回 PRU_virtqueue_no_BUF_available; // *获取 ARM 主机广播的下一个描述符编号, *递增我们看到的最后一个可用索引。 */ head = AVA-->环[VQ->LAST_AVAK_IDx++&(VQ->vring .num-1)]; desc = VQ->vring.desc[head]; *buf =(void *)(UINT32_t)desc.addr; *len = desc.len; 返回(头部); }
然后我检查了参考手册并找到了一些句子:
- PRU-ICSS0不能直接访问子系统外的存储器
- 若要访问外部主机映射的0x0000_0000–0x0007_FFFF 之间的地址、 可通过 PRU-ICSS CFG 寄存器空间的 PMAO 寄存器启用–0x0008_0000的地址偏移。 请注意 、所有到 PRU-ICSS0的外部访问都通过 PRU-ICSS1进行路由。
它似乎可以像 PRU_ICSS1一样轻松地将 PRU_ICSS0与 RPMsg 配合使用。 您能给我一些关于如何在 PRU_ICSS0中使用 RPMsg 的建议吗?
转发您的回复。
此致
Jerry-Shuo.Liu