- Android系统级深入开发
- 韩超 梁泉
- 336字
- 2020-08-26 21:43:42
5.4.5 摄像头的驱动程序
MSM的摄像头系统构成的方式为经典的Camera驱动+Sensor驱动方式。其驱动程序是基于Video for Linux2的摄像头驱动程序。
除了v4l2的共用部分以外,msm的主要文件是在drivers/media/video/msm/目录中。包含了msm_v4l2.c,msm_camera.c,s5k3e2fx.c,msm_vfe8x_proc.c等文件。
msm_camera.c是公用的库函数,创建出/dev/msm_camera中的各个设备文件:
# ls -l /dev/msm_camera crw-rw---- system system 249, 2 2010-01-13 18:39 frame0 crw-rw---- system system 249, 1 2010-01-13 18:39 config0 crw-rw---- system system 249, 0 2010-01-13 18:39 control0
这里包含了3个自定义的字符设备:frame0为帧数据设备,config0为配置设备,control0为控制设备。
include/media目录中的msm_camera.h,是MSM摄像头相关的头文件,其中定义了各种额外的ioctl命令。
msm_v4l2.c是v4l2驱动程序的实现文件,实现了标准的Video for Linux 2的驱动程序,它实际上是在调用msm_camera.c中内容的基础上实现的。
s5k3e2fx是摄像头传感器的驱动程序,platform_driver的名称为msm_camera_s5k3e2fx,这个名称和board-mahimahi.c中定义的platform_device相匹配。
s5k3e2fx是连接在i2c总线上的,其地址为0-0010,在sys文件系统中,可以看到如下信息:
# cat /sys/bus/i2c/devices/0-0010/name s5k3e2fx