andorid之摄像头驱动流程--MTK平台
来源:互联网 发布:新浪网络传真 编辑:程序博客网 时间:2024/05/16 16:07
camera成像原理:
景物通过镜头生产光学图像投射到sensor表面上,然后转为模拟电信号,经过数模变成数字图像信号,在经过DSP加工出来,然后在通过IO接口传输到CPU处理。 由于摄像头满足总线、驱动、设备模型,那么看看andorid是怎么去实现摄像头的流程。1. 注册Camera的platform平台设备
点击(此处)折叠或打开
- CAMERA_HW_i2C_init
- platform_driver_register(&g_stCAMERA_HW_Driver)
- static struct platform_driver g_stCAMERA_HW_Driver = {
- .probe = CAMERA_HW_probe,
- .remove = CAMERA_HW_remove,
- .suspend = CAMERA_HW_suspend,
- .resume = CAMERA_HW_resume,
- .driver = {
- .name = "image_sensor",
- .owner = THIS_MODULE,
- }
- };
点击(此处)折叠或打开
- platform_device_register(&sensor_dev);
- static struct platform_device sensor_dev = {
- .name = "image_sensor",
- .id = -1,
- };
点击(此处)折叠或打开
- static int CAMERA_HW_probe(struct platform_device *pdev)
- {
- return i2c_add_driver(&CAMERA_HW_i2c_driver);
- }
- struct i2c_driver CAMERA_HW_i2c_driver = {
- .probe = CAMERA_HW_i2c_probe,
- .remove = CAMERA_HW_i2c_remove,
- .detect = CAMERA_HW_i2c_detect,
- .driver.name = CAMERA_HW_DRVNAME,
- .id_table = CAMERA_HW_i2c_id,
- .address_data = &addr_data,
- };
点击(此处)折叠或打开
- static int __attach_adapter(struct device *dev, void *data)
- {
- struct i2c_adapter *adapter;
- struct i2c_driver *driver = data;
- if (dev->type != &i2c_adapter_type)
- return 0;
- adapter = to_i2c_adapter(dev);
- i2c_detect(adapter, driver);
- /* Legacy drivers scan i2c busses directly */
- if (driver->attach_adapter)
- driver->attach_adapter(adapter);
- return 0;
- }
这个函数最主要的是调用了CAMERA_HW_i2c_driver的detect函数,完成设备与驱动的匹配,最终会调用CAMERA_HW_i2c_probe。
点击(此处)折叠或打开
- static int CAMERA_HW_i2c_detect(struct i2c_client *client, int kind, struct i2c_board_info *info)
- {
- strcpy(info->type, CAMERA_HW_DRVNAME);
- return 0;
- }
在probe函数中最只做了一件事件RegisterCAMERA_HWCharDrv,这个函数会注册字符设备,注册设备节点,并在设备节点下创建类,重点的东西出现了
点击(此处)折叠或打开
- static const struct file_operations g_stCAMERA_HW_fops =
- {
- .owner = THIS_MODULE,
- .open = CAMERA_HW_Open,
- .release = CAMERA_HW_Release,
- #ifdef USE_NEW_IOCTL
- .unlocked_ioctl = CAMERA_HW_Ioctl
- #else
- .ioctl = CAMERA_HW_Ioctl
- #endif
- };
Open只是初始化一个原子变量留给系统调用,ioctrl才是核心,CAMERA_HW_Ioctl是上层文件操作底层硬件的方法。以上是andorid上摄像头i2c设备的过程。
1 0
- andorid之摄像头驱动流程--MTK平台
- andorid之摄像头驱动流程
- andorid之摄像头驱动流程
- WinCE平台USB摄像头驱动开发流程
- MTK平台camera AF马达驱动调试流程分析
- MTK平台camera AF马达驱动调试流程分析
- MTK平台下Battery驱动分析及充电流程
- MTK平台下Battery驱动分析及充电流程
- mtk lcm驱动流程
- 浅谈WinCE平台USB摄像头驱动开发流程
- 浅谈WinCE平台USB摄像头驱动开发流程
- 浅谈WinCE平台USB摄像头驱动开发流程
- 浅谈WinCE平台USB摄像头驱动开发流程
- [MTK 驱动开发]MTK CAMERA 流程
- mtk lcm驱动加载流程
- mtk lcm驱动加载流程
- mtk平台camera流程原理
- MTK平台 CTP流程解析
- 【android】使用SharedPreferences存取复杂数据
- message_lite.h
- Linux下Tomcat的安装配置
- repeated_field.h
- 协议模拟编程之ADSL模式下IP自动换
- andorid之摄像头驱动流程--MTK平台
- java基础学习-异常
- service.h
- Windows 7 Pro Vl & ENT(专业版vl及企业版)
- 我的vimrc
- 内存泄露
- MySQL 模拟Oracle邻接模型树形处理
- text_format.h
- PAT basic 1027(Python版)