ZYNQ7020_LINUX_VDMA
一、目标
编写VDMA驱动 ,通过HDMI显示一幅图。
二、准备工作
1、生成图片数组
选取一张640*480大小的图片,保存为imag.jpeg,导入到Matlab中执行以下程序,生成vdma_img.h文件。
image = imread('image.jpeg');
img = zeros(1,921600);
for i=1:480
for j=1:640
img((i-1)*640*3 +(j-1)*3 + 1 ) = image(i,j,3);
img((i-1)*640*3 +(j-1)*3 + 2 ) = image(i,j,2);
img((i-1)*640*3 +(j-1)*3 + 3 ) = image(i,j,1);
end
end
fid=fopen('vdma_img.h','wt');
fprintf(fid,'const unsigned char Image_Shanks[921600] = {');
fprintf(fid,'%d,\n',img);
fprintf(fid,'};');
fclose(fid);
2、生成.bit文件
vivado工程可以在米联客的ov7725工程上修改:将摄像头相关的IP删除,保留VDMA、Video-out、HDMI。其中VDMA关闭写通道,读通道设置为Master。
3、修改设备树
在设备树文件中添加VDMA描述,重新生成设备树文件。
vdma@43000000 {
compatible = "chihong,vdma0";
chihong,num-frame = <0x03>;
reg = <0x43000000 0x100>;
interrupts = <0 29 4>;
};
三、裸机程序
1、VDMA初始化
因为只用到了读通道,所以只初始化读通道相关的寄存器。