如何在zynq视频通路中添加自己的图像处理操作?

2020-01-27 12:40发布

如题现在本人已经在ZYNQ上建立好了视频通路:通路的大概情况如下: 9D9032A076404EC5BC97CD14645D1E15.png 0377B78D883C46ABA130B2A35055BEB9.jpeg

  1. /************config hls ip********/
  2. voidConfigureHlsIP(XImgprocess_top *ImgProcess)
  3. {
  4.         ImgProcess->Control_bus_BaseAddress = XPAR_IMGPROCESS_TOP_0_S_AXI_CONTROL_BUS_BASEADDR;
  5.         ImgProcess->IsReady = XIL_COMPONENT_IS_READY;
  6.         XImgprocess_top_EnableAutoRestart(ImgProcess);
  7.         XImgprocess_top_SetRows(ImgProcess, 480);
  8.         XImgprocess_top_SetCols(ImgProcess,640);
  9.         XImgprocess_top_InterruptDisable(ImgProcess, 0xFFFFFFFF);
  10.         XImgprocess_top_InterruptGlobalDisable(ImgProcess);
  11.         XImgprocess_top_Start(ImgProcess);
  12. }
  13. int main()
  14. {
  15.     init_platform();
  16.         usleep(100000);
  17.     print("Hello World ");
  18.     ConfigureHlsIP(&ImgProcess);
  19. // MM2S
  20.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x00, 0x008B);                // enable run, circular_park, GenlockEn, GenlockSrc
  21.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x5C, 0x01000000);        // Start address of the 1st frame(3 frames in all)
  22.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x60, 0x02000000);        // Start address of the 2nd frame(3 frames in all)
  23.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x64, 0x03000000);        // Start address of the 3rd frame(3 frames in all)
  24.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x58, 0x0780);                // Stride number
  25.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x54, 0x0780);                // number of bytes per line(640 x 3)
  26.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x50, 0x01E0);                // number of lines per frame(480)
  27. //S2MM
  28.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0x30, 0x108B);                // enable run, circular_park
  29.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xAC, 0x01000000);        // Start address of the 1st frame(3 frames in all)
  30.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xB0, 0x02000000);        // Start address of the 2nd frame(3 frames in all)
  31.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xB4, 0x03000000);        // Start address of the 3rd frame(3 frames in all)
  32.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA8, 0x0780);                // Stride number
  33.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA4, 0x0780);                // number of bytes per line(640 x 3)
  34.         Xil_Out32(XPAR_AXI_VDMA_0_BASEADDR + 0xA0, 0x01E0);                // number of lines per frame(480)
  35. return0;
  36. }
复制代码但是现在有一个问题,这个通路是采集摄像头数据,然后hls_IP处理,之后dma存储图像和读出图像显示,现在我想在SDK中添加自己的一些简单的对图像数据的操作我该怎么做?这个通路是自动的吧,从采集图像到显示图像,我要是在sdk中直接操作内存地址中的图像数据会发生数据冲突,该怎么办,求给个思路

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。