硬件平台 :
主控板:瑞泰OMAP3530 Mini 开发板(基于EVM板)
摄像头模组:舜宇做的一个 OV5640的摄像头模组
软件:
底层驱动:在网上找的一个基于OV5642的驱动代码
板级文件:beagle板附带的摄像头驱动代码:board-omapbealge-camera.c
应用层软件:在网上找的一个经典的V4L2程序代码 ,做了适当的修改(网址:www.linuxidc.com/.../33020.htm )
第一个问题:
我们对板级文件、底层驱动代码进行修改之后,内核编译通过。使用V4L2控制摄像头模组抓取YUV 4:2:2 的图像数据,然后再将其转化为RGB格式的数据。正常情况下 图像数据的排列应该是 Y0 U0 Y1 V0 Y2 U2 Y3 V3 ,但是我们实际得到的数据 的排列是: 0 Y0 0 U0 0 Y1 0 V0 0 Y2 0 U2 0 Y3 0 V2 。我们在将 0 删除后,按照标准的YUV -> RGB格式转化的可以得到色彩效果不错的图片。 我们经过分析底层驱动和板级文件后觉得驱动文件没有问题,掉数据的问题应该是由于ISP模块相关配置引起的。
请问 这种问题该从哪个地方查找?
附,ISP模块相关寄存器的设置:
640*480
isp_s_pipeline,pipe.modules =(1)
ispccdc_request
ISPCCDC: Module in use =1
ISPCCDC: ###CCDC PCR=0x0
ISPCCDC: ISP_CTRL =0x298100
ISPCCDC: ccdc input format is CCDC_YUV_SYNC
ISPCCDC: ccdc output format is CCDC_OTHERS_MEM
ISPCCDC: ###ISP_CTRL in ccdc =0x298100
ISPCCDC: ###ISP_IRQ0ENABLE in ccdc =0x0
ISPCCDC: ###ISP_IRQ0STATUS in ccdc =0x80000000
ISPCCDC: ###CCDC SYN_MODE=0x32704
ISPCCDC: ###CCDC HORZ_INFO=0x100
ISPCCDC: ###CCDC VERT_START=0x0
ISPCCDC: ###CCDC VERT_LINES=0x0
ISPCCDC: ###CCDC CULLING=0xffff00ff
ISPCCDC: ###CCDC HSIZE_OFF=0x0
ISPCCDC: ###CCDC SDOFST=0x0
ISPCCDC: ###CCDC SDR_ADDR=0x0
ISPCCDC: ###CCDC CLAMP=0x10
ISPCCDC: ###CCDC COLPTN=0x0
ISPCCDC: ###CCDC CFG=0x8000
ISPCCDC: ###CCDC VP_OUT=0x0
ISPCCDC: ###CCDC_SDR_ADDR= 0x0
ISPCCDC: ###CCDC FMTCFG=0x4000
ISPCCDC: ###CCDC FMT_HORZ=0x0
ISPCCDC: ###CCDC FMT_VERT=0x0
ISPCCDC: ###CCDC LSC_CONFIG=0x6600
ISPCCDC: ###CCDC LSC_INIT=0x0
ISPCCDC: ###CCDC LSC_TABLE BASE=0x0
ISPCCDC: ###CCDC LSC TABLE OFFSET=0x0
ISPCTRL: ###ISP_CTRL=0x298100
ISPCTRL: ###ISP_TCTRL_CTRL=0x0
ISPCTRL: ###ISP_SYSCONFIG=0x2000
ISPCTRL: ###ISP_SYSSTATUS=0x1
ISPCTRL: ###ISP_IRQ0ENABLE=0x0
ISPCTRL: ###ISP_IRQ0STATUS=0x80000000
isp_s_pipeline,pix_input->pixelformat == V4L2_PIX_FMT_YUYV
500W像素时的ISP寄存器设置:
isp_s_pipeline,pipe.modules =(1)
ispccdc_request
ISPCCDC: Module in use =1
ISPCCDC: ###CCDC PCR=0x0
ISPCCDC: ISP_CTRL =0x298100
ISPCCDC: ccdc input format is CCDC_YUV_SYNC
ISPCCDC: ccdc output format is CCDC_OTHERS_MEM
ISPCCDC: ###ISP_CTRL in ccdc =0x298100
ISPCCDC: ###ISP_IRQ0ENABLE in ccdc =0x0
ISPCCDC: ###ISP_IRQ0STATUS in ccdc =0x80000000
ISPCCDC: ###CCDC SYN_MODE=0x32704
ISPCCDC: ###CCDC HORZ_INFO=0x27f
ISPCCDC: ###CCDC VERT_START=0x0
ISPCCDC: ###CCDC VERT_LINES=0x1df
ISPCCDC: ###CCDC CULLING=0xffff00ff
ISPCCDC: ###CCDC HSIZE_OFF=0x500
ISPCCDC: ###CCDC SDOFST=0x0
ISPCCDC: ###CCDC SDR_ADDR=0x0
ISPCCDC: ###CCDC CLAMP=0x10
ISPCCDC: ###CCDC COLPTN=0x0
ISPCCDC: ###CCDC CFG=0x8000
ISPCCDC: ###CCDC VP_OUT=0x0
ISPCCDC: ###CCDC_SDR_ADDR= 0x0
ISPCCDC: ###CCDC FMTCFG=0x4000
ISPCCDC: ###CCDC FMT_HORZ=0x0
ISPCCDC: ###CCDC FMT_VERT=0x0
ISPCCDC: ###CCDC LSC_CONFIG=0x6600
ISPCCDC: ###CCDC LSC_INIT=0x0
ISPCCDC: ###CCDC LSC_TABLE BASE=0x0
ISPCCDC: ###CCDC LSC TABLE OFFSET=0x0
ISPCTRL: ###ISP_CTRL=0x298100
ISPCTRL: ###ISP_TCTRL_CTRL=0x0
ISPCTRL: ###ISP_SYSCONFIG=0x2000
ISPCTRL: ###ISP_SYSSTATUS=0x1
ISPCTRL: ###ISP_IRQ0ENABLE=0x0
ISPCTRL: ###ISP_IRQ0STATUS=0x80000000
isp_s_pipeline,pix_input->pixelformat == V4L2_PIX_FMT_YUYV
第二个问题:
当我们进行拍照的时候,根据打印信息提供的时间发现,完成一幅图片的拍摄需要12秒,其中有10秒钟是在处理得到的图像数据。打印信息显示在这10秒钟内,系统一直在响应这几个中断:HS_VS_IRQ 、CCDC_VD1_IRQ 、CCDC_VD0_IRQ 、CCDC_LSC_DONE 。 请问产生这种问题会是哪个原因引起的呢?该从哪个地方分析呢?
希望得到你们的回复!谢谢!