系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、AXI DMA ip核
- 二、BD工程
- 三、PS linux工程
- 1.使用开源的xilinx_axidma-master工程验证驱动
- 2.按照其他的开源进行就行,没什么写的了
前言
PL与PS之间快速的接口,本文为LOOP回环测试
一、AXI DMA ip核
MM2S = memory mapped to stream(DMA到stream接口)
S2MM = stream to memory mapped(stream到DMA接口)
接口
1.AXIS_MM2S:axi_stream接口(DMA向外设写数据)
2.AXIS_S2MM:axi_stream接口(DMA从外设读数据)
3.AXI_MM2S:axi_full接口(从DDR读数据)
4.AXI_S2MM:axi_full接口(向DDR写数据)
二、BD工程
可以由上图看出stream接口为回环(只是中间过了个FIFO)
三、PS linux工程
1.使用开源的xilinx_axidma-master工程验证驱动
1.改config_template.mk文件名为config.mk
并改内容如下:
其中KBUILD_DIR为petalinux-config -c kernel编译后的内核文件目录(目录中文件如下截图所示)
注意:一定要安装arm-linux-gnueabihf-环境
2.按照其他的开源进行就行,没什么写的了
注意:如果要使用大于2路的dma
1.改设备树
/include/ "system-conf.dtsi"
/ {
};
&amba_pl {
axidma_chrdev: axidma_chrdev@0 {
compatible = "xlnx,axidma-chrdev";
dmas = <&axi_dma_0 0 &axi_dma_0 1 &axi_dma_1 0 &axi_dma_1 1 &axi_dma_2 0 &axi_dma_2 1 &axi_dma_3 0 &axi_dma_3 1 >;
dma-names = "tx_channel", "rx_channel", "tx_channel1", "rx_channel1", "tx_channel2", "rx_channel2", "tx_channel3", "rx_channel3";
};
};
&axi_dma_0 {
dma-channel@40400000 {
xlnx,device-id = <0x0>;
};
dma-channel@40400030 {
xlnx,device-id = <0x1>;
};
};
&axi_dma_1 {
dma-channel@40410000 {
xlnx,device-id = <0x2>;
};
dma-channel@40410030 {
xlnx,device-id = <0x3>;
};
};
&axi_dma_2 {
dma-channel@40420000 {
xlnx,device-id = <0x4>;
};
dma-channel@40420030 {
xlnx,device-id = <0x5>;
};
};
&axi_dma_3 {
dma-channel@40430000 {
xlnx,device-id = <0x6>;
};
dma-channel@40400030 {
xlnx,device-id = <0x7>;
};
};
2.改开开源文件的axidma_of.c里面的91行 ">2"改大