Tiny6410移植MT7601U方案的USB无线网卡 (360随身WiFi2代3代)(通过测试,串口数据很少)

时间:2021-11-03 16:05:55
            最近两天终于将360随身WIF3代成功移植到了Tiny6410的开发板了(已经通过测试,串口几乎没有数据传出,方便超级终端使用),借助QT环境下友善之臂目录中的无线网络设置,可以轻松搜索周围的无线AP。So Happy,只要付出时间去学习,技术还是会慢慢积累的。        

           下边开始码字,记录一下移植的过程,把这个移植当做 arm-linux开发的开始。

        【目标板】tiny6410

         【开发环境】Win7+Vmware+Ubuntu 16.04

         【交叉编译器】arm-linux-gcc 4.5.1

          【通讯方式】 Win7与Ubuntu之间使用Samba,目标板与主机之间使用SD卡

(1) 编译内核,在FriendlyARM-Tiny6410-DVD-A/Linux下有linux-2.6.38-20150708.tgz或者linux-2.6.38-20141014.tgz等形式,这里我使用的是20150708版本

tar xvzf linux-2.6.38-20150708.tgz
cd linux-2.6.38/
cp config_linux_mini6410 .config 

开始编译

make

很显然使用arm-linux-gcc 4.5.1会报这样一个错误。

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373.
/opt/ARM/mini6410/linux/linux-2.6.38/kernel/Makefile:140: recipe for target 'kernel/timeconst.h' failed
make[1]: *** [kernel/timeconst.h] Error 255
Makefile:916: recipe for target 'kernel' failed
make: *** [kernel] Error 2

解决方法:

将kernel/timeconst.pl中第373行的defined()去掉,修改成:if(!@val)

 

(2) 下载解压驱动,这里我使用的是DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2,这是针对MT7601U STA模式下的驱动源码(百度在CSDN上的分享很多)

解压驱动

tar jxf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2  

修改名字

mv DPO_MT7601U_LinuxSTA_3.0.0.4_2010913  mt7601u  

 
(3)修改Makefile

vi Makefile

注释line30, 取消注释lin49

PLATFORM = SMDK

 

line 275

ifeq ($(PLATFORM),SMDK)  
LINUX_SRC = /home/bhushan/itcenter/may28/linux-2.6-samsung
CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
endif

修改为

 
ifeq ($(PLATFORM),SMDK)  LINUX_SRC =/opt/FriendARM/mini6410/linux/linux-2.6.38 CROSS_COMPILE = /opt/FriendlyARM/toolschain/4.5.1/bin/arm-linux-
endif
 

LINUX_SRC为刚才编译内核的文件路径

CROSS_COMPLE=  交叉编译路径

 

(4)修改部分文件。

1.修改include/rtmp_def.h

vi /include/remp_def.h

修改line 1604,1605 将ra 修改成 wlan

2. 修改mt7601u/os/linux/config.mk

vi /mt7601u/os/linux/config.mk

 

在最后一行增加

ifeq ($(PLATFORM),SMDK)
ifneq (,$(findstring 2.4,$(LINUX_SRC)))
# Linux 2.4
CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h $(WFLAGS)
export CFLAGS
else
# Linux 2.6
EXTRA_CFLAGS := $(WFLAGS)
endif
endif

 

3.增加设备(如果使用的都是mt7601u芯片的话)只要使用lsusb命令即可查到设备的ID

vi common/rtusb_dev_id.c


在lin43  /*mt 6370*/ 后按照上一行的形式增加即可

 

(5) 编译回到mt7601u的目录

make

驱动生成很大,可以使用命令精简

arm-linux-strip -S os/linux/mt7601Usta.ko


(6) 现在可以通过Smbma进入Linux系统的编译目录 找到 mt7601Usta.ko 和RT2870STA.dat两个文件

遵循接下来的步骤

1、 将mt7601Usta.ko 拷贝至SD卡中
2、 将SD卡插入arm开发板,自动读取
3、 使用超级终端SecureCRT, 输入

(1)cp /sdcard/mt7601Usta /lib/modules/2.6.38-FriendlyARM/
(2)mkdir –p /etc/Wireless/RT2870STA/ //必须创建该目录,因为启动时会自动查询该目录
(3)cp /sdcard/RT5370/RT2870STA.dat /etc/Wireless/RT2870STA/
(4)depmod
(5) modprobe mt7601Usta

 

4、使用友善之臂下的 "无线网络设置" 即可搜索无线网络
5、如果每次想开机后,不想重新载入驱动的话,请使用如下的命令
(1)vi /etc/init.d/rcS
(2)在最后增加一行  modprobe mt7601Usta

 

 在之前的文章中http://blog.csdn.net/ofaith12345/article/details/24963457

使用驱动会有串口大量的信息通过超级终端吐出,在使用时造成极大的不方便,查了源码后,发现吐出的信息都是debug的信息,并没有注释。经过三天后下班时间的测试和debug,查源码,重新编译后,生成现在的版本的驱动几乎没有串口吐信息出来,很方便大家的使用。下载地址

 

参考的文章地址:

1. http://blog.csdn.net/ofaith12345/article/details/24963457

2. http://blog.csdn.net/ofaith12345/article/details/24138399

3. http://blog.csdn.net/colouring/article/details/43449719

4.http://blog.csdn.net/diandianyangyi/article/details/16113473