对于现代嵌入式设备,特别是手机来说,摄像头是很重要的一个设备。很多同学买手机,一看颜值,第二就看摄像头拍照如何。所以,从某个角度来说,摄像头是各个厂家主打的应用功能。那么,linux是如何支持摄像头的,我们可以来看一下?

1、代码目录地址

drivers/media

2、v4l2框架

目前linux上的camera都是按照v4l2框架来设计,它的地址位于drivers/media/v4l2-core

3、查看三星soc是如何支持camera的,可以查看drviers/media/platform/Kconfig

config VIDEO_S3C_CAMIF

tristate "Samsung S3C24XX/S3C64XX SoC Camera Interface driver"

depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API

depends on PM

depends on ARCH_S3C64XX || PLAT_S3C24XX || COMPILE_TEST

depends on HAS_DMA

select VIDEOBUF2_DMA_CONTIG

---help---

This is a v4l2 driver for s3c24xx and s3c64xx SoC series camera

host interface (CAMIF).

To compile this driver as a module, choose M here: the module

will be called s3c-camif.

4、从Kconfig确认除了VIDEO_V4L2和VIDEO_V4L2_SUBDEV_API之外,它只依赖自己的目录

obj-$(CONFIG_VIDEO_S3C_CAMIF) += s3c-camif/

5、继续查看s3c-camif目录的代码结构

# Makefile for s3c244x/s3c64xx CAMIF driver

s3c-camif-objs := camif-core.o camif-capture.o camif-regs.o

obj-$(CONFIG_VIDEO_S3C_CAMIF) += s3c-camif.o

6、Makefile说的很清楚,它主要依赖camif-*.c三个文件

通过阅读,确认camif-core.c是注册文件

camif-regs.c是寄存器读写文件

camif-capture.c是主要的操作文件、接口文件

7、确认v4l2的函数操作接口

static const struct v4l2_ioctl_ops s3c_camif_ioctl_ops = {

.vidioc_querycap = s3c_camif_vidioc_querycap,

.vidioc_enum_input = s3c_camif_vidioc_enum_input,

.vidioc_g_input = s3c_camif_vidioc_g_input,

.vidioc_s_input = s3c_camif_vidioc_s_input,

.vidioc_enum_fmt_vid_cap = s3c_camif_vidioc_enum_fmt,

.vidioc_try_fmt_vid_cap = s3c_camif_vidioc_try_fmt,

.vidioc_s_fmt_vid_cap = s3c_camif_vidioc_s_fmt,

.vidioc_g_fmt_vid_cap = s3c_camif_vidioc_g_fmt,

.vidioc_g_selection = s3c_camif_g_selection,

.vidioc_s_selection = s3c_camif_s_selection,

.vidioc_reqbufs = s3c_camif_reqbufs,

.vidioc_querybuf = s3c_camif_querybuf,

.vidioc_prepare_buf = s3c_camif_prepare_buf,

.vidioc_create_bufs = s3c_camif_create_bufs,

.vidioc_qbuf = s3c_camif_qbuf,

.vidioc_dqbuf = s3c_camif_dqbuf,

.vidioc_streamon = s3c_camif_streamon,

.vidioc_streamoff = s3c_camif_streamoff,

.vidioc_subscribe_event = v4l2_ctrl_subscribe_event,

.vidioc_unsubscribe_event = v4l2_event_unsubscribe,

.vidioc_log_status = v4l2_ctrl_log_status,

};

and

649 static const struct v4l2_file_operations s3c_camif_fops = {

650 .owner = THIS_MODULE,

651 .open = s3c_camif_open,

652 .release = s3c_camif_close,

653 .poll = s3c_camif_poll,

654 .unlocked_ioctl = video_ioctl2,

655 .mmap = s3c_camif_mmap,

656 };

8、和sd一样,接口比较简单,但是要深入了解camera,v4l2是绕不过去的。

这一点和sd卡、usb、asoc是一样的。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

linux内核驱动摄像头图片,详解linux 摄像头驱动编写相关推荐

  1. Linux内核中的vfs,详解linux内核VFS

    虚拟文件系统(VFS) 在我看来, "虚拟"二字主要有两层含义: 1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口 ...

  2. Linux内核线程kernel thread详解--Linux进程的管理与调度(十)【转】

    转自:https://blog.csdn.net/gatieme/article/details/51589205 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:/ ...

  3. Linux内核线程kernel thread详解--Linux进程的管理与调度

    内核线程 为什么需要内核线程 Linux内核可以看作一个服务进程(管理软硬件资源,响应用户进程的种种合理以及不合理的请求). 内核需要多个执行流并行,为了防止可能的阻塞,支持多线程是必要的. 内核线程 ...

  4. linux内核管道pipe实现详解

    linux内核管道pipe实现详解 (文件系统暂时不是很了解,文件系统部分暂时不做解释,此文仅解释关键流程,系统调用部分请参考前面已经发布的文章,这里不做展开) 1.管道系统调用(SyS_pipe) ...

  5. Linux初始化内存盘黑屏,详解linux内存磁盘初始化技术.doc

    详解linux内存磁盘初始化技术 详解linux内存磁盘初始化技术 /5502266.html 关键词: HYPERLINK "/tag/initrd" \n _blankinit ...

  6. linux下sort命令使用详解---linux将文本文件内容加以排序命令

    转载自:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274592.html linux下sort命令使用详解---linux将文本文件内容加以排 ...

  7. linux下测试ftp传输,linux下ftp命令使用详解---linux文件传输ftp命令

    linux下ftp命令使用详解---linux文件传输ftp命令 上一篇 / 下一篇  2010-12-18 09:15:35 / 个人分类:Linux ftp(file transfer proto ...

  8. linux 服务器拦截http请求,详解Linux屏蔽浏览器上http请求警报的方法

    众所周知,在Linux系统中浏览器的页面上是不允许出现http请求的,如果出现了http请求就会发生错误,并且Linux系统会向用户发出警报.下面,U大侠小编就给大家详解Linux屏蔽浏览器上http ...

  9. linux中用zip压缩文件,详解Linux中zip压缩和unzip解压缩命令及使用详解

    下面给大家介绍下Linux中zip压缩和unzip解压缩命令详解 1.把/home目录下面的mydata目录压缩为mydata.zip zip -r mydata.zip mydata #压缩myda ...

  10. linux用户密码管理,Linux_详解Linux中的用户密码管理命令passwd和change,passwd 修改用户密码参数 nbsp - phpStudy...

    详解Linux中的用户密码管理命令passwd和change passwd 修改用户密码 参数 -k 保持未过期身份验证令牌 -l 关闭账号密码.效果相当于usermod -L,只有root才有权使用 ...

最新文章

  1. 非常精美的纸艺术作品欣赏(上篇)
  2. MIR6校验时移动平均价为负的原因及解决
  3. 【译】XNA Shader 程序设计(二)
  4. apache2.2:使一个目录允许执行cgi程序
  5. how to add user into sudoers file?
  6. linux添加phoenix引导,在linux怎么执行phoenix 脚本
  7. accessors 作用_@Accessors介绍配置getter和setter
  8. 商品分析是什么?该怎么做(入门版)
  9. c语言给数组整体赋值,c语言给数组赋值有哪些形式
  10. Unity 贴图Meta文件的探究
  11. 公司网络上网慢排查项
  12. FL Studio的音频录制插件Edison
  13. L1-054 福到了 (15分)
  14. SPA项目开发之首页导航+左侧菜单
  15. iphone换android手机铃声,在iPhone中换个自定义铃声要11个步骤 正常人受不了
  16. 阿里云服务器不能发邮件的解决方法
  17. Please don't stop rua 233333
  18. MySQL实现按距离范围查找
  19. 12生肖 c语言设计,语言十二生肖教案
  20. d调 简谱 一次就好

热门文章

  1. C++ 常用术语(后续补充)
  2. 非Json字符串转map对象
  3. 哈尔滨冰景:映衬时代主题
  4. iframe和response.sendRedirect()跳转到父页面的问题
  5. 关于Idea模块化部署web项目,Web Resource Directories作用
  6. WF3设计时性能II
  7. 解决 Error:No suitable device found: no device found for connection System eth0
  8. MongoDB整理笔记のGUI操作
  9. c# implicit explicit关键字(隐式和显式数据类型转换)
  10. 随手记--计算机网络原理