ESD测试时引发的H3A模块数据混乱问题 - TMS320DM8148 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5912|回复: 6

[已解决] ESD测试时引发的H3A模块数据混乱问题

[复制链接]

1

主题

4

帖子

1029

积分

金牌会员

Rank: 6Rank: 6

积分
1029
发表于 2018-9-25 17:48:34 | 显示全部楼层 |阅读模式
我们在做ESD测试时,发现M3VPSS的ISS子系统,H3A模块中的数据(fullH3ABufAddr)会因静电而变的不正常。这个数据我们会用来计算sensor曝光时间和增益。它被静电打坏之后会导致曝光时间和增益计算错误,从而导致图像变暗或者变亮。在这个结构体中,错误的数据字段我用注释标注出来啦:

  1. typedef struct
  2. {
  3.     Task_Handle taskHndl;
  4.     Semaphore_Handle sem;

  5.     FVID2_Handle SensorHandle;
  6.     FVID2_Handle cameraVipHandle;

  7.     AEWB_VENDOR aewbVendor;
  8.     UInt32      aewbMode;
  9.         UInt32                aewbModeFlag;
  10.     UInt32      aewbPriority;

  11.     MSP_IspH3aCfgT           ispH3aCfg;
  12.     MSP_IspConfigProcessingT *pIssConfig;
  13.     MSP_COMPONENT_TYPE       *pIspHandle;
  14.     Void                     *pAlgHndl;

  15.     UInt32 h3aBufAddr[2];
  16.     UInt32 fullH3ABufAddr; //就是这个数据不正常!
  17.     UInt32 curH3aBufIdx;
  18.     UInt32 h3aBufSize;
  19.     Void   *pH3AMem;

  20.     UInt32 aewbNumWinH;
  21.     UInt32 aewbNumWinV;
  22.     UInt32 aewbNumPix;

  23.     volatile UInt32 exitFlag;

  24.     Int32 AutoIris;
  25.     Int32 saturation;
  26.     Int32 sharpness;
  27.     Int32 brightness;
  28.     Int32 contrast;
  29.     Int32 blc;
  30.     Int32 AWBMode;
  31.     Int32 AEMode;
  32.     Int32 Env;
  33.     Int32 Binning;
  34.     Int32 FrameRate;

  35.     UInt8  *dcc_Default_Param;
  36.     Int32  dcc_init_done;
  37.     UInt32 dccSize;
  38.     UInt32 AFValue;
  39.     UInt32 AEWBValue1;
  40.     UInt32 AEWBValue2;
  41. }Iss_2AObj;
复制代码
我发现H3A模块的H3A_PCR寄存器中有一个OVF位可以检测overflow,但是似乎没起作用,图像变暗或者变亮之后检测这个位始终是0。


有大佬知道这个怎么解决吗?
回复

使用道具 举报

0

主题

113

帖子

2015

积分

创龙

Rank: 8Rank: 8

积分
2015
发表于 2018-9-26 08:34:34 | 显示全部楼层
按我的理解,如果静电影响数据,较多的情况是影响传输通道的数据。你这里是具体到一个运算而非传输的结构体里的一个变量,只是单单这个变量异常?这很特别。如果单单这个变量,试试在这个变量前面添加一个无用的同类型变量,让你关心的这个往后移位。
补充,有没有可能是 ESD 测试时其他原因导致这个数据异常,而非直接的“打坏”?
回复 支持 反对

使用道具 举报

1

主题

4

帖子

1029

积分

金牌会员

Rank: 6Rank: 6

积分
1029
 楼主| 发表于 2018-9-26 08:44:35 | 显示全部楼层
本帖最后由 wx984490083 于 2018-9-26 08:46 编辑
Jackindata 发表于 2018-9-26 08:34
按我的理解,如果静电影响数据,较多的情况是影响传输通道的数据。你这里是具体到一个运算而非传输的结构体 ...

不是这个变量本身有问题,而是这个指针指向的数据有问题。这个BUFFER里面是H3A针对每一帧统计的数据,可以理解为一个小的像素矩阵,用于计算RGB、亮度的累加或平均值,每一帧都不太一样。有可能是时序被影响了,导致数据统计错误,但这个统计是由硬件来做的,时序不是很明白
回复 支持 反对

使用道具 举报

0

主题

113

帖子

2015

积分

创龙

Rank: 8Rank: 8

积分
2015
发表于 2018-9-26 09:05:53 | 显示全部楼层
嗯,理解。
一般来说,ESD 问题软件可做的事情很少。还是需要从硬件上去解决。增加屏蔽之类的,我不太了解。
另一方面是,看能否从软件上发现 ESD 造成的错误,比如数据校验和你前面说的 overflow 检测。
说起来这个 overflow,数据有一两位被静电翻转,不一定就导致 overflow 吧。
回复 支持 反对

使用道具 举报

0

主题

113

帖子

2015

积分

创龙

Rank: 8Rank: 8

积分
2015
发表于 2018-9-26 09:21:48 | 显示全部楼层
询问了硬件同事,以下是他的建议:
ESD是不会影响CPU内部的寄存器或者指针的。
怀疑是不是打静电时候,采集进来的视频数据是错误的,或者乱的。从而导致fullH3ABufAddr 不正常。

建议可以单独采集ESD时候的视频,保存,然后把那个视频拿出来看看是不是打ESD时候图像出错。也可以单独拿这个视频来做 他的这个运算,看看 fullH3ABufAddr 这个还会不会不正常
回复 支持 反对

使用道具 举报

1

主题

4

帖子

1029

积分

金牌会员

Rank: 6Rank: 6

积分
1029
 楼主| 发表于 2018-9-26 10:02:55 | 显示全部楼层
Jackindata 发表于 2018-9-26 09:21
询问了硬件同事,以下是他的建议:

我们测试的时候发现只是H3A模块的数据出了问题,采集的图像是正常的;当不使用H3A的数据计算和控制图像亮度时,打ESD的图像信号很稳定。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

1029

积分

金牌会员

Rank: 6Rank: 6

积分
1029
 楼主| 发表于 2018-9-27 11:15:30 | 显示全部楼层
Jackindata 发表于 2018-9-26 09:21
询问了硬件同事,以下是他的建议:

问题解决了,通过H3A或者ISP没办法检测到这种异常;我通过摄像头插拔的中断强行复位了ISS,打ESD时会被触发,效果还不错。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-3-28 16:52 , Processed in 0.048421 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表