Android下的摄像头驱动开发
来源:互联网 发布:软件系统架构工资 编辑:程序博客网 时间:2024/04/28 05:37
Android下的摄像头驱动开发
这几天拿到一个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”这个文件.增加一行
“obj-$(CONFIG_VIDEO_FPOV7670) += fpov7670.o”.
3.在”/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android/drivers/media/video”目录下找到”Kconfig”
增加下面5行
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的配置.
#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驱动
/* 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的驱动是用在指纹采集上并不需要”自动曝光””调节白平衡”等功能.如果是用在拍照上,就需要加入上述功能.
- Android下的摄像头驱动开发
- Android下的摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- Linux系统下USB摄像头驱动开发
- 如何开发wince usb 摄像头的驱动-中星微摄像头驱动
- 如何开发wince usb 摄像头的驱动-中星微摄像头驱动
- ARM开发板上中星微摄像头驱动的移植
- vb窗体的两种类型——模态与非模态
- 错误号——“不可识别的数据库格式~~~~~~”
- document.documentElement.scrollLeft 与document.body.scrollTop区别
- fetchAll()与mysql_fetch_array()区别
- iphone ios 如何查询apple store分类排名和下载量
- Android下的摄像头驱动开发
- C++设计:代理类
- 模拟电子技术/国外电子与通信教材系列
- 计算MD5值的方法
- C 中 extern 和 static
- flash actionscript 3.0 publish h264 stream
- 【C++ Primer】深度解析struct --面试常见题
- 头文件的用途和结构
- document.documentElement.scrollTop