jluzc_SOC_Camera分析.docVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
jluzc_SOC_Camera分析

SOC_CAMERA学习整理 初稿,后续继续完善 jluzc 1、V4L2 soc-camera 子系统 soc-camera的作者之所以引入这个子系统,我想一个主要目的就是把camera驱动划分为camera host端,camera device端,这样同一个camera sensor驱动就可以方便的移植到多个camera host下,而无须做较多的改动。 术语 在阅读本文档前先明确几个术语: camera / camera device / camera sensor - 是一个video-camera sensor chip,可以连接到各种系统和接口,典型的使用i2c来控制和配置设备,使用并行或者串行总线来传输数据。 camera host - 一个接口,camera连接到它上面。存在于SoCs之上的特定的接口,比如PXA27X PXA3xx, SuperH, AVR32, i.MX27, i.MX31等等。我觉得i.MX51以及s5pv210物理上和这些host没有什么区别,只是二者的开发人员出于某种考虑而没有使用这个子系统实现。 camera host bus - camera host和camera之间的连接,可以是串行的或者并行的,保存着数据线和控制线,比如clock,水平和垂直同步信号。 soc-camera subsystem的目的 soc-camera 子系统在camera host驱动和camera sensor驱动间提供了统一的接口。soc camera子系统向上提供了V4L2接口,当前仅支持open, mmap, ioctl, mmap,不支持read 这个子系统连接SoC video capture接口和CMOS camera sensor chips,使得sensor驱动可以在其他的hosts驱动上复用。子系统在设计时也考虑到了多个camera host接口的存在,以及每个接口存在多个camera sensor,尽管在大部分情况下仅有一个camera sensor。 现存的驱动 在2.6.27-rc4中,主线内核有两个host 驱动:PXA27x的pxa_camera.c和SuperH SoCs的sh_mobile_ceu_camera.c,有四个sensor驱动:mt9m001.c,mt9v002.c以及一个通用的soc_camera_platform.c驱动。这个列表可能不是最新的,所以在你的源码树中查看,可能有更多的例子存在。 实际开发中,新的sensor驱动可以参照mt9m001.c和mt9v002.c这两个sensor驱动框架,根据项目所用的sensor稍加修改即可。 Camera host API 一个host camera driver使用soc_camera_host_register(struct soc_camera_host *)函数来注册。host object可以如下初始化 [cpp]?view plaincopy static?struct?soc_camera_host?pxa_soc_camera_host?=?{?? ????.drv_name???=?PXA_CAM_DRV_NAME,?? ????.ops????????=?pxa_soc_camera_host_ops,?? };??? 所有的方法都是通过struct soc_camera_host_ops [cpp]?view plaincopy static?struct?soc_camera_host_ops?pxa_soc_camera_host_ops?=?{?? ????.owner??????=?THIS_MODULE,?? ????.add????????=?pxa_camera_add_device,?? ????.remove?????=?pxa_camera_remove_device,?? ????.suspend????=?pxa_camera_suspend,?? ????.resume?????=?pxa_camera_resume,?? ????.set_fmt_cap????=?pxa_camera_set_fmt_cap,?? ????.try_fmt_cap????=?pxa_camera_try_fmt_cap,?? ????.init_videobuf??=?pxa_camera_init_videobuf,?? ????.reqbufs????=?pxa_camera_reqbufs,?? ????.poll???????=?pxa_camera_poll,?? ????.querycap???=?pxa_camera_querycap,?? ????.try_

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档