19.1概述在上一节课中我们学习了Frambuffer驱动使用及1024*600分辨率修改,详细了解了修改分辨率的过程,从加载驱动,修改设备树,编译uboot、kernel、烧录验证工程的整个过程。 从本节起我们将学习摄像头方面的具体实例,首先来学习9V034在LINUX下的视频采集课程。在之前,我们学习过裸机的摄像头采集工程,也了解数据流的具体过程,就本例而言,首先是输入,采集的数据通过摄像头采集模块进入vid_in模块,再转换成stream流,进入我们的axi_vdma1,最后进入到DDR3。其次是输出,数据从DDR3到axi_vdma0,再进入axi_2video,最后通过HDMI输出IP将图像传输至我们的液晶屏。 19.2 摄像头9V034的视频采集1>首先把路径app_driver/drv_code/CH07_VDMA/的system-top.dts替换掉mnt/workspace/borads/debian/d下的system-top.dts,再把同样路径下fpga工程替换掉。 2>再把路径的/mnt/workspace/driver_app/drv_code/CH08_9V034_qt/cfg_kernel/的xilinx_mz7x_defconfig文件内容替换 掉/mnt/workspace/osrc-lab/sources/kernel/arch/arm/configs/下的xilinx_mz7x_defconfig。 3> 打开我们的工程,需要注意的是9V034摄像头是一个灰度摄像头,Video Format需要选择Mono/Sensor,,摄像头采集IP是8bit的数据,分辨率752*480。 4> VDMA1是输入部分只打开写通道。 5> VDMA0是输出部分只打开读通道。 6>打开mnt/workspace/driver_app/app_code/CH07_VDMA,我们本节课用到的工程是axivdma_test2,打开文件我们可以分析内容,首先是打开设备,CAMERA_DEVICE对应的是VDMA1,DISPLAY_DEVICE对应的是VDMA0,然后是抓拍两幅图片,保存成bmp格式,两幅图片bmp0和bmp1对应了两个设备,依次是CAPTURE_FILE0和CAPTURE_FILE1,然后是测试帧率,最后把图片实时动态的显示出来。 7>首先运行settings64.sh。 8> 进入xilinx路径,执行get_hw_description.sh,更新FPGA的硬件。 9>因为uboot内核的配置文件没有做修改,我们可以直接执行make_uboot.sh,编译uboot。如果做了修改,需要先执行cfg_uboot.sh。 10>因为我们修改了内核文件下的xilinx_mz7x_defconfig,所以需要执行cfg_kernel.sh,进行配置内核文件。 11>执行make_kernel.sh,编译内核。 12>执行create_image.sh脚本。 13>将生成的uboot文件替换SD卡的Boot文件,rootfs系统文件可以不变。 14>修改SD卡的Boot里的uEnv.txt,是摄像头分配的内存,没设置就会报错,也会导致无法挂载驱动。 15>在/home/osrc下新建文件夹CH07_VDMA。 16>把mnt/workspace/driver_app/app_code/CH07_VDMA的axivdma_test2复制到/home/osrc/CH07_VDMA,把mnt/workspace/driver_app/drv_code/CH07_VDMA的axi_vdma.ko复制到/home/osrc/CH07_VDMA。新手需要注意的是生成ko文件需要先执行settings64.sh,再执行make命令,确保是同一命令窗口下。弹出SD卡,准备测试。 19>开发板插入SD卡,开机启动,打开串口,输入osrc,密码root,再输入sudo,密码root,进入root模式。 20>使用insmod加载驱动。 21>gcc -o指令编译程序,制定输出文件名vdma_test。 22>使用./执行编译后产生的文件。 23>查看串口控制台抓拍成功两幅图片,测试后也会帧率测试结果。 24>摄像头调至正常焦距,查看液晶显示。 25>断电开发板,拔掉TF卡插入查看两幅抓拍图片。 |
扫描关注,了解最新资讯