linux驱动编写(摄像头驱动)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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驱动编写(摄像头驱动)相关推荐
- linux下的摄像头驱动怎么安装方法,linux下良田摄像头驱动怎么装?
2011-07-28 回答 下载驱动精灵更新一下就行了 追问: 驱动精灵是在windows下运行的 看题目linux下 我下载了libland_10018_linux.tar.gz的驱动 怎么命令来装 ...
- Linux的uvc的摄像头驱动,[OpenWrt Wiki] Linux下的摄像头驱动UVC
==== Linux下的摄像头驱动UVC ==== 以下操作及配置均基于Logitech Quickcam Pro for Notebooks (2007)的摄像头.在Trunk开发版本的OpenWr ...
- Fedora Linux 安装USB摄像头驱动
使用Kopete聊天时,少不了打开自己的摄像头,如何在Linux中安装驱动呢,跟我一起来3分钟全搞定,不要担心自己的摄像头没有驱动,在Linux体现视频聊天的快感吧! 下载万能驱动程序 Gspcav- ...
- linux摄像头内核驱动开发,怎么在Linux下开发摄像头驱动
无根之木不活,无基之楼不立,无论是学习哪个领域知识,基础是重中之重. 针对学习linux驱动,我们来仔细谈谈: 个人认为C语言和数据结构就是重中之重!Linux系统最优秀的地方就在于内核.无论是进程调 ...
- Linux下IIC驱动编写(驱动adxl345传感器)
基于IMX6ULL Mini开发板,硬件连接:SCL->43, SDA->42,CS->3.3V INT1->7 一.搭建基础框架 1.设置私有数据client,linux/i ...
- 【高分】ubuntu 、打开USB摄像头、Linux、USB摄像头驱动
一.让系统可以识别到usb摄像头设备 打开终端,输入命令:ls /dev/v*,则可看到"/dev/video0",表示成功驱动摄像头. 如果没有的话,拔掉摄像头,重新插上 ...
- linux下安装dell SP2208WFP显示器摄像头驱动
dell SP2208WFP显示器官方没有linux下的摄像头驱动,在网上找了找,发现一个办法可以解决,记录一下! 我现在的系统是ubuntu8.04,安装步骤如下: 1. install prere ...
- 法国老医生和他“驱动”的摄像头们
查看( 861 ) / 评论( 8 ) #l@-J/V ~#l0应该感谢这个人:Michel Xhaard医生 爱好者博墅J+u%~A5`/o$v Michel Xhaard是一名法国医师(Physi ...
- Linux下的FrameBuffer驱动框架
一.RGB LCD经典显示器件介绍: 1.LCD屏幕的重要属性参数: ① 分辨率:也就是屏幕上的像素点的个数: ② 像素格式:即单个像素点RGB三种颜色的表达方式,包括RGB888.ARGB8888和 ...
- 万能摄像头驱动最新版 还有万能摄像头驱动怎么用的教程
万能摄像头驱动 适用大部分摄像头 万能摄像头驱动精灵2010 完整版_下载_摄像头驱动 万能摄像头驱动精灵2010 完整版_简介. 万能摄像头驱动精灵是2010年最新的摄像头驱动程序.合适目前所有的摄 ...
最新文章
- 伍六七带你学算法 入门篇-卡牌分组
- [NHibernate]事务
- 安卓手机运行git和python操作指南-有手机就能写代码了
- oracle pl sql 抛出例外
- 供应商寄售库存管理_【论文解读】物流联合外包下库存管理模式对供应链运作的影响...
- linux 查看emmc分区表_如何查看闪存类型?UFS与F2FS简易科普
- 24.Linux-Nand Flash驱动(分析MTD层并制作NAND驱动)
- poj2280--Amphiphilic Carbon Molecules(扫描线+极角排序+转换坐标)
- C++ wchar_t转char
- SpringBoot异常处理机制之自定义404、500错误提示页面
- 微信小程序模板文件的引入
- 微波雷达感应开关,雷达感应智能模块,照明节能环保技术应用
- 星际争霸2-数据编辑器-菜鸟入门
- 女孩子做项目管理的发展_我可以和孩子们一起做些有趣的技术项目吗?
- win10打不开开始菜单的解决方法
- 第三课--渐变(Gradients)
- 如果你是CEO,你打算给自己开多少工资?
- A Game of Thrones(103)
- 4、时间同步的ntp服务安装与配置。
- axWindowsMediaPlayer简单介绍