导言
COMFAST CF150NS USB无线网卡运用IEEE802.11n无线技能,无线传输速率最高达150 Mbps。比较传统的54 Mbps IEEE802.11g产品,具有更高的无线带宽,让局域网内的数据传输愈加高效,能有效地削减网络推迟,使语音视频、网络游戏、在线点播更流通。CF150NS还运用了CCA(Clear Channel Assessment)空频道检测技能,在检测到周边有无线信号搅扰时,可主动调整频宽形式,避开信道搅扰,使无线信号愈加安稳。当搅扰消失时,又可主动绑缚闲暇信道,充分利用信道绑缚优势,提高无线功用。CF150NS首要技能参数:主芯片Realtek 8188SU,接口USB2.0,频率规模为2.4~2.48 GHz,支撑IEEE802.11n/g/b无线规范;无线速率最高可达150 Mbps(IEEE802.11n);作业形式AdHoc和Infrastructre可选;加密特性为64/128位WEP、WPA/WPA2、WPAPSK/WPA2PSK(TKIP/AES);支撑的操作体系为Windows/Linux/Mac[1]。
1 移植要求
移植方针是在原有ARM监测体系的基础上完结USB无线网卡功用扩展,为体系供给数据长途无线收集计划。原ARM监测体系是在优龙YLE2440开发板上开发的,其Linux内核版别为2.6.12.7。USB无线网卡是外部无线网络体系供给的指定产品COMFAST CF150NS,其主芯片Realtek 8188SU的Linux内核版别要求是2.6.18~2.6.33。也就是说,整个移植进程要求USB无线网卡驱动有必要是Realtek 8188SU,且作业环境是Linux2.6.12.7。Realtek公司对8188SU主芯片驱动供给的主张是PC机Fedora Linux 2.6.24测验通过。经测验,若直接将驱动运用Linux 2.6.12.7内核编译,将呈现很多过错。如何将驱动移植到Linux 2.6.12.7还需求进一步研讨。
2 移植进程
2.1 移植环境树立
移植进程选用VM虚拟机下装置RedHat9.0来完结。详细装备:PC操作体系为VMware Workstation5.5 RedHat 9.0(Linux 2.4.20);硬件为优龙YLE2440开发板;操作体系为Linux 2.6.12.7,装置方位为/test/yle2440_2.6.12;穿插编译器为gcc3.4.1,装置方位为/usr/local/arm/3.4.1/bin/;Busybox装置方位为/test/busybox;文件体系为/test/rootfs/;文件体系生成东西为mkcramfs;USB无线网卡驱动源码为/test/8188su/driver/8188su;无线管理东西wirelesstools为/test/wireless_tools.29.tar.gz。别的,还需求预备Linux 2.6.24内核[2]。
2.2 Linux内核装备[3]
进入内核装置目录/test/yle2440_2.6.12,运转内核装备:
[root@localhost test]# make menuconfig
(1) 添加WLAN支撑
挑选[Device Driver]→[Networking support]→[Wireless LAN (nonhamradio)]→[Wireless LAN drivers (nonhamradio) Wireless Extensions]。
(2) 添加DHCP支撑
挑选[Device Driver]→[Networkingsupport]→[Networking options]。必须选中“Packet socket”和“IP: DHCP support”、“Network packet filtering framework(Netfilter)”选项。
别的,还需求udhcpc的装备文件。复制Busybox目录/examples/udhcp下的simple.script到文件体系/usr/share/udhcpc/下,偏重命名为default.script。将default.script中的
RESOLV_CONF=/etc/resolv.conf
OR: rgb(68,68,68); WORD-SPACING: 0px; PADDING-TOP: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px>修正为
RESOLV_CONF=/tmp/resolv.conf
运转“mkcramfs rootfs rootfs.cramfs”生成根文件体系rootfs.cramfs,偏从头下载到方针板。
2.3 Linux内核文件修正
首要将Linux2.6.24内核中的netdevice.h、wireless.h、iw_handler.h复制至Linux2.6.12内核相应目录下。然后以Linux2.6.24内核为蓝本进行文件树立、修正和替换。需求替换的文本清单为:
① /include/linux/目录,wireless.h、skbuff.h、textsearch.h、netdevice.h、slab.h、ip.h、icmp.h、socket.h;
② /include/net/目录,iw_handler.h、sock.h;
③ /include/sound/目录,core.h;
④ /net/core/目录,dev.c、skbuff.c、wireless.c、neighbour.h;
⑤ /net/ipv4/目录,ip_output.c、devinet.c、socket.c;
⑥ /net/netlink目录,af_netlink.c;
⑦ /mm/目录,slab.c。
文件替换结束进行内核编译:
make zImage
生成内核zImage后下载到方针板。在内核编译的进程中,还会呈现许多过错,首要是C90语法过错、所调用函数数据类型不匹配、段符号未定义等问题。首要的修正内容:
① 内核编译时若呈现C90语法和C99语法过错,只需依照本编译体系所选用的编译规范进行语法修正。例如,/net/core/dev.c中函数“net_rx_action”的第1713~1729行提示有语法过错。其间,第1713行的过错依照C90语法修正即可消除,其他过错为所调用函数数据类型不匹配所造成的,修正所调用函数的数据类型即可。
② 呈现提示“.data=no_cong_thresh”未定义之类的过错时,在相应源码中将其注释即可。
③ Wireless_seq_show函数过错直接选用2.6.24版别替换2.6.12版别即可。
④ net_sysctl_strdup类过错和正告一定要消除,消除办法是替换neighbour.h文件及相关文件。
2.4 USB无线网卡驱动编译
首要,下载主芯片Realtek 8188SU的最新驱动RTL8188SU_usb_linux_v2.6.6.0.20101111.zip,然后解压进入相应目录修正config、Makefile文件。
(1) 修正config
[root@localhost 8188su]# gvim config
修正第16行,封闭PC形式:
16 CONFIG_PLATFORM_I386_PC=n
修正第18行,翻开ARM形式
18 CONFIG_PLATFORM_ARM_S3C=y
(2) 修正Makefile
修正穿插编译器和ARM内核装置目录:
[root@localhost 8188su]# gvim Makefile
修正第94行为gcc穿插编译器地点途径:
CROSS_COMPILE:=/usr/local/arm/3.4.1/bin/armlinux
修正第95行,直接注释掉以下句子: