YUV422蓝屏显示输出功能辅助调试

YUV422蓝屏显示输出功能辅助调试

 

    YUV422有YUYV,YVYU,UYVY,VYUY四种,下面笔者就就以UYVY为例介绍一下数据构成。由于经常要跟视频输入打交道,所以YUV422这种常见的视频信号是经常碰到的。有时候我们调试一个模块输出YUV422,然后再显示出来。很多时候,可能没法准确判断你那个模块是不是已经正常跑起来了,跑起来来的情况下,是不是真的有数据输出,有了数据输出后来的数据到底对不对。

   带着这些疑问,当然有很多对策,笔者就先把这个事情一分为二,以YUV422数据为界限分两部分,如果怀疑是模块没有输出YUV422数据或者输出的数据有错误,那么我们就让这个模块暂时不工作,手动模拟一个YUV422一帧的数据送到显示里面去,比较著名就是蓝屏输出了。下面笔者就简单介绍一下YUV422数据

/*****************************************************************************************************/
声明:本博内容均由http://blog.csdn.net/edsam49原创,转载请注明出处,谢谢!
/*****************************************************************************************************/

   在多数平台里,芯片在输出YUV422数据的时候,Y是一个buffer,UV合在了一个buffer,YUV422的情况下uv的数据就是交替出现。下面就是笔者亲自试过的一组产生相应buffer的代码。

   首先是申请Y & UV的buffer空间吧!这个不用讲了吧!

   然后就是修改设置buffer的值,示例688X480的buffer数据,

void setYUVbufferColor(void){
    unsigned int i, addr, regval;
	for(i=0; i<=(688*480); i++){
		//addr = (unsigned int )TVDTransferToDRVInfo.addrYx + 4*i + 0x10;
		//*(unsigned int *)(addr) = yv;
		addr = (unsigned int )TVDTransferToDRVInfo.addrYx + i;
		*(unsigned char *)(addr) = 0x70;
	   }

	for(i=0; i<=(172*480); i++){
		addr = (unsigned int )TVDTransferToDRVInfo.addrCx + 4*i;
		*(unsigned int *)(addr) = 0x72d472d4;
	   }

}

      主要就是Y的数据是0x70,U跟V是0x72跟0xd4;

      修改好这样的buffer的数据,直接把地址送到显示那边去,看有没有蓝屏输出,如果有就说明显示没问题,如果没有就说明显示有问题,这样我们就可以至少可以判断出显示有没有问题了。

那么有人可能会问了,如果模块跟显示都有问题还不是一样显示 不出来。当然了,笔者只是一分为二先判断显示有没有问题,你解决了显示的问题,再回回过来解决模块的问题也是可以的。当然,也可以调试模块的时候,保存模块输出的一帧数据帧,分析一下它的数据有没有问题,PC端也有一些分析纯YUV数据显示的工具。

       小议了一下这个伟大的、可爱的蓝屏输出,让人爱也让人恨的蓝屏输出:),利用好蓝屏输出的数据模样,对我们解决相关问题还是很有帮助的。

 

 

时间: 2024-09-30 08:53:55

YUV422蓝屏显示输出功能辅助调试的相关文章

windows蓝屏显示“Stop 0x00000050”错误

在安装Microsoft Windows Server 2003 Enterprise Edition sp1 过程中出现蓝屏现象.大致的报错信息如下:在蓝屏上收到下面的"Stop"错误信息:*** STOP:0x00000050 (0xeb7ff002, 0x00000000, 0x8054af32, 0x00000001) PAGE_FAULT_IN_NONPAGED_AREA nt!ExFreePoolWithTag+237.面对windows蓝屏显示"Stop 0x0

电脑蓝屏显示0x0000001A怎么办

  最近一段时间电脑总是无缘无故的出现蓝屏问题,蓝屏显示0x0000001A ,到底是什么原因导致出现这个0x0000001A蓝屏的呢? 首先我们要先分析下MEMORY_MANAGEMENT这样的蓝屏代码呢?这是由什么引起的 0x0000001A蓝屏代码故障分析: 就从上面出现的蓝屏代码后面的而数字可以看出,这是内存管理错误,它往往是有硬件引起的.例如新安装的硬件.内存本身存在问题.如果是在安装系统时出现,那么这很有可能是由于您的电脑硬件达不到安装Windows系统的最小内存或磁盘要求. 0x0

电脑蓝屏显示0X000000A是怎么回事

  蓝屏是电脑中比较常见的故障之一,前面教程中也多次介绍到蓝屏的解决方法,大家都知道蓝屏的故障有很多因素,当ghost win7系统出现蓝屏时也会出现不同错误代码,我们可以通过蓝屏代码显示找出原因,这样才能彻底解决蓝屏故障问题,那么电脑蓝屏显示0X000000A又是什么原因所致?(如图所示)又该如何解决0X000000A蓝屏问题呢? 原因分析: 电脑蓝屏" 0X000000A"代码具体指的是什么呢?其实意思就是说电脑蓝屏和电脑硬件没有直接的关系,而是因为计算机驱动和电脑软件冲突引起的.

电脑蓝屏显示0X000000A错误死机怎么解决

原因分析: 我们电脑使用或开机时弹出" 0X000000A" 代码然后就蓝屏死机了,这个是硬件问题还是软件问题了,我们下面来看看如何处理. 解决方法: 1.首先检查近期电脑上安装了什么软件和驱动,我们是安装了usb键盘.qq之后就开始出现蓝屏了.报错了,如果是这样肯定是就是软件导致的哦: 2.根据我们的经验是dell电脑上的usb键盘会与qq键盘加密程序产生冲突,这个不能删除QQ所以只能换端口了" 3.更换过键盘的话,然后我们就可以进行一些操作了. 好了到了这里关于 电脑蓝屏

win7旗舰版系统出现蓝屏显示代码0x0000007A如何解决

  蓝屏错误代码0x0000007A原因分析: 一般是因为内存发生故障,虚拟内存页面文件存在坏簇,计算机遭到了病毒.木马.间谍软件.广告软件.流氓软件等恶意程序的攻击等原因引起的. 排除的具体操作: 1.建议首先执行磁盘扫描程序对系统盘进行检测,看看磁盘驱动器是否存在磁盘错误或文件错误; 首先鼠标右击系统盘选择属性,然后在打开的属性界面中,选择工具标签,点击查错里的"开始检查"按钮,然后勾上下图红框内的两个选项,并点击开始. 2.如果没有发现问题,那么运行一下杀毒软件对电脑进行全面查杀

Win7蓝屏显示代码0x0000007e怎么办

  一.原因分析:为什么 "0X0000007E"代码指代什么意思?0X0000007E代码的意思是电脑中病毒了或是电脑内存条出现了问题. 电脑中病毒一般是影响电脑正常运行的病毒,需要对电脑进行查杀才行. 内存条不正常导致的电脑问题,应该对电脑内存条进行重新插拔,一般不是内存条损坏. 不过要再次确认电脑蓝屏代码是:"0X0000007E",如图: 二.电脑中病毒问题怎么处理 1.如果是电脑中病毒,开机按电脑上的F8键,在电脑开机菜单栏找到"安全模式&quo

蓝屏显示0x0000001A的解决办法

首先我们要先知道MEMORY_MANAGEMENT这样的蓝屏代码呢?这是由什么引起的呢? 故障分析:冲上么的蓝屏代码后面的而数字可以看出,这是内存管理错误,它往往是有硬件引起的.例如新安装的硬件.内存本身存在问题.如果是在安装系统时出现,那么这很有可能是由于您的电脑硬件达不到安装Windows系统的最小内存或磁盘要求. 解决方法:要解决0x0000001A蓝屏代码这故障,首先我们得排除上面所提到的硬件故障以及内存的故障.首先从内存出发,在确保内存没有损坏的情况下,将内存拔下擦拭金手指,然后重新插

Win7出现蓝屏显示Win32K.sys错误代码怎么办?

  解决方法 一.尝试进入安全模式下,看是否还会蓝屏. 二.如果windows7系统安全模式下不蓝屏,那么我们可以尝试干净启动. 1.使用拥有管理员权限的帐户登录计算机. 2.按Win+R,在运行框中输入 msconfig,然后按 Enter 键启动系统配置实用程序. 3.在"常规"选项卡上,单击"有选择的启动",然后单击以清除"加载启动项"复选框. 4.在"服务"选项卡上,单击以选中"隐藏所有 Microsoft

win8蓝屏显示错误代码“page fault in nonpaged area”的解决方法

  解决方法一 1.开机按F8不动到高级选项出现在松手,选"最近一次的正确配置"回车修复(这个方法可以恢复原来的驱动). 2.如果是因更新驱动引起的故障,右击我的电脑选属性,选设备管理器找到这个驱动右键选属性/上面的驱动程序选项/选下面返回驱动程序选项按确定. 3.如果故障依旧,还原系统或重装. 解决方法二 Win8还原系统,右击计算机选属性,在右侧选系统保护,系统还原,按步骤做就是了,事前也可以选择这个页面最下面创建,自己创建还原点. 驱动有随电脑自带的,有官方网站下载的,软件有驱动