本项目提供了一个基于Linux UIO框架的驱动程序,专门用于通过AXI总线接口与硬件模块通信。它简化了用户空间对底层硬件的操作和监控。
在处理UDMA背景下的自定义AXI4-Full/Lite IP控制时,我们通常使用UIO驱动程序。然而,当我们转向AXI4-Stream IP时,由于其独特的架构(如customStreamIP.jpg所示),不会生成UIO设备节点。取而代之的是出现了一个DMA控制器,并且现有的UIO驱动程序无法对此进行有效管理。
因此,我们需要对UIO驱动程序做出一些修改并在devicetree文件中做一些复杂的设置来适应这种情况。通过这些调整之后,我们能够使用修改后的UIO驱动程序控制自定义的AXI4-Stream IP设备。
在实际应用中,在设备树配置时需要明确指定哪些dmaengine兼容的DMA通道将创建用户空间可访问的设备文件:
```plaintext
udma0 {
compatible = generic-uio;
dmas = <&loopback_dma 0>,<&loopback_dma 1>;
dma-names = lo, hi;
};
```
这使得我们可以有效地在用户空间中通过UIO驱动程序来管理和控制AXI4-Stream IP设备的DMA通道。