本帖最后由 lzy804032511 于 2016-5-23 09:50 编辑
之前公司用的新唐的972,一直感觉不错,买了块安米的972开发板和必联的AR8无线网卡,想把无线网卡挂到972上面去,写下移植过程,方便以后移植其他网卡和各位工友参考。首先说明本人水平初级,不要见笑。
1.到网卡供应商寻找驱动
到必联官网上去下载驱动,瞬间方了,居然只有windows的驱动,没有linux的,听新唐FAE说的最好用官方驱动,没办法,只有找找了
2.到网上搜linux驱动源码
先找到了别人的移植贴子
链接:blog点163点com/gl_jiang@126/blog/static/7610097220144145340238/
有戏!别人移植成功过,那就好搞了。
结果自己下载来编译后,在虚拟机上能用,而且ifconfig ra0 up要20多秒才能启动,遇到问题了,首先想的是绕过他,觉得友商肯定也有MT7601的无线网卡卖,说不定成熟的驱动有现成的,于是淘宝一搜,找到GRIS有一款MT7601的,赶紧找有没驱动,然后下载下来
驱动资料链接:pan点baidu点com/s/1jHsrSr0不让发链接。。。。
3.越是详细的资料,就应该多阅读
大致阅读了资料中的几个文档,锁定了MTK_Wi-Fi_STA_Software_Programming_Guide_v1.4.pdf中3.3到3.8,然后将文件夹拷到虚拟机
养成好的习惯,先读下README,结果发现没得想要的东西,然后按照刚才Guide手册,先make
编译完后,将MODULE/os/linux/mt7601Usta.ko,NETIF/os/linux/mtnet7601Usta.ko,UTIL/os/linux/mtutil7601Usta.ko拷到根目录,然后依次
insmod /mtutil7601Usta.ko
insmod /mt7601Usta.ko
insmod /mtnet7601Usta.ko
ifconfig ra0 up
ifconfig
先看能不能找到ra0以及对应的HWaddr,结果很顺利找到了,而且没有按照别人帖子做完后网卡卡很久的现象,哈哈,有戏!
iwlist ra0 scanning看能不能扫描到网络
iwpriv ra0 set NetworkType=Infra
iwpriv ra0 set AuthMode=WPA2PSK
iwpriv ra0 set EncrypType=AES
iwpriv ra0 set WPAPSK=1234567890
iwpriv ra0 set SSID=test
iwpriv ra0 connStatus看看有没连上
ifconfig ra0 192.168.1.132 netmask 255.255.255.0
route add default gw 192.168.1.1
ping 192.168.1.1能ping通,然后用firefox看看能不能上网,发现能上网,好,虚拟机上基本差不多了
3.移植到NUC972
参照Guide手册中,需要改平台的变量和源码路径及工具链路径
先find ./ -name "*" | xargs grep "PLATFORM = PC"
发现有四个地方,好吧,那我就都改掉
平台需要修改
#PLATFORM = PC
PLATFORM = SMDK
ifeq中的内核源码路径和工具链需要修改
ifeq ($(PLATFORM),SMDK)
LINUX_SRC = /mcuzone/work/linux-3.10.x
CROSS_COMPILE = /opt/arm-2014.05/bin/arm-none-linux-gnueabi-
endif
改完后,make
发现错误/home/cust/lzyworkspace/Tools/MT7601U/MT7601U/UTIL/os/linux/../../os/linux/rt_linux.c:1844: error: 'struct net_device' has no member named 'wireless_handlers'
郁闷了一会,没办法,看看开发板提供的手册和新唐的BSP手册吧
发现这些对应的选项都要勾上 ,而且env_ubi.txt环境中需要修改
baudrate=115200
bootdelay=3
ethcat=emac
ethaddr=00:00:01:14:34:ab
stderr=serial
stdin=serial
stdout=serial
serverip=192.168.3.155
ipaddr=192.168.3.136
bootcmd=nboot 0x7fc0 0 0x200000\;bootm 0x7fc0
bootargs=mem=64M console=ttyS0,115200n8 coherent_pool=2M rdinit=/sbin/init mtdparts=nand0:16M(boot)ro,-(rootfs) rootfstype=ubifs ubi.mtd=1 root=ubi0_0
好了,修改完后,编译内核,然后再编译无线网卡驱动,可以编译成功了,焼写,运行
挂好nfs,或者想办法吧编译出来的三个ko文件,以及 RT2870STA.dat 拷到开发板中,将RT2870STA.dat拷到开发板/etc/Wireless/RT2870STA/
insmod mtutil7601Usta.ko
insmod mt7601Usta.ko
insmod mtnet7601Usta.ko
ifconfig ra0 up
iwpriv ra0 set NetworkType=Infra
iwpriv ra0 set AuthMode=WPA2PSK
iwpriv ra0 set EncrypType=AES
iwpriv ra0 set WPAPSK=1234567890
iwpriv ra0 set SSID=test
iwpriv ra0 connStatus看看有没连上
ifconfig ra0 192.168.1.132 netmask 255.255.255.0
route add default gw 192.168.1.1
ping 192.168.1.1
注意开发板上的iwpriv需要自己编译,我用的开发板文件系统中以前以及编译好了,可以直接用,至此就以及初步移植完成了,测试能当客户端使用了,当做AP还没试过。
写得也比较匆忙,大致过程是这样,写得不好大家多见谅!
|