|
我想把无线网卡驱动移植到嵌入式开发板上去,操作系统内核是2.6.8.1系列。买了块asus的WL-107G的无线网卡,是雷凌公司生产的芯片组。买的时候附带了linux下的驱动程序,按照说明是在fedora core 2下面进行编译,编译为pc机下的目标文件即RT2500.KO没有任何问题,但是在使用交叉编译环境arm-linux-gcc 并且把目标板的选项设置为ARCH=arm时编译出现了很多错误,主要是在内核包含文件process.h和system.h中,这些文件中有关于寄存器ebx,eax等的操作都是在编译时出现错误。请问下应该怎么办?(我没有修改它驱动程序中的Makefile)
主要错误如下:
root@localhost Module]# make ARCH=arm -C /lib/modules/2.6.5-1.358/build SUBDIRS=$PWD modules
make: Entering directory `/lib/modules/2.6.5-1.358/build'
CC [M] /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rtmp_main.oIn file included from include/asm/system.h:5,
from include/asm/processor.h:18,
from include/asm/thread_info.h:16,
from include/linux/thread_info.h:21,
from include/linux/spinlock.h:12,
from include/linux/capability.h:45,
from include/linux/sched.h:7,
from include/linux/module.h:10,
from /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rt_config.h:46,
from /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rtmp_main.c:30:
include/asm/hw_irq.h:28: error: `NR_IRQ_VECTORS' undeclared here (not in a function)
include/asm/hw_irq.h:32: error: `NR_IRQS' undeclared here (not in a function)
include/asm/hw_irq.h:55: warning: `regparm' attribute directive ignored
In file included from /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rt_config.h:54,
from /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rtmp_main.c:30:
include/linux/interrupt.h:95: warning: `regparm' attribute directive ignored
include/linux/interrupt.h:99: warning: `regparm' attribute directive ignored
include/linux/interrupt.h:100: warning: `regparm' attribute directive ignored
include/linux/interrupt.h:171: warning: `regparm' attribute directive ignored
include/linux/interrupt.h:179: warning: `regparm' attribute directive ignored
include/linux/mm.h:237: warning: `regparm' attribute directive ignored
include/linux/mm.h:468: warning: `regparm' attribute directive ignored
include/linux/mm.h:469: warning: `regparm' attribute directive ignored
include/linux/mm.h:470: warning: `regparm' attribute directive ignored
include/linux/mm.h:486: warning: `regparm' attribute directive ignored
In file included from include/linux/highmem.h:14,
from include/linux/skbuff.h:27,
from include/linux/netdevice.h:151,
from /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rt_config.h:56,
from /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rtmp_main.c:30:
include/asm/highmem.h:50: warning: `regparm' attribute directive ignored
include/asm/highmem.h:51: warning: `regparm' attribute directive ignored
In file included from include/linux/poll.h:11,
from include/linux/skbuff.h:28,
from include/linux/netdevice.h:151,
from /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rt_config.h:56,
from /usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rtmp_main.c:30:
include/asm/uaccess.h:414: warning: `warn_unused_result' attribute directive ignored
include/asm/uaccess.h:415: warning: `warn_unused_result' attribute directive ignored
include/asm/uaccess.h:440: warning: `warn_unused_result' attribute directive ignored
include/asm/uaccess.h:478: warning: `warn_unused_result' attribute directive ignored
include/asm/uaccess.h:512: warning: `warn_unused_result' attribute directive ignored
include/asm/uaccess.h:537: warning: `warn_unused_result' attribute directive ignored
include/asm/system.h: In function `__set_64bit':
include/asm/system.h:169: error: unknown register name `dx' in `asm'
include/asm/system.h:169: error: unknown register name `ax' in `asm'
include/asm/system.h: In function `__set_64bit_constant':
include/asm/system.h:169: error: unknown register name `dx' in `asm'
include/asm/system.h:169: error: unknown register name `ax' in `asm'
include/asm/system.h: In function `__set_64bit_var':
include/asm/system.h:169: error: unknown register name `dx' in `asm'
include/asm/system.h:169: error: unknown register name `ax' in `asm'
include/asm/processor.h: In function `cpuid_eax':
include/asm/processor.h:144: error: unknown register name `dx' in `asm'
include/asm/processor.h:144: error: unknown register name `cx' in `asm'
include/asm/processor.h:144: error: unknown register name `bx' in `asm'
include/asm/processor.h: In function `cpuid_ebx':
include/asm/processor.h:154: error: unknown register name `dx' in `asm'
include/asm/processor.h:154: error: unknown register name `cx' in `asm'
include/asm/processor.h: In function `cpuid_ecx':
include/asm/processor.h:164: error: unknown register name `dx' in `asm'
include/asm/processor.h:164: error: unknown register name `bx' in `asm'
include/asm/processor.h: In function `cpuid_edx':
include/asm/processor.h:174: error: unknown register name `cx' in `asm'
include/asm/processor.h:174: error: unknown register name `bx' in `asm'
include/asm/processor.h: In function `set_in_cr4':
include/asm/processor.h:211: error: unknown register name `ax' in `asm'
include/asm/processor.h: In function `clear_in_cr4':
include/asm/processor.h:221: error: unknown register name `ax' in `asm'
include/asm/rwsem.h: In function `__up_write':
include/asm/rwsem.h:214: error: unknown register name `edx' in `asm'
include/asm/rwsem.h: In function `up_write':
include/asm/rwsem.h:214: error: unknown register name `edx' in `asm'
make[1]: *** [/usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module/rtmp_main.o] ?? 1
make: *** [/usr/src/linux-2.6.5-1.358/RT2500-Linux-STA-1.4.2.0/Module] 错误 2
make: Leaving directory `/lib/modules/2.6.5-1.358/build'
我在编译时主要修改了下内核源(/lib/modules/2.6.5-1.358/build) 下的一个Makefile文件,该Makefile中的ARCH还是保持为$(SUBARCH),而CROSS_COMPILE改为了如下:/usr/local/arm/3.3.2/bin/arm-linux-也就是我的fc2中交叉编译器所在的目录,在编译命令行是如下写的:make ARCH=arm -C /lib/modules/2.6.5-1.358/build SUBDIRS=$PWD modules |
|