arm单板移植linux包括什么,【Arm-Linux摄像头驱动程序的移植】【经典】

Arm开发板上摄像头的移植有两种方法:第一,将驱动程序添加到内核,通过编译内核,烧写到板子上;第二种,通过动态加载摄像头驱动模块的方法进行硬件的驱动。作者首先在PC的linux系统进行摄像驱动程序的移植,保证驱动程序版本正确,然后将驱动程序编译成模块,通过文件系统挂载到板子,然后进行加载,进而创建摄像头设备节点。下面将具体介绍摄像头动态加载的过程。

移植过程所使用的摄像头型号ZC301P,arm板上的内核版本为2.6.9,开发板为pxa270,所采用的驱动程序包为spca5xx-20060501.tar.gz。

第一步,使用命令解压文件: tar zxvf spca5xx-20060501.tar.gz

进入spca5xx-20060501

: cd spca5xx-20060501

第二步,修改Makefile文件:VERSION = 00.60.00

Makefile的内容如下,注释掉的为蓝色,红色表示修改过的内容:

CC =arm-linux-gcc

LD =arm-linux-ld CVSVERSION = "$Experimental work Michel Xhaard

&& Reza Jelveh 03/02/2004"

DEFINES =

###

# The following flags enable experimental features.

# By default, these are enabled for development versions of the

driver, and

# disabled for release versions.

# Optional: Enable driver debugging

DEFINES +=

-DSPCA50X_ENABLE_DEBUG

# Optional: Enable direct register read/write for PAC207

development

#DEFINES +=

-DSPCA5XX_ENABLE_REGISTERPLAY

###

# The following flags enable features that aren't yet implemented,

and

# therefore are disabled by default.

# Optional: Enable compression

DEFINES +=

-DSPCA50X_ENABLE_COMPRESSION

###

# Rest of Makefile follows here. You probably won't need to touch

this.

# Setup defines

DEFINES +=

-DCONFIG_USB_SPCA5XX_MODULE=1 -DMODULE -D__KERNEL__

DEFINES +=

-DVID_HARDWARE_SPCA5XX=0xFF -DSPCA5XX_VERSION=\"$(VERSION)\"

ifneq ($(shell uname -r | cut -d. -f1,2), 2.4)

ifneq ($(KERNELRELEASE),) #

We were called by kbuild

CFLAGS += $(DEFINES)

obj-m += spca5xx.o

spca5xx-objs := drivers/usb/spca5xx.o drivers/usb/spcadecoder.o

else # We were called from

command line

#KERNEL_VERSION = `uname -r`

KERNEL_VERSION = 2.6.9

#KERNELDIR := /lib/modules/$(KERNEL_VERSION)/build

KERNELDIR := /up-techpxa270/kernel/linux-2.6.9

PWD := $(shell pwd)

#MODULE_INSTALLDIR =

/lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/media/

MODULE_INSTALLDIR =/root/modules/

# Targets, don't change!

default:

@echo ' Building SPCA5XX driver for 2.5/2.6 kernel.'

@echo ' Remember: you must have read/write access to your kernel source

tree.'

$(MAKE) -C $(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC)

modules

install:

mkdir -p $(MODULE_INSTALLDIR)

rm -f $(MODULE_INSTALLDIR)spca50x.ko

rm -f $(MODULE_INSTALLDIR)et61x.ko

install -c -m 0644 spca5xx.ko

$(MODULE_INSTALLDIR)

/sbin/depmod -ae

uninstall:

rm -f $(MODULE_INSTALLDIR)/spca5xx.ko

/sbin/depmod -aq

endif

else # kernel version

test

#############################################################################

# For Linux 2.4 users.

# Change the following lines according to your system

configuration.

# It is important to configure your particular source tree ("make

dep") before

# compiling this module!

#############################################################################

###

# This makefile will build the spca50x driver module external to

the kernel

# source tree. It makes it easier to swap kernels.

#KERNEL_VERSION = `uname -r`

KERNEL_VERSION = 2.4.x

###

# Location of the header files (most importantly the config

files)

# for the kernel you want to build the module against.

# This should be correct for the currently installed kernel on your

machine.

#KINCLUDE =

/lib/modules/$(KERNEL_VERSION)/build/include

KINCLUDE =/up-techpxa270/kernel/linux2.4.x

KERNEL_ACFILE = $(KINCLUDE)/linux/autoconf.h

KERNEL_MODVERSIONSFILE = $(KINCLUDE)/linux/modversions.h

#MODULE_INSTALLDIR =

/lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/

MODULE_INSTALLDIR =/root/modules/

# Detect module versioning support

ifneq ($(strip $(shell grep 'define CONFIG_MODVERSIONS 1'

$(KERNEL_ACFILE))),)

DEFINES += -DMODVERSIONS -include

$(KERNEL_MODVERSIONSFILE)

endif

# Detect SMP support

ifneq ($(strip $(shell grep 'define CONFIG_SMP 1'

$(KERNEL_ACFILE))),)

DEFINES += -D__SMP__ -DSMP

endif

# Setup the tools

#CC = gcc

#LD = ld

CC =arm-linux-gcc

LD =arm-linux-gcc

# Setup compiler warnings

WARNINGS = -Wall

-Wpointer-arith

WARNINGS += -Wcast-align -Wwrite-strings

-Wstrict-prototypes

WARNINGS += -Wuninitialized -Wreturn-type

-Wunused -Wparentheses

# Setup compiler flags

CFLAGS = -O2 -fomit-frame-pointer -fno-strict-aliasing -pipe

CFLAGS +=

-mpreferred-stack-boundary=2

CFLAGS +=

-I$(KINCLUDE) -Idrivers/usb

# Setup link flags

LDFLAGS =

--strip-debug -r

# Setup the list of files to be included in a distribution

DIST_FILES = CHANGELOG \

README \

Makefile \

drivers/usb/Config.in \

drivers/usb/spcadecoder.c \

drivers/usb/spcadecoder.h \

drivers/usb/spcagamma.h \

drivers/usb/spcaCompat.h \

drivers/usb/spcausb.h \

drivers/usb/spca500_init.h \

drivers/usb/spca501_init.h \

drivers/usb/sp5xxfw2.dat \

drivers/usb/sp5xxfw2.h \

drivers/usb/spca505_init.h \

drivers/usb/spca506.h \

drivers/usb/spca508_init.h \

drivers/usb/spca561.h \

drivers/usb/sonix.h \

drivers/usb/cs2102.h \

drivers/usb/hv7131b.h \

drivers/usb/icm105a.h \

drivers/usb/hv7131c.h \

drivers/usb/hdcs2020.h \

drivers/usb/pb0330.h \

drivers/usb/tas5130c.h \

drivers/usb/zc3xx.h\

drivers/usb/tv8532.h\

drivers/usb/cxlib.h\

drivers/usb/sn9cxxx.h\

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值