⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tl-wn321g无线网卡for2.6.14移植详细步骤.rtf

📁 本压缩文件中的文档详细记录了基于嵌入式处理器s3c2410下的linux内核(官方版本2.6.14)移植过程,以及摄像头移植,TL-WN321G无线网卡移植详细步骤。这是本人实践的经验总结
💻 RTF
字号:
1.进入无线网卡驱动目录 #cp Makefile.6 Makefile2.修改Makefile:NDDIR=/WirelessCard/busybox-1.2.1/_install/etc/sysconfig/networkMOD_CONF=/WirelessCard/busybox-1.2.1/_install/etc/modprobe.d/module-renames## NDDIR/ifcfg-rausb0ND_CONF=/WirelessCard/busybox-1.2.1/_install/etc/sysconfig/network-scripts/ifcfg-rausb0还需修改其它的3.#make all3.#cp  rt73.bin  busybox的主目录/_install/etc/Wireless/RT73STA/ 4.#dos2unix rt73sta.dat  #cp rt73sta.dat  busybox的主目录/_install/etc/Wireless/RT73STA/rt73sta.dat5.6.进入开发板系统 # insmod rt73.ko以上问题解决后,无线网卡工作正常。但还需移植无线扩充以便使用无线配置命令。从http://www.hpl.hp.co.uk/personal/Jean_Tourrilhes/Linux/Tools.html处下载无线扩充包修改无线扩充包的Makefile(可参照wireless tools 26),然后编译,出现下列提示:/include -o iwconfig iwconfig.o libiw.a/WirelessCard/arm-cross-3.4.1/usr/local/arm/3.4.1/bin/../lib/gcc/arm-linux/3.4.1/../../../../arm-linux/bin/ld: cannot find -lgcc_s解决方法:在Makefile文件的CFLAGS中添加-L /WirelessCard/arm-cross-3.4.        1/usr/local/arm/3.4.1/arm-linux/lib  -lm -lc -lgcc_s然后进入交叉编译器的lib目录 ,输入:ln -s libgcc_s.so.1 libgcc_s.a$make$make install 成功______________________________________________________________________4.无线网卡配置a.先执行一下这个命令看一下rausb0设备是否注册:cat /proc/net/dev如果显示rausb0表已注册b.   $/sbin/insmod rt73.ko   然后插入网卡输入:  $/sbin/ifconfig rausb0 inet YOUR_IP netmask 255.255.255.0 up$route add default gw 10.1.41.2$/usr/local/sbin/iwconfig rausb0 essid "TP-LINK" (不能成功设置)$/usr/local/sbin/iwconfig rausb0 mode "ad-hoc" (能成功设置)$/usr/local/sbin/iwconfig rausb0 channel 54 (能成功设置)所以无法进行无线通信问题解决:为了解决问题,重新在PC机上进行试验。按照驱动的README文件的说明,发现关键的一点是必须用命令$dos2unix rt73sta.dat 保证rt73sta.dat是二进制文件。而且必须用vi -b rt73sta.dat 对rt73sta.dat进行必要的修改。# Copy this file to /etc/Wireless/RT73STA/rt73sta.dat
# This file is a binary file and will be read on loading rt.o module.通过上述方法PC可以成功和AP通信,但在嵌入式板子上进行试验发现把rt73sta.dat文件删除与否效果一致,表明在装入驱动时根本没有读这个二进制文件,这就是问题的症结所在。问题解决: 1.i can't see the SSID - after I had it set with iwpriv oder iwconfig.Ony if i compile the driver with Debug option (CFLAGS += -DDBG)   $insmod rt73.ko  $ifconfig rausb0 inet 10.1.41.222 netmask 255.255.255.0  然后出现debug信息,观察发现**RT2573**<7>--> NICLoadFirmware**RT2573**<7>--> Error 2 opening /friendly-arm/root/etc/Wireless/RT73STA/rt73.bn**RT2573**<7>NICLoadFirmware failed, used local Firmware(v 1.7) instead**RT2573**<7><-- NICLoadFirmware (src=/friendly-arm/root/etc/Wireless/RT73STA/r)**RT2573**<7>--> NICInitializeAsic**RT2573**<7>BBP version = 22**RT2573**<7><-- NICInitializeAsic**RT2573**<7>--> Error 2 opening /friendly-arm/root/etc/Wireless/RT73STA/rt73stt**RT2573**<7>--> NICReadEEPROMParameters也就是说NICLoadFirmware去装载的配置文件的位置不对搜索驱动源文件目录:grep 'friendly-arm' * 修改 vi rt_config.h中以下各行:#define PROFILE_PATH                "/friendly-arm/root/etc/Wireless/RT73STA/rt73sta.dat"#define RT2573_IMAGE_FILE_NAME      "/friendly-arm/root/etc/Wireless/RT73STA/rt73.bin"经过以上修改,仍有以下错误:ERROR!!! <7>MlmeEnqueueForRecv: frame too large, size = 3083分别到网卡驱动源程序目录中:make all > /zxh/NetCardForPC 2>&1 ;make all > /zxh/NetCardForArm 2>&1对比对驱动进行本机编译和交叉编译过程的对比,发现交叉编译中有以下警告信息:/WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c: In function `AsicS        witchChannel':     32 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c:3822: warning: comp        arison is always false due to limited range of data type     33 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c:3828: warning: comp        arison is always true due to limited range of data type     34 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c:3880: warning: comp        arison is always false due to limited range of data type/WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c: In function `AsicA        djustTxPower':     36 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/mlme.c:4439: warning: comp        arison is always false due to limited range of data type/WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c: In function `        NICReadEEPROMParameters':     96 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1053: warning:         comparison is always false due to limited range of data type     97 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1066: warning:         comparison is always false due to limited range of data type     98 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1083: warning:         comparison is always false due to limited range of data type     99 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1183: warning:         comparison is always false due to limited range of data type    100 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1187: warning:         comparison is always false due to limited range of data type    101 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1195: warning:         comparison is always false due to limited range of data type    102 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:1199: warning:         comparison is always false due to limited range of data type    103 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c: In function `        RTMPCckBbpTuning':    104 /WirelessCard/RT73_Linux_STA_Drv1.0.3.6/debug/rtmp_init.c:3207: warning:         comparison is always true due to limited range of data type分析:on x86 char defaults to signed char, but on the ppc (and ARM, don't know aboutsparc) char =3D=3D unsigned char.gcc has the options -fsigned-char and -funsigned-char to change the signedness of type char通过以上设置与ap的通信依然有点问题,在debug模式下出现的提示信息中有如下内容:(以下信息是在ad-hoc模式下与acer笔记本通信时的信息)PeerBeaconAndProbeRspSanity - missing field, Sanity=0x00可用diff -u  -b  rt_config.h  /download/RT73_Linux_STA_Drv1.0.3.6/ARM-Module/rt_config.h来比较两个文件的内容用diff -u  -b  debug  /download/RT73_Linux_STA_Drv1.0.3.6/ARM-Module/比较两个目录的文件在rtmp_init.c的第2775行加入语句if (Length ==0) return; IN      PVOID   pSrc,        IN      ULONG   Length) {+       if (Length ==0) return;+ #ifdef RTMP_EMBEDDED(rt_config.h中包含了i386的头文件,改成arm后编译链接可以通过,但不能正常建立无线连接
后来我使用printk不断地跟进代码的执行路径, 最终才发现在ARM板上向网卡
下的配置数据流和在PC机上向网卡下的配置数据流不一致才确认是结构定义的修饰问题
还有一个空指针问题如果只修改上面两点, 在ARM上运行时会发生oops原因是使用中存在空指针访问)__________________________________________________________________________________________________________________________________________________________________________If you want for rt73 driver to auto-load at boot time:A) choose rausb0 for first RT73 WLAN card, rausb1 for second RT73 WLAN card, etc. B) create(edit) 'ifcfg-rausb0' file in /etc/sysconfig/network-scripts/,   edit( or add the line) in /etc/modules.conf:       alias rausb0 rt73C) edit(create) the file /etc/sysconfig/network-scripts/ifcfg-rausb0   DEVICE='rausb0'   ONBOOT='yes'_______________________________________配置:iwconfig ath0 essid XXXXXXiwconfig ath0 key open YYYYYYYifconfig ath0 up然后就是配ip和网关,我用的dhcpdhcpclient ath0然后就ok了(essid等信息和AP的设置有关,将AP设置中的essid等信息修改一下,就可以在无线网卡的信息中列出来(如果在测试区域内只有一个AP的话)用iwconfig设置无线物理参数:1.网络标识:[root@Jack ~]#  iwconfig ath0 essid “jack”2.网络频率:[root@Jack ~]# iwconfig ath0 freq 5.2G3.网络频道:[root@Jack ~]# iwconfig ath0 channel 114.网络速率:[root@Jack ~]# iwconfig ath0 rate 54M auto5.WEP加密:[root@Jack ~]# iwconfig ath0 key DEAD-BEFF-AA  (可选,默认不加密)6.发射功率: [root@Jack ~]# iwconfig ath0 txpower 30 (可选, 以dBm为单位,自动使用默认值)最常用的工具是 iwconfig,它的用法类似 ifconfig。没有接口名称之外的参数的 iwconfig 命令可以得到网卡的工作状态:gnawux@APTITUDE:~$ /sbin/iwconfig wlan0wlan0     unassociated  ESSID:off/any  Nickname:"ipw2100"          Mode:Managed  Channel=0  Access Point: 00:00:00:00:00:00          Bit Rate=0 kb/s   Tx-Power:off          Retry:on   RTS thr:off   Fragment thr:off          Power Management:off          Link Quality:0  Signal level:0  Noise level:0          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0          Tx excessive retries:0  Invalid misc:0   Missed beacon:0使用“mode”参数,你可以更改无线网卡的工作模式APTITUDE:/home/gnawux# iwconfig wlan0 mode 1APTITUDE:/home/gnawux# iwconfig wlan0wlan0     unassociated  ESSID:off/any  Nickname:"ipw2100"          Mode:Ad-Hoc  Channel=0  Cell: 00:00:00:00:00:00          Bit Rate=0 kb/s   Tx-Power:off          Retry:on   RTS thr:off   Fragment thr:off          Encryption key:off          Power Management:off          Link Quality:0  Signal level:0  Noise level:0          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0          Tx excessive retries:0  Invalid misc:0   Missed beacon:0这里,我们把网卡的工作模式改成了 Ad Hoc 模式(点对点)了。使用 essid 参数,还可以改动网络的名称:APTITUDE:/home/gnawux# iwconfig wlan0 essid gnawuxAPTITUDE:/home/gnawux# iwconfig wlan0wlan0     IEEE 802.11b  ESSID:"gnawux"  Nickname:"ipw2100"          Mode:Ad-Hoc  Frequency:2.412 GHz  Cell: 02:0C:F1:0F:11:2A          Bit Rate=0 kb/s   Tx-Power:off          Retry:on   RTS thr:off   Fragment thr:off          Encryption key:off          Power Management:off          Link Quality=60/100  Signal level=-83 dBm          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0          Tx excessive retries:0  Invalid misc:0   Missed beacon:0你可能注意到了,现在我们的很多状态参数都有了有意义的值,这是因为我们有了一个合法的 ESSID 了。对于其他参数,可以参考 iwconfig(8)。另一个常用工具是 iwlist,这个工具可以用来列出可用资源。使用 scanning 参数,可以看到所有的 AP:gnawux@APTITUDE:~$ /sbin/iwlist wlan0 scanningwlan0     Scan completed :          Cell 01 - Address: 00:0D:BD:6F:B4:48                    ESSID:""                    Protocol:IEEE 802.11b                    Mode:Master                    Channel:6                    Encryption key:on                    Bit Rate:11 Mb/s                    Extra: Rates (Mb/s): 1 2 5.5 11                    Extra: Signal: -70  dBm                    Extra: Last beacon: 59ms ago          Cell 02 - Address: 86:CF:C1:34:12:06                    ESSID:"gnawux"                    Protocol:IEEE 802.11b                    Mode:Ad-Hoc                    Channel:11                    Encryption key:off                    Bit Rate:11 Mb/s                    Extra: Rates (Mb/s): 1 2 5.5 11                    Extra: Signal: -37  dBm                    Extra: Last beacon: 2ms ago而使用 frequency 参数,我们可以得到频率列表:gnawux@APTITUDE:~$ /sbin/iwlist wlan0 freqwlan0     14 channels in total; available frequencies :          Channel 01 : 2.412 GHz          Channel 02 : 2.417 GHz          Channel 03 : 2.422 GHz          Channel 04 : 2.427 GHz          Channel 05 : 2.432 GHz          Channel 06 : 2.437 GHz          Channel 07 : 2.442 GHz          Channel 08 : 2.447 GHz          Channel 09 : 2.452 GHz          Channel 10 : 2.457 GHz          Channel 11 : 2.462 GHz          Channel 12 : 2.467 GHz          Channel 13 : 2.472 GHz          Channel 14 : 2.484 GHz          Current Channel=1你同样可以通过 iwlist(8) 得到更多信息。除了上面的两个,还有很多其他工具,包括 iwevent, iwgetid, iwpriv, iwspy, 用来获取网卡工作状态、对网卡进行管理。  四、备份文件用cp在不同的盘中复制往往会出问题,最好用tar打包a.tar cvf aa.tar aa  ;(aa为目录)b.对复制进行验证无论使用 cp 还是 tar,您始终都应该验证复制过程是否成功完成。尽管 tar 对所复制的文件进行了证实(使用 v 选项),但是您应该确保在新的文件系统中正确地创建了这些文件。首先,检查 du 对旧的和新的系统的输出$ du -sk /usr3923068 /usr$ du -sk /mnt/usr.tmp3923068 /mnt/usr.tmp这两个数字应该是相等的,然而,根据新文件系统的类型以及旧文件系统/目录和新文件系统/目录中对应的文件和目录的分配大小的不同,您可能会发现它们在大小上有些细微的差异。另一种好的测试方法是,比较源和目标文件/目录的数目。您可以使用简单的 find command 来完成这项工作$ find /usr |wc -l347001$ find /mnt/usr.tmp |wc -l347001_________________________________________________________________

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -