小度wifi驱动的交叉编译及安装

来源:互联网 发布:淘宝组装电脑 编辑:程序博客网 时间:2024/05/24 23:16

1.下载小度wifi驱动,解压到/home/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913

2.cd /home/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913修改Makefile

找到“PLATFORM = PC”语句将其注释掉,即修改为:“#PLATFORM = PC”

找到“#PLATFORM = SMDK”语句将其注释的语句解除,即“PLATFORM = SMDK”

修改完以上内容还需修改一处:

找到“ifeq ($(PLATFORM),SMDK)”语句,将其后两句语句修改为如下内容:

1.  feq ($(PLATFORM),SMDK) 

2.  LINUX_SRC =/home/openwrt/trunk/build_dir/target-mipsel_24kec+dsp_musl-1.1.10/linux-ramips_mt7620/linux-3.18.17     源码内核目录

3.   CROSS_COMPILE = /home/openwrt/trunk/staging_dir/toolchain-mipsel_24kec+dsp_gcc-4.8-linaro_musl-1.1.10/bin/mipsel-openwrt-linux-

4.   export ARCH=mips

5.   endif

3.(可选)修改无线网卡名称   include/rtmp_def.h

1.  # gedit include/rtmp_def.h  

找到line 1604,

1.  #define INF_MAIN_DEV_NAME       "ra"  

2.  #define INF_MBSSID_DEV_NAME     "ra"  

改成

1.  #define INF_MAIN_DEV_NAME       "xiaodu"  

2.  #define INF_MBSSID_DEV_NAME     "xiaodu"  

4.修改支持USB设备ID

先不要插上小度

1.  # lsusb  

再插上

1.  # lsusb  

对比发现,多了一个设备

1.  Bus 002 Device 006: ID 2955:1001 

5.添加设备  cd DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/

1.  # gedit common/rtusb_dev_id.c  

找到line 42

1.  #ifdef MT7601U  

2.      {USB_DEVICE(0x148f,0x6370)}, /* Ralink 6370 */  

3.      {USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */  

在后面加上:

1.     {USB_DEVICE(0x2955,0x1001)}, /* XiaoDu Wifi */  

6.查看os/linux/config.mk文件

确保config.mk文件中WPA_SUPPLICANT配置如下图所示。



7.配置好编译环境,执行make

8.make生成的在os/linux目录生成最后的ko文件mt7610Usta.ko传送到开发板的/lib/modules/3.18.17/目录下。同时要将源代码根目录的RT2870STA.dat文件传送到/etc/Wireless/RT2870STA/目录下,没有的话,新建目录。

9.安装模块。执行insmod mt7610Usta.ko
或依次执行
depmod

modprobe  mt7610Usta

 (或dmesg)

10.最后就是插入网卡,这个时候ifconfig是看不到网卡的,你要启用网卡,用以下命令:
ifconfig xiaodu0 up

再次ifconfig,就能看到xiaodu0的网卡了。

问题1OpenWrt的交叉编译器编译外部程序文件,遇到如下错误:

mips-openwrt-linux-gcc:warning: environment variable 'STAGING_DIR' not defined

解决:办法是在命令行输入:

exportSTAGING_DIR=(你的OpenWrt目录的绝对路径)/staging_dir

 

 

问题2error: incompatible types when assigningto type ‘int’ from type ‘kuid_t’
pOSFSInfo->fsuid = current_fsuid();

解决:把rt_linux.c里面报错那里: 

current_fsuid() current_fsgid()改成: 
current_fsuid().val 
current_fsgid().val 
就可以了,函数名我记不大清楚了,就是编译报错那里。 

或者到,h里面把那个结构的类型从int改为需要的kuid_t guid_k 
这不是什么大问题,只是变量类型不匹配,新
0 0
原创粉丝点击