http://www./2012/02/14/363.html
这几天拿到一个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”这个文件.增加一行
3 | <p>“obj-$(CONFIG<em>VIDEO</em>FPOV7670) += fpov7670.o”.</p> |
3.在”/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android/drivers/media/video”目录下找到”Kconfig”
增加下面5行
3 | <p>config VIDEO<em>FPOV7670 |
4 | tristate "FPOV7670 Camera Sensor" |
5 | depends on I2C && VIDEO</em>V4L2 |
7 | This driver supports FPOV7670 SoC camera module</p> |
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的配置.
03 | <h1>ifdef CONFIG<em>VIDEO</em>FPOV7670</h1> |
05 | <p> static int ov7670<em>power</em>en( int onoff) |
07 | printk("ov7670<em>power</em>en: power %s\n", onoff ? "ON" : "Off"); |
11 | <p> static struct fpov7670<em>platform</em>data ov7670<em>plat = { |
12 | . default </em>width = 640, |
13 | . default <em>height = 480, |
14 | .pixelformat = V4L2</em>PIX<em>FMT</em>YUYV, |
18 | static struct i2c</em>board<em>info ov7670</em>i2c<em>info = { |
19 | I2C</em>BOARD<em>INFO("FPOV7670", (0x42>>1)), |
20 | .platform</em>data = &ov7670_plat, |
23 | <p> static struct s3c<em>platform</em>camera ov7670 = { |
24 | .id = CAMERA<em>PAR</em>A, |
25 | .type = CAM<em>TYPE</em>ITU, |
26 | .fmt = ITU<em>601</em>YCBCR422<em>8BIT, |
27 | .order422 = CAM</em>ORDER422<em>8BIT</em>CBYCRY, |
29 | .info = &ov7670</em>i2c<em>info, |
30 | .pixelformat = V4L2</em>PIX<em>FMT</em>YUYV, |
31 | .srclk<em>name = "mout</em>mpll", |
32 | /* .srclk<em>name = "xusbxti", */ |
33 | .clk</em>name = "sclk<em>cam1", |
34 | .clk</em>rate = 40000000, |
35 | .line<em>length = 640, |
51 | .cam<em>power = ov7670</em>power_en, |
在驱动列表中加入ov7670驱动
03 | <p> /* Interface setting */ |
04 | static struct s3c_platform_fimc fimc_plat_lsi = { |
05 | .srclk_name = "mout_mpll", |
06 | .clk_name = "sclk_fimc", |
07 | .lclk_name = "sclk_fimc_lclk", |
08 | .clk_rate = 166750000, |
09 | #if defined(CONFIG_VIDEO_S5K4EA) |
10 | .default_cam = CAMERA_CSI_C, |
13 | .default_cam = CAMERA_PAR_A, |
15 | .default_cam = CAMERA_PAR_B, |
19 | #ifdef CONFIG_VIDEO_S5K4ECGX |
22 | #ifdef CONFIG_VIDEO_S5KA3DFX |
25 | #ifdef CONFIG_VIDEO_S5K4BA |
28 | #ifdef CONFIG_VIDEO_S5K4EA |
31 | #ifdef CONFIG_VIDEO_OV9650 |
34 | #ifdef CONFIG_VIDEO_FPOV7670//新加入 |
5.在”/opt/FriendlyARM/mini210/android/linux-2.6.35.7-android”目录下 输入”make menuconfig” 回车,选择FPOV7670之后,make之.成功后把zImage烧入开发板.打开摄像头测试,出图了.
注意,因为我们FPOV7670的驱动是用在指纹采集上并不需要”自动曝光””调节白平衡”等功能.如果是用在拍照上,就需要加入上述功能.
|