|
|
[FAQ08102][Camera Drv]Mt6572黑屏,绿屏,花屏,卡等问题分析思路7 k- Z) x6 n1 G5 I9 r5 \, |2 i) V
$ p6 \$ X" @3 g* t0 G
[DESCRIPTION]- s; |( K$ k* Y$ F: j
如果在进入camera的时候,发现有读到ID,可是确黑屏或者绿屏,或者出现一条绿线等,请先将ISP寄存器dump出来做。" D$ F. w3 ] l/ S8 h( U& G
. U2 ]! t( Z, w9 K( Q第一手分析$ L! ]. |2 i0 r0 k8 C0 c0 U
[SOLUTION]& D1 K# w! z+ V Q9 c8 ~0 `% o% I
1 R$ R4 e* h3 u* |4 |( p& ?一,ISP寄存器dump出来的方法:
/ z+ k1 l3 h$ a& Z 1,直接在进入camera之后通过adb dump,命令“adb shell cat /proc/driver/isp_reg > 'your path' ”' ?2 A0 h |! s; `0 E3 t
2,手机有debug机制,遇到数据抓不满的时候会自动dump,在kernel log中搜索“K_ISP +”下面就是dump出来的寄存器。- x& O# p3 q" ]
4 D" R* Z8 l0 E
二,分析Tg那边的寄存器来排查是sensor的数据有问题还是后端处理有问题:
3 C" l" n, D. I* i) u1 q 1,看TG Grab Window的配置:
, f! n9 F q( Q. z4 _5 o n& d K_ISP0xF4013418 0x06310001 GRAB PIXEL Start/End
" f5 y! t; [9 l3 ?: M. @ i, K ! A g4 t, Q( |; v0 x
9 a2 o# l' ?5 r! e/ c9 R K_ISP0xF401341C 0x02530001 GRAB LineStart/End) r' S" G0 d5 v! A8 A+ W
2,看Tg的input以及output+ g; |' G' m7 F* G3 G% F7 v
K_ISP0xF4013440 0x000e5b60 TGOutPutDataNum=Widthx2×Height(此
' Q; o$ i O5 U9 r; M; B# L( ]' K处的Width和Height为Grabwindow的配置,对应到driver中的Get Resolution里面的5 ~% X! l& @: L4 h3 c# r1 t
值)
6 L/ ~# G0 u" W& T2 K K_ISP0xF4013448 0x06440259 [30:16]Input frame line counter
' ~3 I% _: B1 {( D[15:0]Input frame pixel counter
" G0 R6 m% t, m7 K7 r" {5 C( C, J* L
# [( \) D3 P: l' i注意:由于yuv1个pixel是由2个byte组成的,所以宽会等于抓到的byte/2;高是从5 a' D- r, L" N6 F1 x7 }
1开始算的,所以会+1( u z0 F0 I, H; X% N# E. V
如果Grab window配置不对,请检查sensor driver中Getinfo函数中的startx,starty以及GetResolution函数中的
0 @- F$ n$ {( Y; cWidth和Height。
. M6 K6 Z5 y1 e7 t& WTg In为sensor实际吐出来的数据,如果不对,需要检查sensor的setting,有可能是sensor吐出来的数据量不够或者配
( o/ v: p8 W- v- H5 |+ i) ^ N置错误导致抓不到data;Tg OutPut为实际往后面输出的size,它应该等于GetResolution中的Width×Height×2,注意Tg的GrabWindow不能比TG的Input还要大,否则会抓不满报错。 . L# K% [" G7 u( g
. U0 m9 s1 m& r我的设备打印出来的 K_ISP0xF4013440 为 0 也就是TGOutPutDataNum等于0 。有可能是什么原因造成的呢? sensor driver中Getinfo函数中的startx,starty应该怎么设置?
0 a. [( S5 t0 ?% {- F5 M |
|