7162|14

81

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于TW9910使用摄像头驱动的问题 [复制链接]

各位兄弟,我最近写TW9910芯片的驱动,感觉和摄像头很类似,可以输出656 YUV422的图像(和我前面搞定的OV5642一样),所以就打算直接修改摄像头驱动去操纵这块芯片。上次OV5642是6410上的,这次是要在Samsung C100上。我拿到BSP后看了一下,C100的摄像头驱动变化蛮大的,原来就是一个Camera驱动,现在分成了CameraIF(Raw Camera Driver)和CameraFilter(Direct Show)。

我改了相应的驱动代码后,驱动可以正常加载,外面送进来的信号也都有。
问题是IST一直没有中断触发事件报上来,搞了很多天都没效果,各位兄弟给点建议,谢拉!!!

最新回复

职业+友情帮顶!将来要搞摄像头,看来挺难搞的!  详情 回复 发表于 2010-1-15 10:16
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

  1. DWORD CameraHal::ThreadRun()
  2. {
  3.     CAMIF_MSG((_T("[CAMIF] ++%s()=0x%x\r\n"), _T(__FUNCTION__), &CameraHal::ThreadRun));
  4.     while ( m_hCaptureEvent != NULL && !IsTerminated() )
  5.     {
  6.         DWORD dwCause;

  7.         RETAILMSG(CAMERA_HAL_DBG,(_T("%s() Waitfor Event: 0x%x\r\n"), _T(__FUNCTION__), m_hCaptureEvent));

  8.         dwCause = WaitForSingleObject( m_hCaptureEvent, m_dwISTTimeout);

  9.         if (  dwCause == WAIT_OBJECT_0 )
  10.         {
  11.             RETAILMSG(CAMERA_HAL_DBG,(_T("Event Catched from:0x%x(%d)\r\n"), m_hCaptureEvent, m_CamOperationMode));        

  12.             if(m_CamOperationMode == VIDEO_CAPTURE)
  13.             {
  14.                 if(m_dwSkipFrameCnt >= 1)
  15.                 {
  16.                     m_dwSkipFrameCnt = 2;
  17.                     pfnCallbacks.pfnCameraHandleVideoFrame(pfnCallbacks.dwCameraDriverContext);
  18.                 }
  19.                 else
  20.                 {
  21.                     m_dwSkipFrameCnt++;
  22.                 }
  23.             }
  24.             else if(m_CamOperationMode == STILL_CAPTURE)
  25.             {
  26.                 // This will be taken on LAST IRQ
  27.                 if(m_dwSkipFrameCnt >= 1)
  28.                 {
  29.                     m_dwSkipFrameCnt = 2;
  30.                     // Stop Capture

  31.                     if(m_oCSI_S)
  32.                     {
  33.                         RETAILMSG(CAMERA_HAL_MSG, (TEXT("MIPI Status ECC:%d, CRC:%d\r\n"),
  34.                                                                         m_oCSI_S->CheckPacketHeaderECC(),
  35.                                                                         m_oCSI_S->CheckPacketDataCRC()));
  36.                     }

  37.                     m_dwSkipFrameCnt = 0;

  38.                     SetEvent(m_hCaptureFinishEvent);
  39.                     RETAILMSG(1,(TEXT("C%d\r\n"), m_dwSkipFrameCnt));
  40.                 }
  41.                 else
  42.                 {
  43. #if USE_LASTIRQ_STILLCAPTURE                    
  44.                     m_regCAM->CIOCTRL |= (1<
  45.                     // In this case, Camera Capture is disabled, so Preview also will be stopped even when use different camera IP.
  46.                     m_regCAM->CIIMGCPT &= ~(CAM_GLOBAL_CAPTURE_ENABLE_BIT); // This will book stopping camera capture
  47.                     m_regCAM->CIOCTRL &= ~(1<
  48. #endif
  49.                     m_dwSkipFrameCnt++;

  50.                     RETAILMSG(1,(TEXT("L%d\r\n"), m_dwSkipFrameCnt));
  51.                 }
  52.             }            
  53.             else if(m_CamOperationMode == PREVIEW_CAPTURE)
  54.             {
  55.                 if(m_dwSkipFrameCnt >= 1)
  56.                 {
  57.                     m_dwSkipFrameCnt = 2;
  58.                     pfnCallbacks.pfnCameraHandlePreviewFrame(pfnCallbacks.dwCameraDriverContext);
  59.                 }
  60.                 else
  61.                 {
  62.                     m_dwSkipFrameCnt ++;
  63.                 }
  64.             }   

  65.             if(m_CamOperationMode == POST_PROCESSOR)
  66.             {
  67.                 SetEvent(m_hPostCmdDoneEvent);
  68.             }

  69.             // Clear Interrupt Pending
  70.             SET_BIT(m_regCAM->CIGCTRL, BP_CAM_IRQ_CLR);
  71.             SET_BIT(m_regCAM->CIOCTRL, BP_CAM_FRAME_END);
  72.             if(m_oCSI_S)
  73.                 m_oCSI_S->ClearInterrupt(ALLINT);            
  74.             InterruptDone(m_CamSysIntr);

  75.                         RETAILMSG(TRUE,(_T("%s(): PREVIEW INTR DOWN \r\n"), _T(__FUNCTION__)));
  76.         }
  77.         else
  78.         {
  79.             CAMIF_ERR((_T("[CAMIF:ERR] ++%s() : Exit %d, Cause %d\r\n"), _T(__FUNCTION__), GetLastError(), dwCause));
  80.         }
  81.     }
  82.     RETAILMSG(TRUE,(_T("%s(): Thread Finished"), _T(__FUNCTION__)));
  83.     return 1;
  84. }
复制代码
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
dwCause = WaitForSingleObject( m_hCaptureEvent, m_dwISTTimeout);
就一直等在这里了,没有事件过来
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

4
 
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

5
 
刚才Google到瑞萨的一个邮件,思路和我相同,也是通过改摄像头驱动。
唉,CE的驱动结构复杂了些
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
顶起来
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(中级)

7
 
引用 2 楼 lbqhope 的回复:
dwCause = WaitForSingleObject( m_hCaptureEvent, m_dwISTTimeout);
就一直等在这里了,没有事件过来

看看初始化部分
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用楼主 lbqhope 的回复:
各位兄弟,我最近写TW9910芯片的驱动,感觉和摄像头很类似,可以输出656 YUV422的图像(和我前面搞定的OV5642一样),所以就打算直接修改摄像头驱动去操纵这块芯片。上次OV5642是6410上的,这次是要在Samsung C100上。我拿到BSP后看了一下,C100的摄像头驱动变化蛮大的,原来就是一个Camera驱动,现在分成了CameraIF(Raw Camera Driver)和CameraFilter(Direct Show)。

我改了相应的驱动代码后,驱动可以正常加载,外面送进来的信号也都有。
问题是IST一直没有中断触发事件报上来,搞了很多天都没效果,各位兄弟给点建议,谢拉!!!


既然是IST中断触发事件m_hCaptureEvent,就应该先查下有没有捕捉到中断。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
真高级,搞A8了。呵呵。
我搞的是最简单的 LCD buffer。只能帮顶了。
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

10
 
A8是个什么样的东西?
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
C100基于Cortex-A8架构
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 7 楼 cfanlwn 的回复:
引用 2 楼 lbqhope 的回复:
dwCause = WaitForSingleObject( m_hCaptureEvent, m_dwISTTimeout);
就一直等在这里了,没有事件过来

看看初始化部分


对象,变量以及Buffer的初始化都是正常的。
如果按照C100文档摄像头模块的描述,中断应该是根据VSYNC信号产生的,我想问下,如何调试ISR?
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 9 楼 gooogleman 的回复:
真高级,搞A8了。呵呵。
我搞的是最简单的 LCD buffer。只能帮顶了。


谢拉兄弟!
顺便问下,ISR该如何调试?
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

14
 
引用 8 楼 ljdtj 的回复:
引用楼主 lbqhope 的回复:
各位兄弟,我最近写TW9910芯片的驱动,感觉和摄像头很类似,可以输出656 YUV422的图像(和我前面搞定的OV5642一样),所以就打算直接修改摄像头驱动去操纵这块芯片。上次OV5642是6410上的,这次是要在Samsung C100上。我拿到BSP后看了一下,C100的摄像头驱动变化蛮大的,原来就是一个Camera驱动,现在分成了CameraIF(Raw Camera Driver)和CameraFilter(Direct Show)。

我改了相应的驱动代码后,驱动可以正常加载,外面送进来的信号也都有。
问题是IST一直没有中断触发事件报上来,搞了很多天都没效果,各位兄弟给点建议,谢拉!!!


既然是IST中断触发事件m_hCaptureEvent,就应该先查下有没有捕捉到中断。


对头,我去看看
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

15
 
职业+友情帮顶!将来要搞摄像头,看来挺难搞的!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表