|
[FAQ08102][Camera Drv]Mt6572黑屏,绿屏,花屏,卡等问题分析思路
% F$ q' x! p+ Z1 Y# l. y! [& L
[DESCRIPTION]
& G6 S3 j3 I. |2 E. I& r4 m+ f如果在进入camera的时候,发现有读到ID,可是确黑屏或者绿屏,或者出现一条绿线等,请先将ISP寄存器dump出来做。
6 b8 K0 {; |' P0 w: U* n6 J1 P
& j+ m9 A6 J# b8 X7 K) b! X第一手分析$ o: Q8 d* i) e# z) e" ]" l
[SOLUTION]
$ q$ }" R* @$ U' g1 y' |5 G- m2 K6 } a/ |+ Y0 e
一,ISP寄存器dump出来的方法:
8 S+ p# s, @0 T- i 1,直接在进入camera之后通过adb dump,命令“adb shell cat /proc/driver/isp_reg > 'your path' ”9 }: y1 L: Z: y
2,手机有debug机制,遇到数据抓不满的时候会自动dump,在kernel log中搜索“K_ISP +”下面就是dump出来的寄存器。
$ Y; i& c" ]( n0 B% B! f9 z8 S" P8 s7 B/ F4 `9 @0 ]
二,分析Tg那边的寄存器来排查是sensor的数据有问题还是后端处理有问题:7 i7 l X V% k
1,看TG Grab Window的配置:
" \1 c; b" |, E2 ]" f( F, [ K_ISP0xF4013418 0x06310001 GRAB PIXEL Start/End
0 m$ C- O! l* T1 [% S
% v G4 n7 S, C I, |6 U7 O 9 [4 c) {6 N; [/ D5 ]. Y
K_ISP0xF401341C 0x02530001 GRAB LineStart/End
1 C6 m! j9 A& r! ]& w: Q/ @( P0 V 2,看Tg的input以及output) F4 Y0 a0 f; O8 {3 Y
K_ISP0xF4013440 0x000e5b60 TGOutPutDataNum=Widthx2×Height(此
: O1 Q% t# Z: K, g8 S) M o处的Width和Height为Grabwindow的配置,对应到driver中的Get Resolution里面的
9 x! r2 o6 m0 D$ |# [, t* v! ?+ R值)
: t8 k5 u2 [6 c) |6 V K_ISP0xF4013448 0x06440259 [30:16]Input frame line counter 5 q2 U% d D0 a1 ]1 d" v; n
[15:0]Input frame pixel counter
/ {1 t* z; P3 o' R" n! K& f: \5 T9 L
注意:由于yuv1个pixel是由2个byte组成的,所以宽会等于抓到的byte/2;高是从: @! { A3 F9 [ r; e
1开始算的,所以会+1
$ ?0 t. i, u0 K. G. Y0 b如果Grab window配置不对,请检查sensor driver中Getinfo函数中的startx,starty以及GetResolution函数中的
% A' X8 f A0 C% |/ ~, X9 nWidth和Height。
/ z8 G: G& s: ITg In为sensor实际吐出来的数据,如果不对,需要检查sensor的setting,有可能是sensor吐出来的数据量不够或者配% D) E1 i( X4 d
置错误导致抓不到data;Tg OutPut为实际往后面输出的size,它应该等于GetResolution中的Width×Height×2,注意Tg的GrabWindow不能比TG的Input还要大,否则会抓不满报错。
$ W- k- J" y5 m7 l/ [
# Z/ c7 A7 t9 N0 D$ `+ @2 _# D我的设备打印出来的 K_ISP0xF4013440 为 0 也就是TGOutPutDataNum等于0 。有可能是什么原因造成的呢? sensor driver中Getinfo函数中的startx,starty应该怎么设置?6 _3 l7 a% l( X
|
|