|
[FAQ08102][Camera Drv]Mt6572黑屏,绿屏,花屏,卡等问题分析思路4 z0 x+ T( h; z# r5 N' ^; A0 p: ?
/ @5 u7 D: w& f% P! M
[DESCRIPTION]4 ?$ i3 G, i9 k/ w0 |: }& b9 r
如果在进入camera的时候,发现有读到ID,可是确黑屏或者绿屏,或者出现一条绿线等,请先将ISP寄存器dump出来做。* E$ Y& o& X9 b7 R$ y# m
- \% k% G" |, s6 t" x第一手分析) L# A8 `4 V H! G9 V. F
[SOLUTION]2 Q9 |1 o4 [, N( z8 n" x
8 F0 {3 O0 |+ a3 Z# ]- c4 S一,ISP寄存器dump出来的方法:
! |. `: `( \ O7 i# ~- Y 1,直接在进入camera之后通过adb dump,命令“adb shell cat /proc/driver/isp_reg > 'your path' ”3 t: d6 X% B- R
2,手机有debug机制,遇到数据抓不满的时候会自动dump,在kernel log中搜索“K_ISP +”下面就是dump出来的寄存器。- ]& T+ J# }+ U. p# ?7 o/ _
, m7 U+ u2 p, J" a二,分析Tg那边的寄存器来排查是sensor的数据有问题还是后端处理有问题:
3 q: ?# S( w! b8 H& ]7 u K 1,看TG Grab Window的配置:
1 u8 d# j! W' B/ q9 I4 \% X8 H K_ISP0xF4013418 0x06310001 GRAB PIXEL Start/End6 @% `3 S2 U% T9 M2 T0 O3 J4 ]( t
4 n$ B* d- A; m) r8 G
|9 k) V0 l4 }8 X% z) j$ C6 R' h K_ISP0xF401341C 0x02530001 GRAB LineStart/End
) e* W0 l6 {5 D. l7 J: b 2,看Tg的input以及output. ^6 |1 }% s2 s7 y. Q# I
K_ISP0xF4013440 0x000e5b60 TGOutPutDataNum=Widthx2×Height(此
( P. P% Q) p8 Z& Y9 y5 `7 `处的Width和Height为Grabwindow的配置,对应到driver中的Get Resolution里面的6 n7 l0 M, Y9 ?0 t3 D
值)
$ a9 t: Q- N* C& Y% f6 B K_ISP0xF4013448 0x06440259 [30:16]Input frame line counter
3 ?% D4 U2 d( _& O: a[15:0]Input frame pixel counter
! c* \, q# b8 v" B. s+ b) V% \+ a, g- m& S( X& M3 a
注意:由于yuv1个pixel是由2个byte组成的,所以宽会等于抓到的byte/2;高是从1 T. @2 ^+ K; }
1开始算的,所以会+14 C/ U' s2 ]$ b; T! c( y
如果Grab window配置不对,请检查sensor driver中Getinfo函数中的startx,starty以及GetResolution函数中的- o7 ^3 N) F0 y! P: n9 o
Width和Height。
% F. i# F( O: a! }Tg In为sensor实际吐出来的数据,如果不对,需要检查sensor的setting,有可能是sensor吐出来的数据量不够或者配- q& I3 y& t. A: Y' ] Y; u& S
置错误导致抓不到data;Tg OutPut为实际往后面输出的size,它应该等于GetResolution中的Width×Height×2,注意Tg的GrabWindow不能比TG的Input还要大,否则会抓不满报错。 3 G) x( R4 D. _
6 k! W. _% S! q M* Q7 z1 m2 Q
我的设备打印出来的 K_ISP0xF4013440 为 0 也就是TGOutPutDataNum等于0 。有可能是什么原因造成的呢? sensor driver中Getinfo函数中的startx,starty应该怎么设置?
* R; K6 k! \2 A+ n/ J |
|