[camera摄像头驱动]usb2.0 camera 摄像头驱动
[camera摄像头驱动]usb2.0 camera 摄像头
驱动
篇一 : usb2.0 camera 摄像头驱动
免驱摄像头,系统是XP SP2的吗,要SP3版本才能完全支持免驱视频
如果是SP2的系统可能要安装操作系统补丁。也可以先到设备管理器里,右键点击黄色叹号的USB 2.0 camera 选择卸载,然后重新插下USB摄像头,安装驱动试一下篇二 : android camera摄像头驱动
android camera:camera模组CMM介绍
关键词:android camera CMM 模组 camera参数
平台信息:
内核:linux
系统:android
平台:S5PV310
下载:常用摄像头规格书 :bf3703 30W、gc0308 30W、ov7670、gt2005 200W、gt2015 200W、NT99250 200W、s5k5ba 200W、s5k4ba
新项目开案,代码他们还没给得到,三星那边办事流程就是多,烦人。看看代码,把前一段时间工作的内容整理下,发出来。一方面有相同问题的“同学”可以看下,说不定问题就解决了;再一方面自己
工作方面记录吧,整个流程整理出来,加深自己的印象,技术还得提高呀。这样利人利己的事多做点好……“为人民服务~”
这篇比较基础,做为科普知识看一下。
android camera:camera模组CMM介绍
android camera:摄像头工作原理、s5PV310 摄像头接口
android camera:camera V4L2 FIMC
android camera:camera 驱动 GT2005
一、摄像头模组介绍:
1、camera特写
摄像头模组,全称CameraCompact Module,以下简写为CCM,是影像捕捉至关重要的电子器件。先来张特写,各种样子的都有,不过我前一段时间调试那个有点丑。
2、摄像头工作原理、camera的组成各组件的作用
想完全的去理解,还得去深入,如果是代码我们就逐步
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
,模组的话我们就把它分解开来,看他到底是怎么工作的。
、CCM 包含四大件:镜头、传感器、软板、图像处理芯片。决定一个摄像头好坏的重要部件是:镜头、图像处理芯片、传感器。CCM的关键技术为:光学
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
技术、非球面镜制作技术、光学镀膜技术。 镜头是相机的灵魂,镜头对成像的效果有很重要的作用,是利用透镜的折射原理,景物光线通过镜头,在聚焦平面上形成清晰的
影像,通过感光材料CMOS或CCD感光器记录景物的影像。镜头厂家主要集中在台湾、日本和韩国,镜头这种光学技术含量高的产业有比较高的门槛,业内比较知名的企业如富士精机、柯尼卡美能达、大立光、Enplas等
传感器是CCM的核心模块,目前广泛使用的有两种:一种是广泛使用的CCD元件;另一种是CMOS器件。
电荷藕合器件图像传感器CCD,它使用一种高感光度的半导体材料制成,能把光线转变成电荷,通过模数转换器芯片转换成数字信号。CCD由许多感光单位组成,通常以百万像素为单位。当CCD
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
面受到光线照射时,每个感光单位会将电荷反映在组件上,所有的感光单位所产生的信号加在一起,就构成了一幅完整的画面。CCD传感器模块以日本厂商为主导,全球规模市场有90%以上被日本厂商垄断,以索尼、松下、夏普为龙头。
互补性氧化金属半导体CMOS主要是利用硅和锗这两种元素所做成的半导体,使其在CMOS上共存着带N和 P级的半导体,这两个互补效应所产生的电流即可被处理芯片纪录和解读成影像。CMOS 传感器主要美国、台湾和韩国为主导,主要生产厂家有美国 OmniVision、Agilent、Micron,台湾的锐像、原相、泰视等,韩国的三星、现代。
图像处理芯片是CCM的重要组成部分,它的作用是将感光芯片获得的数据及时快速地传递中央处理器并刷新感光芯片,因此DSP芯片的好坏,直接影响画面品质。
FPC柔性电路板: 简称”软板”, 又称”柔性线路板”,连接芯片和手机。起到电信号传输作用。
3、camera模组的装配方式
、定焦模组装配图
CCM分为定焦模组和自动变焦模组,其中定焦模组主要由镜头、镜座、感光集成电路、软性线路板、补强和钢片装配而成,其装配图如下:
、自动变焦模组装配图
以前我不知道手机上的光学变焦是怎么会事,以为那些都是忽悠人的,看这个图这下明白了,如果你也不知道,看下这个图,原来里面有个音圈马达,这个只有高像素的模组才有,这个我们不用管,知道怎么光学变焦就可以了。、3D模组
传说中的3D是怎么会事,多几台摄像机拍摄。、图像解析度/分辨率
、图像格式
RGB24,420是目前最常用的两种图像格式。[]
RGB24:表示R、G、B三种颜色各8bit,最多可表现256级浓淡,从而可以再现256*256*256种颜色。
I420:YUV格式之一。其它格式有:RGB565,RGB444,YUV4:2:2等。
、自动白平衡调整
定义:要求在不同色温环境下,照白色的物体,屏幕中的图像应也是白色的。色温表示光谱成份,光的颜色。色温低表示长波光成分多。当色温改变时,光源中三基色的比例会发生变化,需要调节三基色的比例来达到彩色的平衡,这就是白平衡调节的实际。
、图像压缩方式
JPEG:静态图像压缩方式。一种有损图像的压缩方式。压缩比越大,图像质量也就越差。当图像精度要求不高存储空间有限时,可以选择这种格式。目前大部分数码相机都使用JPEG格式。
、彩色深度
反映对色彩的识别能力和成像的色彩表现能力,实际就是A/D转换器的量化精度,是指将信号分成多少个等级。常用色彩位数表示。彩色深度越高,获得的影像色彩就越艳丽动人。现在市场上的摄像头均已达到24位,有的甚至是32位
、图像噪音
指的是图像中的杂点干挠。表现为图像中有固定的彩色杂点。
、视角
与人的眼睛成像是相成原理,简单说就是成像范围。
、输出/输入接口
串行接口:传输速率慢,为115kbit/s
并行接口:速率可以达到1Mbit/s
红外接口:速率也是115kbit/s,一般笔记本电脑有此接口
通用串行总线USB:即插即用的接口
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
,支持热插拔。USB1.1速率可达12Mbit/s,USB2.0可达480Mbit/s
IEEE1394接口:其传输速率可达100M~400Mbit/s
今天有点晚了,后继续分析camera sensor接口、s5pv310 CAMIF接口、V4L2、FIMC、和我们最终的sensor
驱动。
android camera:camera V4L2 FIMC
android camera:camera 驱动 GT2005
下载:常用摄像头规格书 :bf3703 30W、gc0308 30W、ov7670、gt2005 200W、gt2015 200W、NT99250 200W、s5k5ba 200W、s5k4ba
一、摄像头工作原理
上一篇我们讲了摄像头模组的组成,工作原理,做为一种了解。下面我们析摄像头从寄存器角度是怎么工作的。如何阅读摄像头规格书。
规格书,也就是一个器件所有的说明,精确到器件每一个细节,软件关心的寄存器、硬件关心的电气特性、封装等等。单单驱动方面,我们只看对我们有用的方面就可以了,没必要全部看完。主要这样资料全都是鸟语,全部看完一方面时间上会用的比较多,找到关键的地方就行了。
1、camera的总体示意图如下:控制部分为摄像头上电、IIC控制接口,数据输出为摄像头拍摄的图传到主控芯片,所有要有data、行场同步和时钟号。GT2005/GT2015是CMOS接口的图像传感器芯片,可以感知外部的视觉信号并将其转换为数字信号并输出。
我们需要通过MCLK给摄像头提供时钟,RESET是复位线,PWDN在摄像头工作时应该始终为低。,]PCLK是像素时钟,HREF是行参考信号,VSYNC是场同步信号。一旦给摄像头提供了时钟,并且复位摄像头,摄像头就开始工作了,通过HREF,VSYNC和PCLK同步传输数字图像信号。数据是通过D0~D7这八根数据线并行送出的。
、
Pixel Array
GT2005阵列大小为 1268 列、1248 行,有效像素为 1616 列, 1216 行。也就是说摄像头为1600X1200的时候,像素点要多于这个,去除边缘一部分,保证图像质量吧。
、IIC 这个不用说了,摄像头寄存器初始化的数据都从这里传输的,所有的IIC器件都一样的工作,来张图吧,后面做详细分析;
下面这一部分在调试驱动的过程中比较重要了:
、MCLK
电子元件工作都得要个时钟吧,摄像头要工作,这个就是我们所要的时钟,在主控制芯片提供,这个时钟一定要有,要不然摄像头
不会工作的。、上下电时序,这个要接规格书上来,注间
PWDN
、RESETB这两个脚,不同的摄像头不太一样,这个图是上电时序,上电时参考一下,知道在那里看就行;
PCLK \D1~D7
摄像头得到的数据要传出来吧,要有数据,当然数据出来要有时钟和同步信号了,看下它的时序,和LCD显示的时序一样,道理是一样的:
、主要的寄存器:分辨率、YUV顺序、X轴、Y轴镜相、翻转
以上工作完成后,也许还有一些问题,分辨率太小; YUV顺序不对图像不对; XY图像方向。[)这些工作完成后,如果还有什么细节的问题,如果你想花时间,看规格书里面的寄存器可以解决的,如果不想看,找模组厂的FAE,他们专业的,很快会帮你搞定。
、摄像头的硬件接口
二、
S5pv310上Camera主控芯片上的硬件接口
,、CAMIF Camera Interface
先看一下摄像头接口框图:
、摄像头接口的主要属性:
a、支持多种输入接口:
DMA 模式;
MIPI 模式;
ITU-R BT 601/ 656/ 709模式;
Direct FIFO 模式;
b、支持多种输出模式:
DMA 模式;
Direct FIFO 模式;
c、支持数码变焦Digital Zoom In capability;
d、支持多摄像头输入;
e、支持视频同步信号极性可编程控制;
f、支持最大输入分辨率为8192X8192;
g、支持图像翻转;
h、支持多种图片格式;
i、支持捕获帧控制;
j、支持的图像特效。,支持ITUR BT-601-605标准、AMX接口、
MIPI接口
MIPI 、ITU、AMX
、ITU国际电信联盟无线电通信部门ITU-RRadiocommunication
Sector of ITU 简称ITU-RITU-R BT.60116位数据传输;Y、U、V信
号同时传输,是并行数据,行场同步单独输出。,)
ITU-R BT.6568/10位数据传输;不需要同步信号;串行数据传输;传输速率是601的2倍;先传Y,后传UV。行场同步信号嵌入在数据流中。
、MIPI是MobileIndustry Processor Interface的缩写 MIPI 规范:Camera工作组:MIPI Camera Serial Interface 1.0specification .Camera
Serial Interface 2 v1.0
、AMX是一种总线
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
,该协议是ARM公司提出的AMBA3.0协议中最重要的部分,是一种面向高性能、高带宽、低延迟的片内总线。
3、接口信息
FIMC信号定义如下所示
通过CAM_MCLK给摄像头提供时钟,RST是复位线,PWDN在摄像头工作时应该始终为低。HREF是行参考信号,PCLK是像素时钟,VSYNC是场同步信号。一旦给摄像头提供了时钟,并且复位摄像头,摄像头就开始工作了,通过HREF,PCLK和VSYNC同步传输数字图像信号。数据是通过DATA0~DATA7这八根数据线并行送出的。
4、不同接口模式的工作时序
ITU-R BT 656输入时序图,这种方式下同步信号已经内嵌到视频数据中了,因此不需要额外的行和帧同步信号。
android camera:camera模组CMM介绍
android camera:摄像头工作原理、s5PV310 摄像头接口 android camera:camera V4L2 FIMC
android camera:camera 驱动 GT2005
下载:常用摄像头规格书 :bf3703 30W、gc0308 30W、ov7670、gt2005 200W、gt2015 200W、NT99250 200W、s5k5ba 200W
、s5k4ba
前面两篇说的有点多了,不过多了解点东西也挺好的,遇到问题时可以有更多的思路,真正驱动是从这一块开始。一般BSP的camera都是完好的,我们只用关心驱动这些就可以了。
1( V4L2
1)简介
在Linux中,摄像头方面的标准化程度比较高,这个标准就是V4L2驱动程序,这也是业界比较公认的方式。 打开设备,获得文件描述符;
2) 设置图片格式;
3) 分配缓冲区;
4) 启动采集过程,读取数据;
5) 停止采集,关闭设备。
2)数据结构
V4L2的主要数据结构是video_device,定义在v4l2_dev.h中:
[cpp] view plaincopy
1. struct video_device
2. {
3. /* device ops */
4. const struct v4l2_file_operations *fops; /*接口函数指针*/ 5.
6. /* sysfs */
7. struct device dev; /* v4l 设备结构 */
8. struct cdev *cdev; /* 字符设备结构*/
9.
10. /* Set either parent or v4l2_dev if your driver uses v4l2_device
*/
11. struct device *parent; /* 设备父指针 */
12. struct v4l2_device *v4l2_dev; /* v4l2设备指针*/
13.
14. /* device info */
15. char name[32]; /*设备名称*/
16. int vfl_type;
17. /* „minor? is set to -1 if the registration failed */
18. int minor; /*次设备号*/
19. u16 num;
20. /* use bitops to set/clear/test flags */
21. unsigned long flags;
22. /* attribute to differentiate multiple indices on one physical
device */
23. int index;
24.
25. /* V4L2 file handles */
26. spinlock_t fh_lock; /* Lock for all v4l2_fhs */
27. struct list_head fh_list; /* List of struct v4l2_fh */
28.
29. int debug; /* debug 级别*/
30.
31. /* Video 标准变量 */
32. v4l2_std_id tvnorms; /* Supported tv norms */
33. v4l2_std_id current_norm; /* Current tvnorm */
34.
35. /* 回调函数 */
36. void ;
37.
38. /* ioctl 回调函数 */
39. const struct v4l2_ioctl_ops *ioctl_ops;
40. };
主要接口函数有:
intvideo_register_device;
static intv4l2_ioctl;
2. FIMC
1)简介
FIMC这个模块不仅仅是一个摄像头的控制接口,它还承担着
V4L2的output功能和overlay的功能。
2. {
3. int i = 0;
4.
5. /* CAM A port : PCLK, VSYNC, HREF, DATA[0-4] */
6. for {
7. s3c_gpio_cfgpin, S3C_GPIO_SFN);
8. s3c_gpio_setpull, S3C_GPIO_PULL_NONE);
9. }
10. /* CAM A port : DATA[5-7], CLKOUT, FIELD */
11. for {
12. s3c_gpio_cfgpin, S3C_GPIO_SFN);
13. s3c_gpio_setpull, S3C_GPIO_PULL_NONE);
14. }
15. /* CAM B port : DATA[0-7] */
16. for {
17. s3c_gpio_cfgpin, S3C_GPIO_SFN);
18. s3c_gpio_setpull, S3C_GPIO_PULL_NONE);
19. }
20. /* CAM B port : PCLK, VSYNC, HREF, FIELD, CLCKOUT
*/
21. for {
22. s3c_gpio_cfgpin, S3C_GPIO_SFN);
23. s3c_gpio_setpull, S3C_GPIO_PULL_NONE);
24. }
25. }
4)接口函数
FIMC的主要回调函数如下,实现在fimc_v4l2.c中:
[cpp] view plaincopy 1. onst struct v4l2_ioctl_ops fimc_v4l2_ops
= {
2. .vidioc_querycap = fimc_querycap,
3. .vidioc_reqbufs = fimc_reqbufs,
4. .vidioc_querybuf = fimc_querybuf,
5. .vidioc_g_ctrl = fimc_g_ctrl,
6. .vidioc_s_ctrl = fimc_s_ctrl,
7. .vidioc_s_ext_ctrls = fimc_s_ext_ctrls,
8. .vidioc_cropcap = fimc_cropcap,
9. .vidioc_g_crop = fimc_g_crop,
10. .vidioc_s_crop = fimc_s_crop,
11. .vidioc_streamon = fimc_streamon,
12. .vidioc_streamoff = fimc_streamoff,
13. .vidioc_qbuf = fimc_qbuf,
14. .vidioc_dqbuf = fimc_dqbuf,
15. .vidioc_enum_fmt_vid_cap = fimc_enum_fmt_vid_capture,
16. .vidioc_g_fmt_vid_cap = fimc_g_fmt_vid_capture,
17. .vidioc_s_fmt_vid_cap = fimc_s_fmt_vid_capture,
18. .vidioc_try_fmt_vid_cap = fimc_try_fmt_vid_capture,
19. .vidioc_enum_input = fimc_enum_input,
20. .vidioc_g_input = fimc_g_input,
21. .vidioc_s_input = fimc_s_input,
22. .vidioc_g_parm = fimc_g_parm,
23. .vidioc_s_parm = fimc_s_parm,
24. .vidioc_queryctrl = fimc_queryctrl,
25. .vidioc_querymenu = fimc_querymenu,
26. .vidioc_g_fmt_vid_out = fimc_g_fmt_vid_out,
27. .vidioc_s_fmt_vid_out = fimc_s_fmt_vid_out,
28. .vidioc_try_fmt_vid_out = fimc_try_fmt_vid_out,
29. .vidioc_g_fbuf = fimc_g_fbuf,
30. .vidioc_s_fbuf = fimc_s_fbuf,
31. .vidioc_try_fmt_vid_overlay = fimc_try_fmt_overlay,
32. .vidioc_g_fmt_vid_overlay = fimc_g_fmt_vid_overlay, 33. .vidioc_s_fmt_vid_overlay = fimc_s_fmt_vid_overlay,
34. };
对于寄存器的操作,实现都在fimc_regs.c文件中,如
[cpp] view plaincopy 1. int fimc_hwset_camera_source
2. {
3. struct s3c_platform_camera *cam = ctrl->cam;
4. u32 cfg = 0;
5.
6. cfg |= S3C_CISRCFMT_ITU601_8BIT;
7. cfg |= cam->order422;
8.
9. if
10. cfg |= cam->fmt;
11.
12. cfg |= S3C_CISRCFMT_SOURCEHSIZE;
13. cfg |= S3C_CISRCFMT_SOURCEVSIZE;
14.
15. writel;
16.
17. return 0;
18. }
19.
20. int fimc_hwset_enable_irq
21. {
22. u32 cfg = readl;
23.
24. cfg &= ~;
25. cfg |= S3C_CIGCTRL_IRQ_ENABLE;
26.
27. if
28. cfg |= S3C_CIGCTRL_IRQ_OVFEN;
29.
30. if
31. cfg |= S3C_CIGCTRL_IRQ_LEVEL;
32.
33. writel;
34.
35. return 0;
36. }
关键词:android camera CMM 模组 camera参数 GT2005 摄像头常见问题
平台信息:
内核:linux
系统:android
平台:S5PV310
android camera:camera模组CMM介绍
android camera:摄像头工作原理、s5PV310 摄像头接口
android camera:camera V4L2 FIMC
android camera:camera 驱动 GT2005
摄像头主要参数:
1、MCLK 24MHz;
2、PCLK 48~52MHz~;
3、电压 1.8V、2.8V;
4、scl100KHz或者400KHz。
下载:常用摄像头规格书 :bf3703 30W、gc0308 30W、ov7670、gt2005 200W、gt2015 200W、NT99250 200W、s5k5ba 200W、s5k4ba
一、摄像头驱动
我们以GT2005为例,来讲述一个摄像头驱动的调试过程:
摄像头和主控的关系图,如下:
摄像头驱动比较简单,完成一面三大步就可以:
摄像头的上电、时钟这些基本条件;
IIC保证摄像头的初始化;
摄像头工作后传回数据到主控。、主意摄像头工作要两组电压:1.8V、2.8V还有MCLK
程序中对电源控制:我们在arch\arm\mach-smdkv310.c中,完成上面两个步骤的代码,
[cpp] view plaincopy 1.
#ifdef CONFIG_VIDEO_GT2005
2. static void set_cam2005_main_power
3.
4. {
5.
6. unsigned int gpio;
7. int err;
8.
9. if
10. {
11. err = gpio_request, “GPB”);
12. if
13. printk;
14. s3c_gpio_cfgpin,S3C_GPIO_OUTPUT);
15. s3c_gpio_setpull, S3C_GPIO_PULL_UP);
16. gpio_direction_output, 1);
17. gpio_free);
18.
19. //RESET
20. err = gpio_request, “GPE1”);
21. if
22. printk;
23. s3c_gpio_setpull, S3C_GPIO_PULL_NONE);
24. gpio_direction_output,0); 25. mdelay;
26. gpio_direction_output, 1);
27. gpio_free);
28.
29.
30. //PWDN CAM_back
31. err = gpio_request, “GPB”);
32. if
33. printk;
34. s3c_gpio_cfgpin,S3C_GPIO_OUTPUT);
35. s3c_gpio_setpull, S3C_GPIO_PULL_UP);
36. gpio_direction_output, 0);
37. mdelay;
38. gpio_direction_output, 1);
39. gpio_free);
40.
41. }
42. else
43. {
44. ………………
45. }
46. return;
47. }
48. #endif
提供MCLK代码如下:
[cpp] view plaincopy
1. static int smdkv210_cam_clk_init
2. {
3. unsigned int tempvalue=0;
4. tempvalue = readl;
5. tempvalue = ;
6. writel;
7. tempvalue = readl;
8. tempvalue = |0x00001000;
9. writel;
10.
11. return 0;
12. }
这时拿示波器抓到上电时的波形和MCLK24MHZ的时钟,信号就说明我们完成了这一步,其实在实际工作中,我们一般出问题的时候才会测这些数据,确认问题点。
上电时序:
、上电时序;
、MCLK如下所示。
2、 IIC和一些参数的配置
[cpp] view plaincopy
1. #ifdef CONFIG_VIDEO_GT2005
2. static struct GT2005_platform_data GT2005_plat = {
3. .default_width = 640,
4. .default_height = 480,
5. .pixelformat = V4L2_PIX_FMT_UYVY, // .freq = 24000000,
6. .is_mipi = 0,
7. };
8.
9. static struct i2c_board_info GT2005_i2c_info = {
10. I2C_BOARD_INFO, //1、IIC地址
11. .platform_data = >2005_plat,
12. };
13.
14. static struct s3c_platform_camera GT2005 = {
15. #ifdef CAM_ITU_CH_A
16. .id = CAMERA_PAR_A,
17. #else
18. .id = CAMERA_PAR_B,
19. #endif
20. .type = CAM_TYPE_ITU, //2、数据接口选择
21. .fmt = ITU_601_YCBCR422_8BIT,
22. .order422 = CAM_ORDER422_8BIT_CBYCRY, //3、图像数
据格式 23.
24. .i2c_busnum = 1,
25. .info = >2005_i2c_info,
26. .pixelformat = V4L2_PIX_FMT_UYVY,
27. .srclk_name = “mout_mpll”, //4、这部分关系到时钟
28. .clk_name = “sclk_cam1”,
29. .clk_rate = 24000000, /* 24MHz */
30. .line_length = 640, /* 640*480 */
31. /* default resol for preview kind of thing */
32. .width = 640,
33. .height = 480,
34. .window = {
35. .left = 16,
36. .top = 0,
37. .width = ,
38. .height = 480,
39. },
40.
41. /* Polarity */ //5、信号的极
性, .inv_pclk = 0,
42. .inv_vsync = 1,
43. .inv_href = 0,
44. .inv_hsync = 1,
45.
46. .initialized = 0,
47. .cam_power=set_cam2005_main_power
48. };
49. #endif 注意下面几个参数:
、IIC地址
、数据接口选择,这几个数据接口我们在前面提到过;
、图像数据格式,这就是我们前面提到的YVU\UVY之类不同的数据顺序;
、这部分关系到时钟;
、输出信号的极性,就是我们PCLK、VSYNC、HSVNC这些信号的极性,不正确时会没有图像之类现象,这个也要注意了。,)
完成这一步确认IIC通信是否正常,如下图所抓到波形:
3、完成上面两步,摄像头基本配置完成,我们确认下输出端PCLK、VHSN、SVSN、D1-D7
二、摄像头调试过程中常遇到的问题
1、录相在预览时正常,播放录像时花屏
原因分析:
录相用fimc2,
在android/device/samsung/proprietary/libcamera/SecCamera.cpp中
int SecCamera::startRecord
[cpp] view plaincopy 1. m_cam_fd_rec = open;
2.
3. vendor\sec\sec_proprietary\smdkc110\libcamera\SecCamera.h
4. #define CAMERA_DEV_NAME2 “/dev/video2”
所用的视频格式,在
android/device/samsung/proprietary/libcamera/SecCameraHWInterface.cpp中 void CameraHardwareSec::m_initDefaultParameters
[cpp] view plaincopy 1.
int default_preview_pixel_format =
mSecCamera->getPreviewDefaultPixelFormat
;
2. switch {
3. default:
4. case V4L2_PIX_FMT_NV21:
5. p.setPreviewFormat;
6. break;
7. case V4L2_PIX_FMT_NV12T:
8. p.setPreviewFormat;
9. break;
10. }
11.
12. 其中mSecCamera->getPreviewDefaultPixelFormat在
13.
vendor\sec\sec_proprietary\smdkc110\libcamera\SecCamera.cpp中实现,
14. int SecCamera::getPreviewDefaultPixelFormat
15. {
16. return DEFAULT_PREVIEW_PIXEL_FORMAT;
17. }
18. 在android/device/samsung/proprietary/libcamera/SecCamera.h中设定初始值。,,我们这
里设的是
19. #ifdef DUAL_PORT_RECORDING
20. #define DEFAULT_PREVIEW_PIXEL_FORMAT
21. #else
22. #define DEFAULT_PREVIEW_PIXEL_FORMAT
23. #endif
以上得出视频格式为V4L2_PIX_FMT_NV21。
2、图像干扰问题,如下图所示
原因可能是:
、摄像头模组有问题,换一个摄像头试一下;
、数据线驱动能力不足,这个可以在摄像头寄存器里面改,问下摄像头模组FAE,看改那些地方;
、两个摄像头共用数据线时,不工作的摄像头会把工作的数据信号减弱
;
、PCB 走线太长,也会有干扰,不过我觉得这个可能性小,调试好就一款这样的的,模组厂FAE说的,不过他们模组本身也有问题,两方面因素都有吧:PCB、模组打样也有问题。 想知道和比较明确说明翻转角度,最常用的就是写一个”F”,然后看预览里的是怎么转的。要不就在模组寄存器中改,要不就在上层。上面只是说明如何去确认图像翻转。
看下GT2005关于翻转的寄存器吧:
5、杂光,鬼影:
其行业的专业术语统称为Flare,是指在拍摄光源或者强光物体时,边缘出现光影或出现一个完整物体的影子,而且这种现象只能减轻不能完全消失,
原因是由于镜片的材质导致光线不但存在折射还存在反射
,整机由于镜头面到保护镜片距离很大会更明显!
6、常见问题相关
摄像头效果评测都有哪些,
以上以gt2005为例,说了一下摄像头驱动,和驱动中常见到的问题,如果上面的问题解决,摄像头点亮,说明在平台是运行是没问题的,小的问题和细节,要找模组厂的FAE过来协助解决,不过你想多研究一下的话,也可以,如果项目允许,就多看看,做到调试一个驱动,所有问题都了解,这样对工作经验、积累很重要的,希望对大家有用。,,