|
|
[FAQ08102][Camera Drv]Mt6572黑屏,绿屏,花屏,卡等问题分析思路
+ k& n8 P4 E% i' s2 W* K
. i7 \/ G' Z' n( l" u[DESCRIPTION]" o. k. \) c, S6 F! ~3 T/ @: d
如果在进入camera的时候,发现有读到ID,可是确黑屏或者绿屏,或者出现一条绿线等,请先将ISP寄存器dump出来做。
/ }: f Z* [$ p
4 a' C4 @5 e) J% k% w第一手分析
; i8 u0 a2 E9 }, V2 k) D9 w, }[SOLUTION], j) B" ?& C# x6 V! |1 E
0 J3 I% |# F0 U4 s& w p( D0 l一,ISP寄存器dump出来的方法:
3 @' o9 v# G+ K3 v6 Y 1,直接在进入camera之后通过adb dump,命令“adb shell cat /proc/driver/isp_reg > 'your path' ”, m( U' C/ o2 v1 @; [1 J% ^
2,手机有debug机制,遇到数据抓不满的时候会自动dump,在kernel log中搜索“K_ISP +”下面就是dump出来的寄存器。
; W4 `/ r. t0 H" G' x7 A
4 C1 Q0 o' z# Y3 q2 g, B二,分析Tg那边的寄存器来排查是sensor的数据有问题还是后端处理有问题:( r% U0 O% v6 _" c6 y
1,看TG Grab Window的配置:
/ Y) F7 J. d* g5 O4 h( p: R K_ISP0xF4013418 0x06310001 GRAB PIXEL Start/End
0 V i" {! ~6 j H) D& j 5 h2 n- v+ H; Q* h
( ]- n* U& Q h( O7 s2 z
K_ISP0xF401341C 0x02530001 GRAB LineStart/End
/ I! Q* _( K$ R( L 2,看Tg的input以及output
, g& Y9 |; _( I9 K. Z$ H& I( O6 c K_ISP0xF4013440 0x000e5b60 TGOutPutDataNum=Widthx2×Height(此! _& D6 d+ t- R
处的Width和Height为Grabwindow的配置,对应到driver中的Get Resolution里面的- C% }8 ]9 U% b# D" P. X
值) * l8 T: b. H) g2 [8 y
K_ISP0xF4013448 0x06440259 [30:16]Input frame line counter 0 O8 a9 y& m8 P
[15:0]Input frame pixel counter
x5 k9 y# F% d) G3 V2 a& R
: n/ \, \4 V6 z F注意:由于yuv1个pixel是由2个byte组成的,所以宽会等于抓到的byte/2;高是从. ?9 D& B. d7 U' x% y; @3 p( b* e& q
1开始算的,所以会+1: \) n) @: q4 U& t
如果Grab window配置不对,请检查sensor driver中Getinfo函数中的startx,starty以及GetResolution函数中的
, Z3 u O3 M7 x" W& ?, |' oWidth和Height。4 W a6 F8 T$ k: z( v2 k1 R! E
Tg In为sensor实际吐出来的数据,如果不对,需要检查sensor的setting,有可能是sensor吐出来的数据量不够或者配) I4 V* Z9 l H2 ?
置错误导致抓不到data;Tg OutPut为实际往后面输出的size,它应该等于GetResolution中的Width×Height×2,注意Tg的GrabWindow不能比TG的Input还要大,否则会抓不满报错。 . }7 Z7 {- c- h
4 Y9 z9 Q, W8 v; X& V我的设备打印出来的 K_ISP0xF4013440 为 0 也就是TGOutPutDataNum等于0 。有可能是什么原因造成的呢? sensor driver中Getinfo函数中的startx,starty应该怎么设置?
% Z2 G! y1 r7 w! V8 p$ m) y |
|