linux摄像头驱动的拍照流程分析(针对展讯8810(ARM架构),android平台)

本文介绍了在Linux环境下,针对展讯SC8810(ARM架构)的摄像头驱动如何拍照。通过分析datasheet找到关键寄存器CAP_FRM_SIZE和CAP_IMG_DECI,并在kernel/drivers/media/目录下找到相关源文件,如sc8810_reg_isp.h,dcam_drv_sc8810.c和dcam_service_sc8810.c。驱动中使用dcam_drv_sc8810.c的ISP_DriverStart和ISP_DriverStop函数来启动和停止摄像头,同时dcam_service_sc8810.c中调用这些函数进行操作。
摘要由CSDN通过智能技术生成

 

首先,我们根据 展讯 SC8810的datasheet的摄像原理相关章节,找到了摄像相关寄存器的名字(CAP_FRM_SIZE、CAP_IMG_DECI),通过在驱动目录(kernel/drivers/media/),对这些名字的搜索,很幸运的可以找到相关源文件。

$ find kernel/drivers/media/ | xargs grep "CAP_FRM_SIZE"
kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:   union _CAP_FRM_SIZE_TAG
kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:           struct _CAP_FRM_SIZE_MAP
kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:   union _CAP_FRM_SIZE_TAG
kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:           struct _CAP_FRM_SIZE_MAP

$ find kernel/drivers/media/ | xargs grep "CAP_IMG_DECI" kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:   union _CAP_IMG_DECI_TAG
kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:           struct _CAP_IMG_DECI_MAP
kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:   union _CAP_IMG_DECI_TAG
kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:           struct _CAP_IMG_DECI_MAP

 

$ vim kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h  (这个文件里定义了摄像头相关的寄存器)

$ find kernel/drivers/media/ | xargs grep "sc8810_reg_isp.h"
kernel/drivers/media/video/sprd_dcam/sc8810/sc8810_reg_isp.h:* drivers/media/video/sprd_dcam/sc8810_reg_isp.h  (这个是源文件的头注释,实际上路径写错了。)
kernel//drivers/media/video/sprd_dcam/sc8810/dcam_drv_sc8810.h:#include "sc8810_reg_isp.h"
kernel/drivers/media/video/sprd_scale/scale_drv_sc8810.h:#include "../sprd_dcam/sc8810/sc8810_reg_isp.h"

我们看到 ,有 “dcam_drv_sc8810.h”和   “scale_drv_sc8810.h” 两个头文件又引用了 “sc8810_reg_isp.h”。

 

我们继续向下追踪:

$ find kernel/drivers/media/ | xargs grep "dcam_drv_sc8810.h"
kernel/drivers/media/video/sprd_dcam/sc8810/dcam_drv_sc8810.c:#include "dcam_drv_sc8810.h"
kernel/drivers/media/video/sprd_dcam/sc8810/dcam_service_sc8810.h:#include "dcam_drv_sc8810.h"
kernel/drivers/media/video/sprd_dcam/sc8810/dcam_drv_sc8810.h:* drivers/media/video/sprd_dcam/sc8810/dcam_drv_sc8810.h(这个是源文件的头注释。)

最后, “dcam_drv_sc8810.c”引用了  “dcam_drv_sc8810.h” ,所以,我们猜想 “dcam_drv_sc8810.c” 肯定是使用了这些寄存器进行编程的。

 

 

另外, “dcam_service_sc8810.h” 除了包含了 “dcam_drv_sc8810.h” 之外,自己还定义了一些枚举类型、结构体和宏,例如:

typedef struct dcam_init_param
{
    DCAM_MODE_TYPE_E mode;
    DCAM_DATA_FORMAT_E format;
    DCAM_YUV_PATTERN_E yuv_pattern;
    RGB_TYPE_E display_rgb_type;
    DCAM_SIZE_T0 input_size;
    DCAM_POLARITY_T polarity;
    DCAM_RECT_T0 input_rect;
    DCAM_RECT_T0 display_rect;
    DCAM_RECT_T0 encoder_rect;
    DCAM_ROTATION_E rotation;
    int skip_frame;
    uint32_t first_buf_addr;
    uint32_t first_u_buf_addr;
    uint32_t zoom_level;
    uint32_t zoom_multiple;
    uint32_t skip_flag;
    uint32_t is_Y_UV;

}DCAM_INIT_PARAM_T;


顺便追踪下,dcam_service的路径:

$ find kernel/drivers/media/ | xargs grep "dcam_service_sc8810.h"
kernel/drivers/media/video/sprd_dcam/sc8810/dcam_service_sc8810.c:#include &#

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
展讯平台是一种以展讯公司开发的芯片为核心的平台,该平台广泛应用于移动通信设备中。在使用展讯平台的设备时,需要通过USB接口与计算机进行连接,并安装相应的USB驱动程序。 USB驱动程序是一种用于操作系统与硬件之间进行通信的软件。展讯平台的USB驱动程序主要有以下几个作用: 1. 设备识别与通信:USB驱动程序能够让操作系统正确识别展讯平台设备,并建立起与设备之间的通信通道。通过该通道,计算机可以向设备发送指令,并接收设备返回的数据。 2. 数据传输控制:USB驱动程序还负责控制数据在计算机和展讯平台设备之间的传输。它确保数据的正确传输,并处理可能出现的错误或中断。同时,USB驱动程序还能够管理数据的缓冲区,以提高传输效率。 3. 设备配置与升级:USB驱动程序支持设备的配置和升级功能。通过USB接口,可以对展讯平台设备进行参数设置和固件更新,以满足不同的需求和修复潜在的问题。 4. 兼容性支持:USB驱动程序提供了对不同操作系统的支持,例如Windows、Linux和Mac OS等。它通过与操作系统的适配,使得展讯平台设备在不同环境下都能够正常工作。 总之,展讯平台USB驱动程序是一种重要的软件组件,它能够确保计算机与展讯平台设备之间的正常通信和数据传输。通过USB驱动程序的安装和配置,用户可以方便地使用和管理展讯平台设备,满足不同的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值