完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
大家好,
我们在使用tvp7002+dm368进行720p视频编码,Ypbpr视频经过tvp7002变成数字信号后输入dm368进行编码,软件使用DVSDK开发包。 正常情况下没有问题,但是在进行振动试验时发现当tvp7002的前端输入信号硬件连接不稳定时,tvp7002的输出时钟、行场同步等信号波形会变得异常,这些异常的信号输入给DM368后会造成编码中断,定位后发现是此时DM368无法正常捕获视频数据,capture线程一上来捕获视频的函数就卡死了;当振动结束,硬件连接稳定后,tvp7002的输出信号会变得正常,但DM368无法自行恢复,重新运行应用程序也无法恢复,必须重启芯片才可恢复(时间过长); 我们想实现振动时可以异常,但是振动结束后整个系统可以自行恢复;一种思路是让tvp7002在输入异常时不要输出混乱的信号给dm368,另一种思路是让DM368可以不受前面错误信号的干扰,输入变正常后还可以自行恢复编码,尝试让异常后DM368复位视频处理子系统,研究代码后发现好像不是很好实现; 这里想要请教一下大家有没有遇到类似的情况,有没有好的方法能够实现我们想要的功能,如果有更好的思路也请大家不吝赐教,多谢!!! |
|
相关推荐
11个回答
|
|
|
|
|
|
感谢您的回答,我们一开始也是想在异常后单独复位VPSS,但是没有找到很好的实现方式,您能不能详细说一下怎样能在不重启系统的前提下复位vpss,在dvsdk开发包中有没有相应的函数可以调用?多谢! |
|
|
|
我在线中 发表于 2018-6-21 18:54 你好, DVSDK里面应该没有复位代码。UBL里面有vpss复位流程,你参考一下。 |
|
|
|
您好, 我们使用的是DVSDK-4_02_00_01,在里面psp/flash-utils/common/ubl/src中,有个ubl.c,好像是UBL的代码,里面调用了一个叫VPSS_SYNC_RESET的函数,它对VPSS和PSC进行可相关的寄存器配置,不知道这个函数实现的是不是就是您说的那个复位流程? |
|
|
|
我在线中 发表于 2018-6-21 19:11 你好, 核心是的。但是复位前后寄存器/环境变量的备份和恢复还需要你自己软件加上。 |
|
|
|
您好, 我们按照这个函数的流程做了一下,发现vpss复位后它所有寄存器的值都变成了0(包括一些默认值不是0的寄存器也是),然后我们按照之前备份的值进行寄存器恢复,发现此时寄存器无法写入,值永远是0,请问这种现象正常吗?应该如何解决?多谢! |
|
|
|
我在线中 发表于 2018-6-21 19:25 你好, 现象不正常。你确认复位后有使能vpss,并且状态切换都是完成了? |
|
|
|
您说的状态切换指的是VPSS从复位状态回到正常状态的切换吗,这个有什么标志可以判断吗? |
|
|
|
你好, 你的代码和下面的类似么?黄色部分有么? void DRV_SyncRst(unsigned int module, unsigned int domain, unsigned int state) [ int pMem_map; unsigned int *pMDCTL = NULL; unsigned int *pPTCMD = NULL; unsigned int *pPTSTAT = NULL; unsigned int *pMDSTAT = NULL; pMem_map = 0x01C41000; pPTCMD = (unsigned int *)( pMem_map+0x120 ); pPTSTAT = (unsigned int *)( pMem_map+0x128 ); pMDSTAT = (unsigned int *)( pMem_map+0x800 ); pMDCTL = (unsigned int *)( pMem_map+0xA00 ); // Wait for any outstanding transition to complete while ( (*pPTSTAT) & (0x00000001 << domain) ); // If we are already in that state, just return if (((pMDSTAT[module]) & 0x1F) == state) return; // Perform transition pMDCTL[module] = ((pMDCTL[module]) & (0xFFFFFFE0)) | (state); *pPTCMD |= (0x00000001 << domain); // Wait for transition to complete while ( (*pPTSTAT) & (0x00000001 << domain) ); // Wait and verify the state while (((pMDSTAT[module]) & 0x1F) != state); return; ] |
|
|
|
物是人非aaa 发表于 2018-6-21 19:52 您好, 我们的代码和您的结构基本是一致的,上面的代码只是让VPSS进入同步复位状态,此时DM368还是不能正常捕获视频,我们尝试后发现按照上述代码复位VPSS后(state = 1),使用同样的结构使VPSS进入使能状态(state = 3),再恢复VPSS的中断相关寄存器状态,DM368即可恢复捕获视频。感谢您的帮助。 |
|
|
|
tvp7002芯片r通道输入损坏,我想更换一块,不知道更换后需要写程序吗?
|
|
|
|
只有小组成员才能发言,加入小组>>
309 浏览 1 评论
513 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
754 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
641 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1113 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
226浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
181浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
46浏览 13评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
149浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
158浏览 12评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-18 12:21 , Processed in 1.197074 second(s), Total 99, Slave 82 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号