各个平台camera驱动编写注意事项

各个平台camera驱动编写注意事项

camera驱动开发

1)另外注意,在imx6平台中,4.1.15kernel版本的代码,mxc的mxc_v4l2_capture.c camera主控制器和ov5642.c的sensor驱动之间,通过v4l2-int-device.h和v4l2-int-device.c中的master和slave注册attach连接的方式来关联,关联后,master(camera isp主控制器)通过ioctl来控制slave(sensor)。master和slave只有struct v4l2_int_ioctl_dest的ioctl的交互,这些交互包括init、power控制、g_fmt_cap、g_s_parm、g_ctrl等等。slave sensor驱动也仅仅是实现这些ioctl功能即可。
2)然而高通平台和mtk平台并没有使用v4l2-int-device.c的方式和sensor驱动通信。高通平台的msm isp以v4l2_subdev的形式出现,参见msm_isp.c公共文件和具体的msm_isp47.c版本。高通的msm_sensor.c以subdev的形式出现(见msm_sd_register()),然后各个具体的camera sensor则是以msm_sensor_platform_probe(struct platform_device, const void data),其实data是struct msm_sensor_ctrl_t类型来传入个msm_sensor.c作为回调。
3)mtk平台目前没有看到他是否使用了v4l2的框架。
虽然每个平台的接口有区别,要求你提供的驱动代码框架有一定区别,但是可以从平台中找个参考的驱动去实现。例如摄像头ov5640驱动,例如imx6的drivers/media/platform/mxc/capture/ov5640.c或者ov5640_mipi.c。例如参考ov5640_mipi.c来实现pr2000k_mipi.c驱动。
另外:一个视频捕获驱动对进入的视频流有两种工作模式: Preview模式(非overlay模式)和overlay模式。 别的地方叫法不同。overlay模式可能叫preview模式。

具体请参考我的免费的linux各种驱动开发课程如下:
https://edu.51cto.com/course/17138.html

另外我的相关培训视频请看:
欢迎观看我发布的各个课程: https://edu.51cto.com/lecturer/8896847.html

原文地址:https://blog.51cto.com/8906847/2367934

时间: 2024-10-07 13:13:05

各个平台camera驱动编写注意事项的相关文章

编写linux设备驱动的注意事项之一

编写linux设备驱动的注意事项之一 当然写驱动,你得清楚上层调用是否导致存在函数重入.什么执行context下(1. 中断.2. 软中断.3. tasklet(软中断的一种). 4. timer(基于软中断实现).5. hrtimer (软中断或硬中断环境下执行) .6. workqueue(也是kernel thread).7. kernel thread.8. 普通thread的内核态下)会访问此函数和此资源,需要什么样的"同步机制"保护. 你利用子系统(例如input子系统)的

MTK MT6735平台调试Camera驱动记录

Camera驱动相关文件: 1.ProjectConfig.mk   配置相关信息,定义主副摄像头.和其他信息 2.kd_imgsensor.h     定义Sensor_id 的信息文件, kernel和vendor下都需要有一份 3.kd_camera_hw.c  kd_camera_hw.h  控制Camera上下电,宏在kd_camera_hw.h中定义 4.kd_sensorlist.h    sensorlist.cpp  这两个文件中定义添加Sensor模组,两个文件中的顺序必须一

(转)FS_S5PC100平台上Linux Camera驱动开发详解(一) .

平台linuxstructlinux内核videocam 说明:        理解摄像头驱动需要四个前提:        1)摄像头基本的工作原理和S5PC100集成的Camera控制器的工作原理        2)platform_device和platform_driver工作原理        3)Linux内核V4L2驱动架构        4)Linux内核I2C驱动架构 1. 摄像头工作原理 OV9650/9655是CMOS接口的图像传感器芯片,可以感知外部的视觉信号并将其转换为数

请把Camera hold住 - Android高通平台调试Camera驱动全纪录

项目比较紧,3周内把一个带有外置ISP,MIPI数据通信,800万像素的camera从无驱动到实现客户全部需求. 1日 搭平台,建环境,编译内核,烧写代码. 我是一直在Window下搭个虚拟机登服务器搞开发的,对Linux系统环境实在无爱,每每一到项目刚开始要搭环境了,内心总有点排斥,过程就比较纠结,看来以后还是要搞个linux真机玩玩. 2日 编写camera驱动大致框架,配置GPIO,I2C,MIPI,电压,时钟等.很少能碰到FAE只给硬件手册,没有Linux和Android驱动的.因为是c

lLinux平台设备驱动 - 按键设备驱动

之前的一篇博客简单介绍了平台设备驱动模型(http://www.cnblogs.com/ape-ming/p/5107641.html),现在就根据那篇博客所列出来的模板把上一篇博客(http://www.cnblogs.com/ape-ming/p/5110996.html)的例程改成平台设备驱动模型. 一.平台设备根据模板首先要写一个平台设备加载函数: 1 /* 2 * 函数名 : button_device_init 3 * 函数功能: 设备加载 4 */ 5 6 static int _

Qualcomm平台camera调试移植入门

1  camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循Android的框架:即上层应用和HAL层交互,高通平台在HAL层里面实现自己的一套管理策略: 在kernel中实现sensor的底层驱动.但是,对于最核心的sensor端的底层设置.ISP效果相关等代码则是单独进行了抽离,放在了一个 daemon进程中进行管理: 图1 Qualcomm平台camera代码架构简图 由于高通把大部分具体的设置及参数放到了daemon进程中,所以在kernel部分只是进行了V4L2的

Linux Platform devices 平台设备驱动

设备总线驱动模型:http://blog.csdn.net/lizuobin2/article/details/51570196 本文主要参考:http://www.wowotech.net/device_model/platform_device.html platform平台设备驱动是基于设备总线驱动模型的,它只不过是将 device 进一步封装成为 platform_device,将 device_driver 进一步封装成为 platform_device_driver,前面已经分析过设

(转)FS_S5PC100平台上Linux Camera驱动开发详解(二)

4-3 摄像头的初始化流程及v4l2子设备驱动 这个问题弄清楚了以后下面就来看获得Camera信息以后如何做后续的处理: 在fimc_init_global调用结束之后我们获得了OV9650的信息,之后在probe函数里面就会继续调用一个函数:fimc_configure_subdev(). 这个函数的实现如下: /*        * Assign v4l2 device and subdev to fimc        * it is called per every fimc ctrl

平台总线驱动设计

平台总线驱动设计1.平台总线概述(总线驱动中最为重要的一个总线)平台总线(Platform bus)是linux2.6内核加入的一种虚拟总线,其 优势在于采用了总线的模型对设备与驱动进行了管理,这总线的模 型对设备与驱动进行了管理,这样提高了程序的可移植性.通过平台总线机制开发设备驱动的流程:定义platform_device->注册platform_device->定义 platform_drivre->注册platform_driver 屏台总线驱动与设备匹配机制:内核代 码/drv