spca5xx驱动加载进S3C2410板上 -
[导读]系统采用的是最普通的USB摄像头,主芯片为中星微ZC0301P。这种摄象头的一个特点是可以实现硬件JPEG编码。其驱动程序的编写重点包括下面的内容:提供基本的I/O 操作接口函数open、read、write、close的实现、对中断的
系统采用的是最普通的USB摄像头,主芯片为中星微ZC0301P。这种摄象头的一个特点是可以实现硬件JPEG编码。其驱动程序的编写重点包括下面的内容:提供基本的I/O 操作接口函数open、read、write、close的实现、对中断的处理实现、内存映射功能以及对I/O 通道的控制接口函数ioctl的实现等,并把它们定义在struct file_operations中。这样当应用程序对设备文件进行诸如open、close、read、write等系统调用操作时,Linux内核将通过file_operations结构访问驱动程序提供的函数。
当然,现在网上已经有了这种摄象头的通用驱动,可以从相关网站下载usb-2.4.31.patch.gz,然后将这个补丁打到内核对应的位置即可。但是对有些内核版本的linux系统,在打补丁时,会产生 Config.in.rej和Makefile.rej。这时只需要将这两个文件中修改失败的部分手动添加到对应的Config.in和Makefile 中去就可以了。
对于已经做过基本移植的linux在配置内核的时有以下几个方面是值得注意的:
1) 因为要用到内核中的Video4Linux编程接口函数,所以在配置内核时首先必须选中Video for Linux并且最好是直接编译进内核而不用编译成模块的形式再加载;
2) 要选中USB Support、OHCI、UHCI。并在USB Support下的USB Multimedia devices 中选中对应的摄象头,对本系统来说,选择USB SPCA5XX Sunplus Vimicro Sonix Cameras,并把它配置成Module。
3) 配置完内核后做make dep, make zImage, make module。则在对应的spca5xx目录下会生成spc5xx..o,可以把spc5xx..o通过NFS mount到目标板上或者加到主文件系统ramdisk中的某个目录下。然后在目标板上做 insmod spca5xx.o就会找到摄象头。
BusyBox v1.00 (2004.10.18-05:07+0000) multi-call binary
Usage: insmod [OPTION]... MODULE [symbol=value]...
Loads the specified kernel modules into the kernel.
Options:
-f Force module to load into the wrong kernel version.
-k Make module autoclean-able.
-v verbose output
-q quiet output
-L Lock to prevent simultaneous loads of a module
-m Output load map to stdout
-o NAME Set internal module name to NAME
-x do not export externs
[root@(none) usr]# insmod spca5xx.o
Using spca5xx.o
insmod: cannot insert `spca5xx.o': Invalid module format (-1): Exec format error
原因:在烧写之前spca5xx中的Makefile文件中的 “CC=gcc”没有改成“CC=arm-linux-gcc”,故在目标板上不能运行,应该先改后再make,生成spca5xx.o文件才能烧进板子中。
查看评论 回复
"spca5xx驱动加载进S3C2410板上 -"的相关文章
- 上一篇:LCD1602程序下载(AVR) -
- 下一篇:如何提高单片机系统的抗干扰能力 -