ch0_ctrl[4]=1491
ch0_vsize[7c]=465
ch0_hcfg[6c]=1100780
ch0_vcfg00[70]=1002a
ch0_vcfg01[74]=462002a
ch1_ctrl[8]=491
ch1_vsize[bc]=465
ch1_hcfg[ac]=1100780
ch1_vcfg00[b0]=1002a
ch1_vcfg01[b4]=462002a
VPIF_INTEN[20]=13
VPIF_INTEN_SET[24]=13
这是vpif寄存器设置,[]内数字是寄存器地址,等于号是设置的寄存器值,均为16位显示
驱动原是采集BT601数据,现相机换成日立DI-SC221的BT1120格式数据,只改了其中的寄存器设置和中断服务函数,但是现在 始终无法进入中断服务函数,调试很多天始终无法找到原因。
Chris Meng:
你好,
请问你们的BT601是如何接入的?RAW模式?
请问你是输入是1080p还是1080i?多少帧?PCLK是多少?请一定确保配置的参数和实际输入是完全一致的。
man sim:
回复 Chris Meng:
你好:
601是RAW模式接入的
现在接入BT1120格式,1080p30,PCLK=74.25MHZ,现在通过查看/proc/interrupts或者是查看INTSTAT寄存器值知道VPIF口没有捕获到中断,寄存器配置如下:
CH0 – ch_ctrl:0x00001491 CH1 – ch_ctrl:0x00000491 VPIF_INTEN:0x00000013 VPIF_REQ_SIZE:0x00000080 VPIF_INTEN_SET:0x00000013
vpif无法捕获到中断是因为无法接收到正确的EAV/SAV吗?EAV/SAV是如何触发中断的?VPIF口是将数据先存在通道中的buffer里然后判断数据中是否包含EAV/SAV信号然后才产生中断吗?
Chris Meng:
回复 man sim:
你好,
EAV/SAV正确从机芯发出是最基本的。DM6467还需要输入的时序和寄存器参数配置的时序必须完全一致。例如EAV2SAV之间的消隐期数据的寄存器配置,必须和输入的完全一致。
请问INTSTAT的值是多少?是否有错误产生?
man sim:
回复 Chris Meng:
你好,
INTSTAT的值是0,没有错误提示,你的意思是EAV2SAV的值配置与实际不符的话也不能产生中断?VPIF产生中断的机制是什么?有没有详细的说明?
Chris Meng:
回复 man sim:
man sim
你好,
你的意思是EAV2SAV的值配置与实际不符的话也不能产生中断?
是的。但是INTSTAT的值是0,没有错误,说明还不是这个问题。
The VP_ERRINT interrupt isgenerated for the following reasons:· For channels 0 or 1:– Internal buffer overflow– Length of eav2sav or sav2eav is not the same as the configured value– Bit error detected on 4th field of TRC
你能否把偏移0x14的值读出来一下?
man sim:
回复 Chris Meng:
你好:
0x14的值是0,这个寄存器的作用是什么?说明手册上没有说明,只是标注保留。
Chris Meng:
回复 man sim:
你好,
你确认前端输出正确么?请检查一下硬件连接,我怀疑连SAV/EAV信号都没有正确采集到。
man sim:
回复 Chris Meng:
你好,
前端能检测到信号,但是没有办法验证是不是有SAV/EAV信号,偏移值是0X14的寄存器在原来采集601格式的视频时读出的值是0x100,不知道代表的是什么意思?DM6467有没有什么寄存器可以判断是否接收到EAV/SAV信号,或者有没有其他办法来对VPIF口接收的数据进行判断?
Eason Wang:
回复 man sim:
你在硬件上是否有连接HS VS?
man sim:
回复 Eason Wang:
BT1120是内同步信号,只连接了16位数据线跟时钟信号,但是可以将HS,VS信号引出接到VPIF口上。