-
Camera
驱动在
Linux
内核的移植
一、
移
植环境:
【移植环境】
1
、
主机:
Ubuntu
10.10
发行版
2
、
目标机
:
FS_S5PC100
平台
3
、
交叉编译工具:
arm-none-linux-
gnueabi-4.5.1
4
、
摄像头模块:
OV9650
5
、
Linux
文件系
统:
rootfs. cramfs.
6
、内核:
linux-2.6.35-farsigt
二、
内
核配置
1.
修改
vi
drivers/i2c/busses/Kconfig
(参考实验二十六
I2C
驱动编写及测试)
修改
config
I2C_S3C2410
tristate
depends on ARCH_S3C2410 ||
ARCH_S3C64XX
help
Say
Y here to include support for I2C controller in
the
Samsung S3C2410 based System-on-Chip
devices.
为:
config I2C_S3C2410
tristate
depends
on ARCH_S3C2410 || ARCH_S3C64XX || ARCH_S5PC100
help
Say Y here to
include support for I2C controller in the
Samsung S3C2410 based System-on-Chip
devices.
2.
内核配置并重新编译内核
$$ make menuconfig
Device
Drivers
--->
<*> I2C support
--->
<*>
I2C device interface
I2C Hardware
Bus support
--->
<*> S3C2410 I2C Driver
3.
修改
vi
arch/arm/mach-s5pc100/mach-smdkc100.c
查看原理图可以知道我们的摄像头是接在
I2C-1
上所以修改
i2c_devs1
添加
ov9650
的内容,
主要是
ov9650
的地址,这个在芯片手册上可以查到是
0x30
修改:
static struct
i2c_board_info i2c_devs1[] __initdata = {
};
为:
static struct i2c_board_info
i2c_devs1[] __initdata = {
{
I2C_BOARD_INFO(
},
};
添加
s5pc100
摄像头控制器平
台设备相关内容,这些内容我们可以通过查看
S5PC100
的
芯
片手册查到
static
struct resource s3c_camif_resource[] = {
[0] = {
.start = 0xEE200000,
.end
= 0xEE200000 +
SZ_1M - 1,
.flags = IORESOURCE_MEM,
},
[1] = {
.start =
IRQ_FIMC0,
.end
= IRQ_FIMC0,
.flags =
IORESOURCE_IRQ,
}
};
static u64 s3c_device_camif_dmamask =
0xffffffffUL;
struct
platform_device s3c_device_camif = {
.name
=
.id
= 0,
.num_resources
= ARRAY_SIZE(s3c_camif_resource),
.resource
= s3c_camif_resource,
.dev
= {
.dma_mask =
&s3c_device_camif_dmamask,
.coherent_dma_mask = 0xffffffffUL
}
};
EXPORT_SYMBOL(s3c_device_camif);
注册摄像头控制平台设备:
在
smdkc100_devices
中添加
s3c_device_camif
static struct platform_device
*smdkc100_devices[] __initdata = {
&s3c_device_camif,
//
添加内容
};
4.
添加驱动(
video
)
Make menuconfig
Device
Drivers
--->
<*>
Multimedia support
--->
<*>
Video For Linux
[*]
Enable Video
For Linux API 1 (DEPRECATED) (NEW)
[*]
Video capture
adapters (NEW)
--->
[*]
V4L USB devices (NEW)
--->
<*>
USB Video Class
(UVC)
[*]
UVC
input events device support (NEW)
<*>
USB ZC0301[P] webcam support
(DEPRECA
TED)
三、
驱
动编写
四、
网
络视频服务器移植
对于内核
linux-2.6.35
,不能再使用
p>
servfox
,如果要使用的需要修改大量的代码,在此选用
p>
新的方法来移植。需要两个文件
jpeg,mjpg-
stream.
移植如下:
mkdir
/source/rootfs/mjpg
1.
jpeg
库的移植
mkdir /home/linux/jpeg
jpeg
源码包通过下面这个网址下载
/files/
解压源码包
tar
xvf
配置源码
cd
jpeg-8b
./configure --prefix=/home/linux/jpeg
--host=arm-none-linux-gnueabi
(./configure
配置源代码树
安装目录:
--prefix=
PREFIX
<
/p>
体系无关文件的顶级安装目录
PREFIX
,也就
Apache
的安装目录。
[/usr/local/apache2]
系统类型:
--host=
HOST
指定
Apache HTTP
服务器将
要运行的目标系统类型
HOST
。
[
BUILD
]
)
编译
make
安装
make install
拷贝库到文件系统中
cp
/home/linux/jpeg/lib/.8
/source/rootfs/lib
2.
mjpg-
stream
的移植
mjpg-
stream
源码包通过下面这个网址下载
/projects/mjpg-streamer/
解压源码
tar
xvf
修改源码
cd
mjpg-streamer-r63
修改顶层
makefile
及
pl
ugins
目录中的各级
makefile
将所有
(
注意这里需要修改的内
容
)
CC=gcc
修改为
修改
plugins/input_uvc/Makfile
修改
CFLAGS += -O2
-DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为
CFLAGS
+=
-O2
-DLINUX
-D_GNU_SOURCE
-Wall
-shared
–
I/homw/l
inux/jpeg/include
修改
$$(CC)
$$(CFLAGS) -ljpeg
-o $$@
input_uvc.c jpeg_
为
–
fPIC
-
-
-
-
-
-
-
-
-
上一篇:abcc形式的成语大全
下一篇:英美报刊常用术语【期末复习资料完美版】