Android下的摄像头驱动开发

由 King 发表于:2012/02/14 10:00 星期二

这几天拿到一个MINI210开发板,于是尝试着把ov7670移植到开发板上.仔细的观察了一下友善给的驱动发现友善提供了ov9650的驱动,因为ov7670和ov9650的驱动比较类似.于是想在ov9650的基础上改动一下. 但是进入/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android/drivers/media/video目录没有发现跟ov9650相关的源文件.看了一下Makefile 文件才知道友善竟然没有提供ov9650的源码(鄙视一下友善).

那只好自己动手了:

1.在”/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android/drivers/media/video”目录下增加两个文件”fpov7670.c”和”fpov7670.h”.

2.在”/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android/drivers/media/video”目录下找到”Makefile”这个文件.增加一行

1 2 “obj-$(CONFIG_VIDEO_FPOV7670)     += fpov7670.o”.

3.在”/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android/drivers/media/video”目录下找到”Kconfig”

增加下面5行

1 2 3 4 5 6 config VIDEO_FPOV7670   tristate "FPOV7670 Camera Sensor"   depends on I2C && VIDEO_V4L2   ---help---   This driver supports FPOV7670 SoC camera module

4.最重要的是修改代码了.参照”s5k4ba.c”和”s5k4ba.h” 把”fpov7670.c”和”fpov7670.h”修改了.主要吧IIC配置修改即可.然后找到/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android/arch/arm/mach-s5pv210/mach-mini210.c,加入fpov7670的配置.

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 #ifdef CONFIG_VIDEO_FPOV7670    static int ov7670_power_en( int onoff)   {   printk( "ov7670_power_en: power %s\n" , onoff ? "ON" : "Off" );   return 0;   }    static struct fpov7670_platform_data ov7670_plat = {   .default_width = 640,   .default_height = 480,   .pixelformat = V4L2_PIX_FMT_YUYV,   .freq = 40000000,   .is_mipi = 0,   };   static struct i2c_board_info  ov7670_i2c_info = {   I2C_BOARD_INFO( "FPOV7670" , (0x42>>1)),   .platform_data = &ov7670_plat,   };    static struct s3c_platform_camera ov7670 = {   .id        = CAMERA_PAR_A,   .type        = CAM_TYPE_ITU,   .fmt        = ITU_601_YCBCR422_8BIT,   .order422    = CAM_ORDER422_8BIT_CBYCRY,   .i2c_busnum    = 0,   .info        = &ov7670_i2c_info,   .pixelformat    = V4L2_PIX_FMT_YUYV,   .srclk_name    = "mout_mpll" ,   /* .srclk_name    = "xusbxti", */   .clk_name    = "sclk_cam1" ,   .clk_rate    = 40000000,   .line_length    = 640,   .width        = 640,   .height        = 480,   .window        = {   .left    = 0,   .top    = 0,   .width    = 640,   .height    = 480,   },   /* Polarity */   .inv_pclk    = 1,   .inv_vsync    = 1,   .inv_href    = 0,   .inv_hsync    = 0,    .initialized    = 0,   .cam_power    = ov7670_power_en,   };    #endif

在驱动列表中加入ov7670驱动

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 /* Interface setting */   static struct s3c_platform_fimc fimc_plat_lsi = {   .srclk_name    = "mout_mpll" ,   .clk_name    = "sclk_fimc" ,   .lclk_name    = "sclk_fimc_lclk" ,   .clk_rate    = 166750000,   #if defined(CONFIG_VIDEO_S5K4EA)   .default_cam    = CAMERA_CSI_C,   #else   #ifdef CAM_ITU_CH_A   .default_cam    = CAMERA_PAR_A,   #else   .default_cam    = CAMERA_PAR_B,   #endif   #endif   .camera        = {   #ifdef CONFIG_VIDEO_S5K4ECGX   &s5k4ecgx,   #endif   #ifdef CONFIG_VIDEO_S5KA3DFX   &s5ka3dfx,   #endif   #ifdef CONFIG_VIDEO_S5K4BA   &s5k4ba,   #endif   #ifdef CONFIG_VIDEO_S5K4EA   &s5k4ea,   #endif   #ifdef CONFIG_VIDEO_OV9650   &ov9650,   #endif   #ifdef CONFIG_VIDEO_FPOV7670//新加入   &ov7670, //新加入   #endif //新加入   },   .hw_ver        = 0x43,   };

5.在”/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android”目录下 输入”make menuconfig” 回车,选择FPOV7670之后,make之.成功后把zImage烧入开发板.打开摄像头测试,出图了.

注意,因为我们FPOV7670的驱动是用在指纹采集上并不需要”自动曝光””调节白平衡”等功能.如果是用在拍照上,就需要加入上述功能.

更多相关文章

  1. Android 文件上传支持拍照录用录视频
  2. Android 的res/values/colors自定义颜色列表和注释表及布局文件
  3. 新建android project和其配置文件的基本介绍
  4. Android使用adb命令直接修改文件
  5. CrossWalk - Android 动态加载so库文件
  6. Unexpected namespace prefix "xmlns" found for tag LinearLayo
  7. Android下使用TinyXml读取xml配置文件(Cocos2d-x游戏开发)

随机推荐

  1. Android底部导航栏,三种风格和实现
  2. 基于Android studio3.6的JNI教程之ncnn之
  3. android 5.1 屏蔽MENU键 返回键唤醒系统
  4. Android网络连接处理学习笔记
  5. Professional Android 2 Development - 3
  6. listview更改选中时item背景色的两种方式
  7. Android多屏幕适配
  8. Android 属性动画Property Animation(下)
  9. android log机制——输出log
  10. android霓虹灯源代码——基础编