【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

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

1、代码目录地址

drivers/media

2、v4l2框架

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

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

config VIDEO_S3C_CAMIFtristate "Samsung S3C24XX/S3C64XX SoC Camera Interface driver"depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_APIdepends on PMdepends on ARCH_S3C64XX || PLAT_S3C24XX || COMPILE_TESTdepends on HAS_DMAselect VIDEOBUF2_DMA_CONTIG---help---This is a v4l2 driver for s3c24xx and s3c64xx SoC series camerahost interface (CAMIF).To compile this driver as a module, choose M here: the modulewill 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 drivers3c-camif-objs := camif-core.o camif-capture.o camif-regs.oobj-$(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

 static const struct v4l2_file_operations s3c_camif_fops = {.owner          = THIS_MODULE,.open           = s3c_camif_open,.release        = s3c_camif_close,.poll           = s3c_camif_poll,.unlocked_ioctl = video_ioctl2,.mmap           = s3c_camif_mmap,};
static const struct vb2_ops s3c_camif_qops = {.queue_setup   = queue_setup,.buf_prepare     = buffer_prepare,.buf_queue    = buffer_queue,.wait_prepare   = vb2_ops_wait_prepare,.wait_finish    = vb2_ops_wait_finish,.start_streaming = start_streaming,.stop_streaming  = stop_streaming,
};
const struct vb2_mem_ops vb2_dma_contig_memops = {.alloc        = vb2_dc_alloc,.put        = vb2_dc_put,.get_dmabuf   = vb2_dc_get_dmabuf,.cookie        = vb2_dc_cookie,.vaddr     = vb2_dc_vaddr,.mmap       = vb2_dc_mmap,.get_userptr = vb2_dc_get_userptr,.put_userptr  = vb2_dc_put_userptr,.prepare  = vb2_dc_prepare,.finish       = vb2_dc_finish,.map_dmabuf    = vb2_dc_map_dmabuf,.unmap_dmabuf  = vb2_dc_unmap_dmabuf,.attach_dmabuf   = vb2_dc_attach_dmabuf,.detach_dmabuf  = vb2_dc_detach_dmabuf,.num_users  = vb2_dc_num_users,
};

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

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

linux驱动编写(摄像头驱动)相关推荐

  1. linux下的摄像头驱动怎么安装方法,linux下良田摄像头驱动怎么装?

    2011-07-28 回答 下载驱动精灵更新一下就行了 追问: 驱动精灵是在windows下运行的 看题目linux下 我下载了libland_10018_linux.tar.gz的驱动 怎么命令来装 ...

  2. Linux的uvc的摄像头驱动,[OpenWrt Wiki] Linux下的摄像头驱动UVC

    ==== Linux下的摄像头驱动UVC ==== 以下操作及配置均基于Logitech Quickcam Pro for Notebooks (2007)的摄像头.在Trunk开发版本的OpenWr ...

  3. Fedora Linux 安装USB摄像头驱动

    使用Kopete聊天时,少不了打开自己的摄像头,如何在Linux中安装驱动呢,跟我一起来3分钟全搞定,不要担心自己的摄像头没有驱动,在Linux体现视频聊天的快感吧! 下载万能驱动程序 Gspcav- ...

  4. linux摄像头内核驱动开发,怎么在Linux下开发摄像头驱动

    无根之木不活,无基之楼不立,无论是学习哪个领域知识,基础是重中之重. 针对学习linux驱动,我们来仔细谈谈: 个人认为C语言和数据结构就是重中之重!Linux系统最优秀的地方就在于内核.无论是进程调 ...

  5. Linux下IIC驱动编写(驱动adxl345传感器)

    基于IMX6ULL Mini开发板,硬件连接:SCL->43, SDA->42,CS->3.3V INT1->7 一.搭建基础框架 1.设置私有数据client,linux/i ...

  6. 【高分】ubuntu 、打开USB摄像头、Linux、USB摄像头驱动

    一.让系统可以识别到usb摄像头设备     打开终端,输入命令:ls /dev/v*,则可看到"/dev/video0",表示成功驱动摄像头. 如果没有的话,拔掉摄像头,重新插上 ...

  7. linux下安装dell SP2208WFP显示器摄像头驱动

    dell SP2208WFP显示器官方没有linux下的摄像头驱动,在网上找了找,发现一个办法可以解决,记录一下! 我现在的系统是ubuntu8.04,安装步骤如下: 1. install prere ...

  8. 法国老医生和他“驱动”的摄像头们

    查看( 861 ) / 评论( 8 ) #l@-J/V ~#l0应该感谢这个人:Michel Xhaard医生 爱好者博墅J+u%~A5`/o$v Michel Xhaard是一名法国医师(Physi ...

  9. Linux下的FrameBuffer驱动框架

    一.RGB LCD经典显示器件介绍: 1.LCD屏幕的重要属性参数: ① 分辨率:也就是屏幕上的像素点的个数: ② 像素格式:即单个像素点RGB三种颜色的表达方式,包括RGB888.ARGB8888和 ...

  10. 万能摄像头驱动最新版 还有万能摄像头驱动怎么用的教程

    万能摄像头驱动 适用大部分摄像头 万能摄像头驱动精灵2010 完整版_下载_摄像头驱动 万能摄像头驱动精灵2010 完整版_简介. 万能摄像头驱动精灵是2010年最新的摄像头驱动程序.合适目前所有的摄 ...

最新文章

  1. 伍六七带你学算法 入门篇-卡牌分组
  2. [NHibernate]事务
  3. 安卓手机运行git和python操作指南-有手机就能写代码了
  4. oracle pl sql 抛出例外
  5. 供应商寄售库存管理_【论文解读】物流联合外包下库存管理模式对供应链运作的影响...
  6. linux 查看emmc分区表_如何查看闪存类型?UFS与F2FS简易科普
  7. 24.Linux-Nand Flash驱动(分析MTD层并制作NAND驱动)
  8. poj2280--Amphiphilic Carbon Molecules(扫描线+极角排序+转换坐标)
  9. C++ wchar_t转char
  10. SpringBoot异常处理机制之自定义404、500错误提示页面
  11. 微信小程序模板文件的引入
  12. 微波雷达感应开关,雷达感应智能模块,照明节能环保技术应用
  13. 星际争霸2-数据编辑器-菜鸟入门
  14. 女孩子做项目管理的发展_我可以和孩子们一起做些有趣的技术项目吗?
  15. win10打不开开始菜单的解决方法
  16. 第三课--渐变(Gradients)
  17. 如果你是CEO,你打算给自己开多少工资?
  18. A Game of Thrones(103)
  19. 4、时间同步的ntp服务安装与配置。
  20. axWindowsMediaPlayer简单介绍

热门文章

  1. Vite 3.0 vs. Create React App:比较和迁移指南
  2. 关于CSS的学习内容一
  3. 七月算法机器学习笔记5 回归模型
  4. windows10 microsoft store 无网络问题
  5. 7.6 模型拟合及预测
  6. 电梯控制算法(1)单电梯场景——简单扫描算法
  7. 易创索讯-企业网络建站和小程序有什么区别
  8. STM32G431控制窗帘电机-软件协议接口视频演示
  9. 平板电脑可以做计算机作业吗,电子化作业多家长也犯愁 有学校师生人手一个平板电脑...
  10. FFF Network助力区块链应用创新与落地