RT73无线网卡驱动移植linux2.4.18-rmk7-pxal笔记

开发板内核: linux2.4.18-rmk7-pxa1
无线网卡驱动: RT73_Linux_STA_Drv1.0.4.0.tar.gz
开发板: SBC2410(s3c2410)
宿主平台: RedHat 9 (linux-2.4.20-8)
交叉编译器: 2.95.3
 
以下过程安步骤说明:
2. RT73_Linux_STA_Drv1.0.4.0.tar.gz 下载到 LINUX /opt/redhat9/wifi 目录下 ;
3. 在终端中运行 cd /opt/redhat9/wifi;
4. #tar -xvzf RT73_Linux_STA_Drv1.0.4.0.tar.gz
5. #cd ./RT73_Linux_STA_Drv1.0.4.0/Module
6. #cp Makefile.4 ./Makefile (如果是 2.6 的内核就 $cp Makefile.6 ./Makefile
7. Module 目录拷贝到开发板内核所在目录,并更名为 rt73
#cp –r Module /home/kernel/2.4.18/drivers/usb/rt73
8. 修改 config.mk Makefile
--config.mk—
LINUX_SRC=/usr/src/linux-2.4.18-3
改为
LINUX_SRC=/home/kernel/2.4.18
 
TARGET_MODDIR=/lib/modules/2.4.18-3
改为
TARGET_MODDIR=/home/kernel/2.4.18
 
Makefile 修改后的内容如下:
######################################################################
#      Module Name: Makefile
#      Abstract: Makefile for rt73 linux driver on kernel series 2.4
######################################################################
CC := arm-linux-gcc
CXX := arm-linux-g++
LD := arm-linux-ld
 
include ./config.mk
 
WFLAGS := -Wall -Wstrict-prototypes -Wno-trigraphs
CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h
 
## Comment/uncomment the following line to enable/disable debugging
#CFLAGS += -DDBG
 
CFLAGS += $(WFLAGS)
 
OBJ = rt73.o
 
rt73.o: rtmp_main.o mlme.o connect.o rtusb_bulk.o rtusb_io.o sync.o assoc.o auth.o auth_rsp.o rtusb_data.o rtmp_init.o sanity.o rtmp_wep.o rtmp_info.o rtmp_tkip.o wpa.o md5.o      
$(LD) -r $^ -o $@
 
 
## NDDIR/ifcfg-rausb0
ND_CONF=/etc/sysconfig/network-scripts/ifcfg-rausb0
 
ifdef NDDIR
NDDIR := $(NDDIR)
else
       NDDIR := /etc/sysconfig/network-scripts
endif
 
ifdef MOD_CONF
MOD_CONF := $(MOD_CONF) 
else
MOD_CONF := /etc/modules.conf
endif
 
ifdef MODDIR
       MOD_ROOT := $(MODDIR)
else
       MOD_ROOT := /lib/modules/$(shell uname -r)/extra
endif
 
 
all: $(OBJ)
@touch config.mk
       
clean:
rm -rf *.o *~ core .*.cmd *.ko *.mod.c .tmp_versions built-in.o
 
install:
@touch config.mk
install -m 755 -o 0 -g 0 -d $(MOD_ROOT)
install -m 644 -o 0 -g 0 $(OBJ) $(MOD_ROOT)
      
@echo "Network device directory $(NDDIR)";
@echo "Module configuration file $(MOD_CONF)";   
@if [ -d "$(NDDIR)" ] ; then /
        if [ ! -f "$(ND_CONF)" ]; then /
               echo "Create 'ifcfg-rausb0' in $(NDDIR)/"; /
               cp ifcfg-rausb0 $(NDDIR)/ ; /
        fi; /
       fi
@if ! grep -q 'rausb0' $(MOD_CONF) ; then /
        echo "append 'alias rausb0 rt73' to $(MOD_CONF)"; /
        echo "alias rausb0 rt73" >> $(MOD_CONF) ; /
       fi
/sbin/depmod -a
 
config:
@touch config.mk
@./Configure
 
9 .由于 2.95.3 比较弱智,不能识别代码中的换行符 ”/” ,所以还需要格式转换一下 , 否则会报一堆错误。
# cd /home/kernel/2.4.18/drivers/usb/rt73
# dos2unix *.c *.c
# dos2unix *.h *.h
 
 
10 修改内核配置文件 Config.in Makefile
# cp /home/kernel/2.4.18/drivers/usb
Config.in 文件的 comment ‘USB Network adaptors’ 项的最下面加上
……
dep_tristate ‘   Support rt73 wireless usb network device’ CONFIG_USB_RT73 $CONFIG_USB $CONFIG_NET $CONFIG_USB_USBNET $CONFIG_EXPERIMENTAL
fi
 
   Makefile 文件的中修改如下:
 
11.            然后开始配置内核编译文件
# cd /home/kernel/2.4.18
# make menuconfig
先加载原来已经定义好的配置文件
 
然后到相关的目录下设置 rt73
以上两项都需要选上。
 
先把设置保存到原来的配置文件中
退出的时候再保存到 .Config 文件中
 
12.            现在开始编译内核
# make clean
# make bzImage
 
13. 如果不出意外将会出现以下问题
 
这个问题的根源是由于在 2.4.18 的内核文件 /include/linux/netdevice.h 文件中没有定义 wireless_handlers weight
在网上发现有些人采用如下的办法解决:
1) 直接将 rtmp_main.c 文件中的这两项注释掉。结果是编译通过了,也生成了 rt73.o ,但是下到板子上却不能正常工作。
2) 将内核 2.4.20 -8 netdevice.h,wireless.h, iwhandler.h 文件覆盖掉 2.4.18 的内核文件。结果是内核文件都产生不了,而且 rt73.o 同样不能在开发板上工作,原因是内核结构和开发板的不一致了。
 
后来我又详细阅读了 rt73 驱动里带的 README 文件,发现这个驱动必须在 RedHat( kernel 2.4.18-3) 以上的版本上运行。难道 linux2.4.18-rmk7-pxal 的版本比 2.4.18-3 还低吗?后来我又去下载 diff-2.4.18-rmk7-pxa2.gz diff-2.4.18-rmk7-pxa3.gz 文件,希望在其中能找到关于 wireless 的补丁,但是没有找到,也就是说即使内核升级成了 linux2.4.18-rmk7-pxa3 也不能够解决这个问题。所以得出结论, RT73_Linux_STA_Drv1.0.4.0.tar.gz 驱动在内核为 2.4.18 的开发板上是不可能运行起来的,除非有针对 wireless 的补丁出现。同样 ZD1211 的驱动也是不行的。最好的办法是将开发板的内核升级到 2.6
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值