UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

取消
显示结果 
搜索替代 
您的意思是: 
Participant softwd
Participant
150 次查看
注册日期: ‎09-19-2018

DMA Baremetal通过Xen Hypervisor使用的问题

最近通过 Xilinx Xen Hypervisor 的 Wiki,成功的将我的Baremetal程序在DomU 运行,并且通过 Xen-passthrough 让DomU的程序调用gpio以及axi_timer。

随后我在Vivado中添加了axi_dma,并在XSDK中测试了添加的axi_dma,没有发现什么异常。

测试完成后,将同样的硬件导入Linux中,想通过Xen-passthrough的方式跑axi_dma。结果发现让人头疼的问题:axi_dma_0占用了两个interrupt,并且这两个interrupt并不会因为我在 device-tree里添加 如下语句而从Linux里释放:

axi_dma_0 {
          xen,passthrough = <0x1>;
};

以上的代码帮助我成功的将gpio以及axi_timer的interrupt释放给了 domU Baremetal。请问各位大神:

1. 通过domU跑axi_dma_0是可以做到的吗?

2. 如果可以,除了在device-tree里添加 passthrough以外,还有什么其他步骤?

谢谢您的帮助。

0 项奖励
1 条回复
Participant softwd
Participant
87 次查看
注册日期: ‎09-19-2018

回复: DMA Baremetal通过Xen Hypervisor使用的问题

终于研究出来,axi_dma_0 的 interrupt可以通过添加DMA的每个Channel到device-tree并且passthrough每个channel来做到。

不过,axi_dma_0 仍然没有办法通过 “xaxidma_example_sg_poll.c” 来检验,会卡进一个死循环里。

是否因为我对dma的理解有误?是否dma作为一个driver没有办法那直接passthrough 在DomU里运行?

希望对Xen有知识的朋友能赐教。

 

0 项奖励