This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

dm3730芯片中CCDC相关寄存器的配置问题

Other Parts Discussed in Thread: OMAP3530, SYSCONFIG, DM3730

大家好:

    我在开发使用 杭州硕数 提供的评估板。

    linux版本是 不详 。.测试video(tvp146m2)驱动时候发现图像无法显示。Demo使用的是 dvsdk_dm3730-evm_04_03_00_06_setuplinux 中自带的 linux-driver-examples-psp04.02.00.07目录中video文件夹中的saMmapLoopback.c

    linux内核中没有使用meidia接口因此编译psp_examples时候没有使用PLAT=omap3530,使用的是v4l2架构的控制系统调用。

    目前修改了内核的ccdc寄存器以及saMmapLoopback.c。可以跑不报错。但是图像始终未显示出来。我把调试的debug打印出来:

ISPCCDC: Accepted CCDC Output (width = 0,Height = 0)
ISPCCDC: ###CCDC PCR=0x0
ISPCCDC: ISP_CTRL =0x102dc140
ISPCCDC: ccdc input format is CCDC_YUV_BT
ISPCCDC: ccdc output format is CCDC_OTHERS_MEM
ISPCCDC: ###ISP_CTRL in ccdc =0x102dc140
ISPCCDC: ###ISP_IRQ0ENABLE in ccdc =0x1000000
ISPCCDC: ###ISP_IRQ0STATUS in ccdc =0x80020500
ISPCCDC: ###CCDC SYN_MODE=0x3af84
ISPCCDC: ###CCDC HORZ_INFO=0x59f
ISPCCDC: ###CCDC VERT_START=0x20002
ISPCCDC: ###CCDC VERT_LINES=0xef
ISPCCDC: ###CCDC CULLING=0xffff00ff
ISPCCDC: ###CCDC HSIZE_OFF=0x5a0
ISPCCDC: ###CCDC SDOFST=0x249
ISPCCDC: ###CCDC SDR_ADDR=0xaa000
ISPCCDC: ###CCDC CLAMP=0x10
ISPCCDC: ###CCDC COLPTN=0x0
ISPCCDC: ###CCDC CFG=0x8800
ISPCCDC: ###CCDC VP_OUT=0x3be2d00
ISPCCDC: ###CCDC_SDR_ADDR= 0xaa000
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
ISPCCDC: ###CCDC BTIFEN=0x3
ISPCTRL: ###ISP_CTRL=0x102dc140
ISPCTRL: ###ISP_TCTRL_CTRL=0x0
ISPCTRL: ###ISP_SYSCONFIG=0x2000
ISPCTRL: ###ISP_SYSSTATUS=0x1
ISPCTRL: ###ISP_IRQ0ENABLE=0x1000000
ISPCTRL: ###ISP_IRQ0STATUS=0x80020500

ISPCTRL: <1>isp_buf_queue: queue 10 vb 1, mmu 000aa000
omap3isp omap3isp: isp_wait: wait is too much
omap3isp omap3isp: ccdc 1 won't become idle!
ISPCTRL: HS_VS_IRQ
ISPCTRL: CCDC_LSC_DONE
ISPCTRL: CCDC_VD2_IRQ
ISPCTRL: CCDC_VD0_IRQ
ISPCTRL:
ISPCTRL: HS_VS_IRQ
ISPCTRL: CCDC_LSC_DONE
ISPCTRL: CCDC_VD1_IRQ
ISPCTRL: CCDC_VD0_IRQ
ISPCTRL:
ISPCTRL: CCDC_VD0_IRQ
ISPCTRL:
ISPCTRL: HS_VS_IRQ
ISPCTRL: CCDC_LSC_DONE
ISPCTRL: CCDC_VD2_IRQ
ISPCTRL:
ISPCTRL: CCDC_VD1_IRQ
ISPCTRL:
ISPCTRL: <1>isp_wait: wait 53
omap3isp omap3isp: OUCH!!!
ISPCTRL: <1>isp_buf_process: finish 8 mmu 00153000
ISPCTRL: CCDC_VD0_IRQ
ISPCTRL:
ISPCTRL: HS_VS_IRQ
ISPCTRL: CCDC_LSC_DONE
ISPCTRL: CCDC_VD1_IRQ
ISPCTRL:
omap3isp omap3isp: isp_wait: wait is too much
omap3isp omap3isp: ccdc 1 won't become idle!
ISPCTRL: HS_VS_IRQ
ISPCTRL: CCDC_LSC_DONE
ISPCTRL: CCDC_VD2_IRQ
ISPCTRL: CCDC_VD0_IRQ

大家帮我一下看看我到底是哪里出错了。

非常感谢,另外 如果 以dm3730作为 平台 有完善的解决方案的开发人员可以提供我吗(tvp51x系列视屏编解码)?我可以购买,但是不要价钱不要太高,毕竟我是个人再搞,不是公司行为。

非常感谢

  • 我怀疑的问题:

    1,data path是不是配置错误?(我看了ti wiki上的一篇文章介绍,直接CCDC通过isp mmu把图像传输到内存。不使用其他任何isp中的任何模块)

    2,video输出是不是有问题?因为板子上还有一个是模拟输出的,如何video1代表的vid1输出lcd屏幕上?

    谢谢

  • Edward,

    建议把你的问题分成两个部分,一个是采集,一个是显示。

    1. 采集:在DDR上是否有正确获取到数据?

    2.显示:如果显示一个固定的YUV数据是否可以成功?

  • 看了你的回复

    我确实是按照这个思路去调试的。我现在使用的linux-2.6.32的内核版本这个和ti提供的dvsdk内核版本差的比较多。

    因此在调试过程两套版本的代码也在作比较。

    1,我看过一篇ti wiki关于图像设备的采集。其中介绍的omap系类isp只用了ccdc作为图像出的。但是我看了32版本的代码,在通过v4l2架构去配置的过程其实是prev和resz都使用了。还有一个问题我不明白,一个ccdc sync mode中的exwen 这个bit【5】到底要设置吗?

    2,目前我看到的是中断VD0有HS_VS类型。这样分析下来ccdc输入端应该是有信号过来的,问题是现在怎么把图片输出到内存。这条path配置落实到最后就是寄存器的设置,ti有没有设置sample?给我们大家普及一下?

    关于显示这部分 我其实使用的是dvsdk_dm368-evm_4_02_00_06_setuplinux里面的测试程序在跑,单看代码对于fb0的操作没有问题,gfx层数据可以输出到vid0 或者 vid1。

    另外我确信有单独测试video代码是可以运行的,板子刚到手确实运行过,摄像头可以工作。问题在于demo买来的时候有个文件系统是在nand上的。我scrub了,再也找不到了。

    希望大家有开发tvp经验的人帮我一下。

    非常感谢

  • 配置path的代码我修改过了

  • 数据显示尝试了video7 和 video8 的测试,可以显示。

    现在在中断函数中加了延时。屏幕发现闪烁。图像还是没有出来。

    这种情况碰到过吗?