摄像头驱动:
目录:Linux3.0 drivers\media\video
Linux3.14.29 drivers\media\i2c\soc_camera
CMOS摄像头驱动:
一、device
1.设备地址
从OV3640_CSP_11_SPEC.pdf P39可知道到
The device slave addresses are 0x78 for write (01111000)
and 0x79 for read (01111001)
I2C的地址: 8bit的地址=7bit设备地址+1bit的读/写控制位
因此该设备地址=0111100 =0x3C
二、driver
/*1.1 分配、设置一个i2c_driver*/
static struct i2c_driver cmos_ov3640_driver={
.driver={
.name = "cmos_ov3640",
.owner=THIS_MODULE,
},
.probe =cmos_ov3640_probe,
.remove =cmos_ov3640_remove,
.id_table=cmos_ov3640_id_table,
};
static int cmos_ov3640_drv_init(void)
{
/*1.2 注册*/
i2c_add_driver(&cmos_ov3640_driver);
return 0;
}
static const struct v4l2_file_operations cmos_ov3640_fops={
.owner =THIS_MODULE,
.open =cmos_ov3640_open,
.release =cmos_ov3640_close,
.unlocked_ioctl =video_ioctl2,
.read =cmos_ov3640_read,
};
static const struct v4l2_ioctl_ops cmos_ov3640_ioctl_ops={
// 表示它是一个摄像头设备
.vidioc_querycap = cmos_ov3640_vidioc_querycap,
/* 用于列举、获得、测试、设置摄像头的数据的格式 */
.vidioc_enum_fmt_vid_cap = cmos_ov3640_vidioc_enum_fmt_vid_cap,
.vidioc_g_fmt_vid_cap = cmos_ov3640_vidioc_g_fmt_vid_cap,
.vidioc_try_fmt_vid_cap = cmos_ov3640_vidioc_try_fmt_vid_cap,
.vidioc_s_fmt_vid_cap = cmos_ov3640_vidioc_s_fmt_vid_cap,
/* 缓冲区操作: 申请/查询/放入队列/取出队列 */
.vidioc_reqbufs = cmos_ov3640_vidioc_reqbufs,
/*说明:因为本次是通过读的方式来获得摄像头数据,因此
*查询/放入队列/取出队列这些函数将不需要
*/
#if 0
fs4412开发板学习笔记(七)
最新推荐文章于 2021-07-25 01:50:27 发布