您的位置:首页 > 移动开发 > Android开发

Android 如何解决TG导致的黑屏问题

2014-02-20 15:21 537 查看
前言
         欢迎大家我分享和推荐好用的代码段~~
声明
         欢迎转载,但请保留文章原始出处:

         [b][b]CSDN
[/b]:[/b]http://www.csdn.net

         雨季o莫忧离:http://blog.csdn.net/luckkof

正文

      TG module 处于data path的前端, 当产生问题后经常会有黑屏的现象.

     TG前端还有一个Seninf Module, Seninf Module的主要功能是处理Parallel/Mipi/Serial等interface发送的信号,TG
module全称为Timing Generator,它主要有两个作用,一是产生sensor 工作所需要的Master Clock,二是接收sensor 吐出的信号。当怀疑是TG有问题的时候通常可以按照以下的思路.
    1. 查看是否是ISP wait irq time out error, 出现问题后可以再main log里面看到以下的log:
    ERROR: Clear(1),Type(0),IrqStatus(0x00005000),WaitStatus(0x00000400),Timeout(5000)
    Bit10: 为1代表没有成功收到TG1
Done status
 
    

 
   
    2. 认为和TG有关系后,接下来可以去分析dump register,主要需要关系以下的register.
      A: TG2 receive input image data from seninf
2

      0x150044E8 (ex. 0x0CC00990)

      Width = 0xCC0, Height = 0x990

      B: TG2 grab window
      0x150044B8 (ex. 0x0C860002)

      Grab pixel start = 0x0002, Grab pixel end = 0x0C86

      0x150044BC (ex. 0x09680002)

      Grab line start = 0x0002, Grab line end = 0x0968
 
      C. TG1 receive input image data from seninf 1
      0x15004448 (ex. 0x0CC00990)

      Width = 0xCC0, Height = 0x990
 
      D. TG1 grab window
      0x15004418 (ex. 0x0C860002)

      Grab pixel start = 0x0002, Grab pixel end = 0x0C86

      0x1500441C (ex. 0x09680002)

      Grab line start = 0x0002, Grab line end = 0x0968
 
 
    3. 如果发现TG这些register里面的数据已经异常,则很有可能是Seninf
Module已经产生了问题.因此就需要再去分析Seninf Module的相关register,Seninf module的register可以参考FAQ10571, 下面就把两种经常犯的错误罗列出来:
    A: 以92为例,design
note上main/sub camera有独立的mipi port,sub camera使用的为port_A,会有客户把sub camera的mipi-data 与main
camera接在一起;这样就造成在切换到sub camra时,TG 无法从port_A 接收到数据.具体的修改不同的平台稍有不同.核心代码如下:
  
     


 
     B. 还有一种情况是发生了CRC
error


         0x1500810C,bit 0~2 为ECC,CRC error  interrupt status;

         若bit0,bit1,bit2为1,说明lane number不匹配,通常是sensor module的mipi lane number和对应的driver不匹配。
 
    4. 若发现前端Seninf
Module输出来的数据正常,在main log里面还是发现有TG 的irq error而且TG的相关register收到的数据却不正常,可以考虑是bandwidth的问题导致.分析如下:
     A: g_TempAddr:Last(0x02EC0000) == Cur(0x02EC0000)
        Status(0x00000010),Lost pass1 done,Error IRQ,
Type(0)
        Bit4: 
为1,表明bandwidth不足

    B: 此时可以去check 0x15000802c和0x1500044480x150080ac和0x150044e8对比数据的大小来确认是否为TG
module产生了问题.
       
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐