有项目调试过 ov02k10(1920*1080)和 sc301IoT(2048*1536)两款 sensor, 都有出现 hdr 模式下出图异常或者不出图的问题,总结下排查过程及注意事项;
用 linear 模式的 setting 出图是正常的,但用 hdr 模式出图异常,现象如下:
用 linear 模式的 setting 出图是正常的,但用 hdr 模式、mipi 速率 1080Mbps,30fps的 sensor setting 出不了图。
用 hdr 模式、mipi 速率 540Mbps、15fps的 sensor setting 出图异常,现象如下(长帧是正常的,短帧如下图所示)。
这是去年一个项目上做的,因为比较久了,具体细节也记不太清了,当时是差不多拖了2个多月才查清楚原因,理一下大概的过程。
首先是检查下是否是驱动配置的问题,要保证 sensor 曝光,增益的寄存器配置是否对的,这个当时查了几遍没有问题;
接着就是我们平台有可以查看 mipi 传输的指令,如果 mipi 传输有报错,那可能是和硬件相关,也可能是 sensor 输出的问题,但看 log 也没发现有报错。
再接着就是抓取了长短帧的 raw 数据,打开看了如下图所示,都不正常,修改 sensor 寄存器,确认 test pattern,看到长短帧的 test pattern 也是异常的,这就说明是和 sensor 的输入有关系了;
接着就是找 sensor 厂介入一起排查了,首先怀疑是和 mipi lane 数或者 mipi 速率太大相关,因为我们平台上接的其他 HDR 的 sensor 都是用的 4lane 的,而这个 sensor 设计的是只支持2lane 的,所以也没办法重新申请 4lane 的 ov02k10 的 setting 去验证,后面是申请了一个 2lane ov08a10 的 HDR 的 setting 去验证了下,可以正常出图,说明那就不是我们平台不支持 2lane 的 hdr 模式。
另外也重新申请了速率低点的 HDR setting 试了,一样出图异常。
ov 那边也给了一些寄存器的修改,试了也没有解决,因为同样的 setting 在其他平台上是正常的,他们就觉得是我们平台的问题,但我们这边也没太多方向去查了。能做的就是怀疑硬件了,接着就是测试 HDR 的 mipi 时序,看 mipi 信号是否满足时序要求,但还是没查出异常的地方。
后面是我们这边比较资深的一个大佬亲自出马了,去做排查,有要求让 ov 那边出两个单独只出长帧、只出短帧的 setting 验证一下试试。但后面也没这么验证,大佬排查出了 vc2(virtual channel)居然有数据,因为我们平台只支持两曝光的 HDR,HDR 的模式是用的 virtual channel,也就是两个曝光行分别从两个单独的VC 里出,以此来区分长短曝光。但排查到第3路通道有数据,那就3曝光的输出了,所以图像异常的原因就是 sensor vc2 有数据输出,导致覆盖了正常数据,平台端关闭了 VC2 输入后,图像就正常了。
一样的是 Linear 模式出图正常,但 HDR模式出图不正常,这里有两种情况,试了 2组 HDR 的 setting,30fps 1080Mbps 的setting、和 15fps 540Mbps 的setting。
一开始用的是30fps 1080Mbps的 setting,但一直没出图,也是怀疑和 mipi 速率大了相关,所以就让 sensor 厂出了一个15fps 540Mbps 的setting 试了下,可以出图了,但出图不正常。后面查是长帧正常,短帧异常。
30fps 1080Mbps的 setting 查看 log 有mipi 传输的报错,而 15fps 540Mbps 的setting是没有的,后面咨询我们这边的大佬,提出让确认下mipi clock 的传输形式是怎样的,我们平台是只支持 mipi clock 的连续传输,不支持非连续的(这个是以前没了解过的)。和 sensor 厂确认了,他们给的是非连续的,这里就有问题了,Linear 模式是非连续的,但可以正常出图,这是不正常的。但按要求 sensor setting 里寄存器改成 mipi clock 连续后,现象还是一样,没有进展。
后面修改 15fps 540Mbps sensor setting,确认 test pattern,短帧输出异常,长帧输出正常。sensor 厂让交换了短帧和长帧的 virtual channel 的寄存器看下, 如下图就是改了这个0x4816的寄存器,默认是0x71改成了0x74 就正常出图了,sensor 厂说同样的配置在 sigmastar 和 Novatek 平台是好的,不用交换长短帧的VC的。我们这边的大佬回复说Soc是标准协议,每个channel都是有ID的0和1;长帧进DDR, 只可能是他们送错了,所以为啥这么改就好了具体原因还未知。
但30fps 1080Mbps 的 setting 依然还是没能出图,15fps 是不满足项目需求的,所以还得继续排查,有找 sensor 厂确认过 两个 setting 的差异,反馈说就是 mipi 速率的差异,但这个平台上有验证过 HDR_2lane_1440Mbps_ov08a10 的 setting 都是可以正常出图的,那也就和速率没关系了,所以目前还没进展 。
当 bringup sensor 的过程中,Linear 模式出图正常,HDR 模式出图异常/不出图时的排查方法小结:
a、首先检查下是否是驱动配置的问题,要保证 sensor 曝光,增益的寄存器配置是否对的。
b、可以查看平台端的 mipi 传输的指令,看 mipi 传输是否有报错,可以对照文档查出 mipi 传输具体报什么错。
c、确保 sensor 和平台的配置是否对齐,如 mipi clock 输出是连续/非连续、mipi 速率是否超过了平台限制、mipi lane数、HDR 的输出模式(dol_vc/dol_lineinfo,dol是 digital overlap,vc是 virtual channel,几个曝光用几个virtual channel ,dol_lineinfo 只针对 sony sensor,sensor setting 中包含 输入sensor HDR 格式是奇偶行区分 或者 line information 区分长短帧)。
d、平台端查看单独输出长帧,短帧时的情况,确认是长帧还短帧的问题 。也可以修改驱动将 hdr 的setting 换到 linear 模式下去出,看单独只出1路曝光时表现如何。
e、抓取 raw data, 查看长短帧的 raw data 表现如何。
f、修改 sensor setting,查看 sensor 长短帧的 test pattern 输出是否正常。
g、硬件测试 hdr 模式下的 AVDD,DVDD,IOVDD 供电电压、reset、pwrdn引脚电压、mclk 波形、mipi 时序等等。