|
|
[FAQ08102][Camera Drv]Mt6572黑屏,绿屏,花屏,卡等问题分析思路
! n1 t6 E. O2 \% K( ^, i
% w# f r6 F L% e9 P1 u$ N[DESCRIPTION]
2 N# g8 J; Z" A6 Y6 q8 f如果在进入camera的时候,发现有读到ID,可是确黑屏或者绿屏,或者出现一条绿线等,请先将ISP寄存器dump出来做。* n6 u% ~) A5 I1 P6 j
/ w+ I' \9 k9 ?+ z; p: q7 ^' G: _
第一手分析
8 v4 i I/ X7 F; |. W* O6 \[SOLUTION]! v `, A% d" t- F) p" H
% z7 B) K- a' h, g
一,ISP寄存器dump出来的方法:
3 m' r2 Z* a5 W 1,直接在进入camera之后通过adb dump,命令“adb shell cat /proc/driver/isp_reg > 'your path' ” d2 B$ A- H) N2 e" | q4 R1 \4 h4 [
2,手机有debug机制,遇到数据抓不满的时候会自动dump,在kernel log中搜索“K_ISP +”下面就是dump出来的寄存器。/ g8 h4 H1 N5 p3 H. O- H
. v! m' V" i7 ?1 g* m. X8 m+ c# X二,分析Tg那边的寄存器来排查是sensor的数据有问题还是后端处理有问题:/ Q* _" h8 }' S& |' D
1,看TG Grab Window的配置:
( M6 r1 c- ]( ]( _ K_ISP0xF4013418 0x06310001 GRAB PIXEL Start/End* e' y+ B% ~0 {
* L$ ^& ~* v4 V; n- I3 z 6 p3 F& G% |& a2 \3 c3 {
K_ISP0xF401341C 0x02530001 GRAB LineStart/End6 _- R- C( k3 }
2,看Tg的input以及output" C u) D1 s# I/ q
K_ISP0xF4013440 0x000e5b60 TGOutPutDataNum=Widthx2×Height(此
4 W, }" r! I' A* d k0 S处的Width和Height为Grabwindow的配置,对应到driver中的Get Resolution里面的, P* S+ g. c3 d2 b
值) & ]2 X* S/ o3 W! j: b
K_ISP0xF4013448 0x06440259 [30:16]Input frame line counter / {, \2 i8 o: l* d1 g
[15:0]Input frame pixel counter
8 j6 t$ o0 q/ W# {$ v' v5 y
4 I: {+ j, v% c' U: U; ^7 r; v注意:由于yuv1个pixel是由2个byte组成的,所以宽会等于抓到的byte/2;高是从& A- V) q# U! m3 ~
1开始算的,所以会+1+ ^" G" V2 D% p _7 l3 W! J q
如果Grab window配置不对,请检查sensor driver中Getinfo函数中的startx,starty以及GetResolution函数中的1 j V3 n3 J8 S7 f
Width和Height。/ l; y( K/ W* y
Tg In为sensor实际吐出来的数据,如果不对,需要检查sensor的setting,有可能是sensor吐出来的数据量不够或者配3 @ [* ~0 ?, n; Q) C
置错误导致抓不到data;Tg OutPut为实际往后面输出的size,它应该等于GetResolution中的Width×Height×2,注意Tg的GrabWindow不能比TG的Input还要大,否则会抓不满报错。
% ?/ s5 U } U8 I" x8 k
3 g. ]3 y# m( E+ c我的设备打印出来的 K_ISP0xF4013440 为 0 也就是TGOutPutDataNum等于0 。有可能是什么原因造成的呢? sensor driver中Getinfo函数中的startx,starty应该怎么设置?3 ~& ]$ A4 e: _* ?
|
|