最近在freescale mx51平台上调试saf7113芯片,写下一些调试的心得 1. 一个好的工具 YUVtools.exe 这个工具可以用来查看拍摄出来的YUV图片效果, 来发现到底什么地方出了问题,很方便,选项非常多,在调试中碰到的很多问题,比如失帧 图片模糊,格式不对等等都可以通过这个工具对图片进行分析 2. 概念的了解: BT656, MX51 IPU, SAF7113 V4L2这些概念一定要清楚 SAF7113有一套缺省的设置, 按照这套缺省设置基本就可以出图像了。 我设置的saf7113输出是BT656,当初对BT656不太了解,所以在理解MXC V4L2对下层的接口上多花费了一些时间。 3. freescale的代码 毕竟不是为项目定制的,问题还是有一些的,我想当初他们也只是测试了部分代码,所以不要太迷信他的代码,当我放开手脚开始修改MXC V4L2代码后,觉得轻松了很多 另外MXC V4L2中有很多hardcode的代码,如果格式或者制式的原因,可能会使capture和overlay看起来像失帧,其实都是格式惹的祸。 此外MXC ipu3 code 也有值得商榷的地方,反正该改写的地方我都没客气 4. 解隔行, saf7113输出的是隔行数据 使用channel的scan-order可以实现隔行数据的交错, 但是对于动态图像,交错后的数据可能会出现毛刺,锯齿等问题。 还有一种办法,就是使用一场数据代替整帧数据,缺点是会损害静态物体的清晰度。
5. preview很好用 我直接用的freescale的代码,效果很不错,从camera直接到framebuffer,几乎不需要cpu参与。不过freescale android overlay hal使用的是push mode模式,而不是VIDIOC_OVERLAY 6. 自己写小程序分析图片 比如NTSC摄像头拍出的图片模糊,其实是IPU把NTSC数据top bottom field搞反了,图片看着很奇怪,我写了个程序把top bottom解出来,然后调整下顺序,发现图片清晰了,改了下IPU中top field的识别模式,好了,再次说明不要太相信freescale的代码。dd 也要用好,方便的很。 7. 照抄ov3640 驱动框架都是从ov3640.c抄来的,虽然最后已改的面目全非,但是最初还是很有帮助的 8. IPU的channel 这个概念要尽早了解,很重要,了解这个,MXC V4L2的代码看起来相当的简单
|