|
[FAQ08102][Camera Drv]Mt6572黑屏,绿屏,花屏,卡等问题分析思路
0 |2 a$ w! C: g+ F. p% |9 Z' ~+ g& M, H- Z0 J0 `# d
[DESCRIPTION]
9 N9 X( l6 |( J0 g& i3 N. V5 Y) L4 `如果在进入camera的时候,发现有读到ID,可是确黑屏或者绿屏,或者出现一条绿线等,请先将ISP寄存器dump出来做。: Y% B+ L( B, k8 [2 I* E2 T( I
* {8 D0 `/ _$ r$ p2 ~4 k第一手分析
/ q& B& F1 }4 L9 J% k! O[SOLUTION]6 ]; @& ^' e" Y- b3 x1 [
* w8 o* g9 k* h. H" o, F
一,ISP寄存器dump出来的方法:
0 k: x2 r2 ^3 } 1,直接在进入camera之后通过adb dump,命令“adb shell cat /proc/driver/isp_reg > 'your path' ”* k8 ]9 D& r" {9 Z L* o2 h
2,手机有debug机制,遇到数据抓不满的时候会自动dump,在kernel log中搜索“K_ISP +”下面就是dump出来的寄存器。/ z! I: U. e5 \5 I
! m/ c3 s q7 b/ U& Y; v二,分析Tg那边的寄存器来排查是sensor的数据有问题还是后端处理有问题:, ]& w& y5 q5 h( A, ~# I0 b
1,看TG Grab Window的配置:% D# [1 _8 K% K4 p( D" V
K_ISP0xF4013418 0x06310001 GRAB PIXEL Start/End
0 z n0 p% ~) O* d2 ~) t
! L! U5 C' i4 B. x * Y k$ S# E$ a/ y
K_ISP0xF401341C 0x02530001 GRAB LineStart/End/ L+ z( f3 _3 O( F) p$ n) d; h
2,看Tg的input以及output
9 J8 O; ?! H% {# b# {# Y" ]" N K_ISP0xF4013440 0x000e5b60 TGOutPutDataNum=Widthx2×Height(此$ u' R3 W: f1 X. F' G# ]2 I' I, h
处的Width和Height为Grabwindow的配置,对应到driver中的Get Resolution里面的
4 G# ?- a! R+ O# r8 Q* T: i值) , D! T4 V- _2 s4 S) }: T
K_ISP0xF4013448 0x06440259 [30:16]Input frame line counter / ~5 }6 ?) Y3 l" l) ~
[15:0]Input frame pixel counter
* }; u& U$ u: B3 f+ p8 h' ^$ Z. N' P5 D0 D! J& |
注意:由于yuv1个pixel是由2个byte组成的,所以宽会等于抓到的byte/2;高是从
+ W3 g( ]5 W# \+ G# ^1开始算的,所以会+1
2 a* B$ b4 b! b$ X( W6 p如果Grab window配置不对,请检查sensor driver中Getinfo函数中的startx,starty以及GetResolution函数中的* f: h; E' J# @
Width和Height。2 [3 {$ Y! k- [! F: \
Tg In为sensor实际吐出来的数据,如果不对,需要检查sensor的setting,有可能是sensor吐出来的数据量不够或者配) o( Y. a, o5 G. G( p
置错误导致抓不到data;Tg OutPut为实际往后面输出的size,它应该等于GetResolution中的Width×Height×2,注意Tg的GrabWindow不能比TG的Input还要大,否则会抓不满报错。
$ @. h4 P: l( g2 H5 L( P7 H" M# S0 U1 v9 n+ u' v. p* o/ u' D& T
我的设备打印出来的 K_ISP0xF4013440 为 0 也就是TGOutPutDataNum等于0 。有可能是什么原因造成的呢? sensor driver中Getinfo函数中的startx,starty应该怎么设置?. Y% Q8 b2 P, p9 |( F* i1 z. u6 V
|
|