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

来源:互联网 发布:软件开发项目培训 编辑:程序博客网 时间:2024/04/29 07:41

前言
         欢迎大家我分享和推荐好用的代码段~~
声明
         欢迎转载,但请保留文章原始出处:
         CSDN
http://www.csdn.net
         雨季o莫忧离:http://blog.csdn.net/luckkof

正文



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

     TG前端还有一个Seninf Module, Seninf Module的主要功能是处理Parallel/Mipi/Serialinterface发送的信号,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 notemain/sub camera有独立的mipi portsub camera使用的为port_A,会有客户把sub cameramipi-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产生了问题.
       

0 0
原创粉丝点击