21.1概述
在上一节课中我们学习了9V034的QT视频采集课程。学习了如何配置设备树、添加驱动、配置9V034的摄像头、配置输出的分辨率等。本节课我们将学习OV5640在QT环境下的使用。
21.1 OV5640的QT采集
1>首先把路径/mnt/workspace/driver_app/drv_code/CH09_5640_qt/drv/的system-top.dts替换掉/mnt/workspace/osrc-lab/boards/MZ7X/debian/drv下的system-top.dts,再把fpga工程替换掉。
2>打开FPGA工程,我们可以看到数据流的格式是RGB,而9v034的数据格式是Mono/Sensor。
注意这两个IP核的连线也是明显不同的,数据流9v034是8bit,这里是24bit。
对比上一节课的驱动部分,9v034只有一个像素,而5640是三个,所以标注部分都要乘以3。
5>注意compatible的内容在驱动中是一致的。
6>再把路径的/mnt/workspace/driver_app/drv_code/CH09_5640_qt/cfg_kernel/的xilinx_mz7x_defconfig文件内容替换
掉/mnt/workspace/osrc-lab/sources/kernel/arch/arm/configs/下的xilinx_mz7x_defconfig,增加对OV5640寄存器的配置。
7>使用动态加载方式,进入文件夹删除上节课产生的不必要的文件。
8> 修改Kconfig,动态加载删除不需要的内容。
9>修改Makefile,动态加载方式删除不需要的内容。
10>首先运行source settings64.sh。
11>进入路径执行make clean,清除编译生成的文件。
12>打开makefile,这里的路径一定要正确。
13>执行make,编译驱动。
14> 进入xilinx路径,执行get_hw_description.sh,更新FPGA的硬件。
15>因为uboot内核的配置文件没有做修改,我们可以直接执行make_uboot.sh,编译uboot。如果做了修改,需要先执行cfg_uboot.sh。
16>因为我们修改了内核文件下的xilinx_mz7x_defconfig,所以需要执行cfg_kernel.sh,进行配置内核文件。
17>执行make_kernel.sh,编译内核。
18>执行create_image.sh脚本。
19>SD卡接入电脑,把生成的boot文件内的内容拷贝到SD卡的boot内。
20>接下来我们需要编译qt程序,首先进入如下路径,重新打开一个控制台执行settings64.sh脚本。
21>进入如下路径。
22>QT打开本节课工程文件,可以看到检测到按键按下会定义一个定时器,用途是定时刷新图像(也可以开启一个线程进行刷新图像的操作),再对相关内容做初始化,再对5640初始化,对5640的初始化是通过sccb模拟IIC对摄像头寄存器进行配置,再对VDMA进行初始化。
23>执行make clean命令。
24>再执行编译命令,等待应用程序编译完成。
25>拷贝编译好的qt程序到/mnt/workspace/driver_app/app_code/CH09_5640_qt/sdcard/5640_qt/。
26>修改run_arm_app.sh,主要是添加挂载三个驱动和执行5640的qt程序。
27>复制sdcard内5640 qt工程的内容到/home/osrc路径下,复制完成退出TF卡。
28>准备好开发板,插入TF卡,接入5640摄像头、鼠标等,打开串口控制台,上电启动开发板,进入系统后输入osrc,密码root进入用户,再输入sudo su,密码root进入管理员模式。
29>进入5640_qt路径执行应用程序。
30>观察串口控制台显示。
31>观察液晶屏显示。
32>鼠标点击open,摄像头状态正常。