wifi 移植

来源:互联网 发布:淘宝客服聊天记录恢复 编辑:程序博客网 时间:2024/05/15 23:32
硬件 yl9200  usb无线网卡 wl 167g 
软件  arm-linux-gcc 3.3.2  开发板 linux 2.6.13  主机 2.6.24 
网卡驱动  rt73-cvs-daily.tar.gz 
busybox busybox-1.9.2.tar.bz2 
wirelss tool wireless_tools.29.tar.gz 
ps:除gcc,所有工具都在/srv目录下,内核为yl9200配套 
  
  
1,下载解压驱动 
# wget http://rt2x00.serialmonkey.com/rt73-cvs-daily.tar.gz 
解压:# tar zxvf rt73-cvs-daily.tar.gz(以下各公具的解压省略) 
  
2,在内核中创建新文件夹drivers/usb/net/rt73, 
# mkdir drivers/usb/net/rt73 
将解压出来的文件夹Module下的文件拷贝到刚才新建的rt73文件夹中: 
cp Module/* /srv/linux-2.6.13-hzh/drivers/usb/net/rt73 
  
3,修改内核源代码,加入RT73驱动配置信息 
修改drivers/usb/net/Kconfig文件,加入RT73的驱动模块的配置项: 
# gedit drivers/usb/net/Kconfig & 
加入以下内容: 
config RT73 
     tristate "support for rt73 wireless usb device" 
     depends on USB && NET && USB_USBNET 
  
修改drivers/usb/net/Makefile, 加入rt73的编译项: 
# gedit drivers/usb/net/Makefile & 
添加一下内容: 
obj-$(CONFIG_RT73)+= rt73/ 
  
4,根据arm4.patch更改驱动文件(具体参照arm4.patch) 
修改RT73的Makefile,设置内核位置和编译选项: 
  
删除以前的module选项,并将arm编译项改成modules,这样编译的时候才是for ARM版本的驱动模块,并更改为如下内容; 
modules: 
     @$(MAKE) $(KBUILD_PARAMS) $(EXTRA_CFLAGS) \ 
                     modules; \ 
     $(MODULE_CHECK) 
添加 
EXTRA_CFLAGS += -DRTMP_EMBEDDED(否则找不到搜索结果) 
  
修改KERNDIR为开发板内核位置: 
  
KERNDIR :=/srv/linux-2.6.13-hzh 
  
5, 
更改内核makefile 
ARCH        ?= arm 
CROSS_COMPILE    ?=/usr/local/arm/3.3.2/bin/arm-linux- 
  
配置内核: 
make menuconfig 
在USB devices à network à support for rt73 wireless usb device,按空格键选为M,将其编译成模块。( 进入usb network adapter后选中 Multi-purpose USB Networking Framework后,rt73才出现) 
selecting [Device Drivers] -> [Networking support] -> [Wireless LAN(non-hamradio)] -> Wireless LAN drivers (non-hamradio) & Wireless Extensions. 
去掉devfs的支持 
另外内核需要下面选项的支持 
- support for hot-pluggable devices CONFIG_HOTPLUG 
- userspace firmware loading support CONFIG_FW_LOADER 
- wireless LAN drivers (non-hamradio) & wireless extensions CONFIG_NET_RADIO 
- OHCI HCD support CONFIG_OHCI_HCD 
  
this includes are necessary for compiling the driver without errors 
  
6,编译内核模块: 
# make modules 
成功编译后,会在drivers/usb/net/rt73目录下生成rt73.ko驱动文件 
  
7,制作根文件系统,添加对mdev的支持 
按yl手册里的步骤制作根文件系统 
利用busybox对系统做一个基本的配置,选上mdev,udhcpc 
更改busybox的Makefile 

ARCH        ?= arm


CROSS_COMPILE    ?=/usr/local/arm/3.3.2/bin/arm-linux- 
配置静态库时把applets/applets.c的20到25行注释掉 
更改etc/init.d下rcS 
去除devfs部分 
添加 
mkdir /dev/pts 
mount -t devpts devpts /dev/pts 
mount -t sysfs sysfs /sys 
mount -t tmpfs mdev /dev 
echo "# starting mdev...." 
/bin/echo /sbin/mdev > /proc/sys/kernel/hotplug 
/sbin/mdev -s 
  
在dev目录下创建设备节点 
mknod console c 5 1 
mknod null c 1 3 
在etc目录下建立mdev.conf 
touch mdev.conf 
将rt73.bin移动到lib/firmware目录下 
  
8,移植wireless tool 
makefile 中更改BUILD_NOLIBM = y 
把生成的文件移动到guo目录下 
  
9,将rt73.ko复制到NFS目录 
mount -t nfs 192.168.0.7:/home/nfsboot /mnt/nfs -o nolock 
cp rt73.ko /home/nfsboot 
  
10,加载模块 
insmod rt73.ko 
  
11,ifconfig wlan0 up 
  
12,udhcpc -i wlan0 
get ip!