如何在基于Zynq-7000的RedPitaya板的设备树中添加remoteproc节点

时间:2019-05-22 18:27:23

标签: linux-kernel linux-device-driver fpga xilinx zynq

我正在尝试在AMP模式下运行RedPitaya。

我在remoteproc驱动程序以及在设备树源中需要什么样的条目方面找不到太多信息。我找到了this文档,并将其添加到设备树中,但是使示例正常工作并没有那么幸运。另外,我在来自不同来源的remoteproc的设备树节点中发现了不同的变体,这非常令人困惑。

有人能指出我的方向吗?我可以阅读有关Arm-Cortex-A9的AMP功能的更多信息,并可以解释remoteproc的dts节点中的某些条目。

2 个答案:

答案 0 :(得分:1)

这是我的OP。我设法在ZedBoard上的PetaLinux中运行了一些AMP示例。 Libmetal and OpenAMP User Guide中描述了该过程。该文档中最重要的部分是上方链接版本的第32页,标题为“使用OpenAMP设置PetaLinux”。

分两个步骤,内核中的remoteproc支持和内核配置中留出空间供远程应用程序使用。第二步是将remoteproc的设备树节点添加到设备树源。

我制作了一个视频教程,说明了如何做到这一点,我认为它对此做得更好。这是链接:Tutorial 07 Asymmetric Multi-Processing on ZedBoard (OpenAMP, remoteproc, petalinux)

我仍在研究如何编译自己的应用程序以使其在AMP模式下运行,因为存在与内存相关的问题,但我尚未完全解决。找出答案后,我将更新答案。和平了。 瓦卡尔

答案 1 :(得分:0)

哪些来源?您在谈论内核资源吗?设备树节点条目将取决于内核版本及其实际驱动程序,如果驱动程序或内核remoteproc子系统发生更改,则设备树节点条目也会更改。

ZynqQ-7000是双核Cortex A9。根据对文档的粗略阅读,所涉及的remoteproc驱动程序假定一个内核运行Linux,而另一个内核则可以帮助执行其他实时任务。 here描述了mmio-sram。不知道设备树绑定文档讨论了什么特定的ZynqQ硬件设计。

要了解vring,您需要了解open-amp和Linux中使用的virtio和rpmsg。可以将vring视为环形缓冲区,其中一个缓冲区用于从主机发送到从设备,另一个缓冲区从从设备发送到主机。当主控制器或从属设备在vring中放置一些东西然后想要通知另一端时,每个vring都会引发一个中断。

对于基于Linux的系统,Linux始终是主机。对于Zynq,因为我们使用的是两个A9,这将是处理器间中断。对于像恩智浦(NXP)的iMX7或Vybrid这样的SoC,中断是通过一个单独的外围模块(如用于iMX7的消息单元)引发的。