查看: 5369|回复: 10

[原创] RIoTboard连载十:RT3070 USB wifi模块驱动移植 imx6

[复制链接]

15

主题

4

好友

903

积分

举人

Rank: 4

  • TA的每日心情
    开心
    2016-9-29 15:49
  • 签到天数: 113 天

    [LV.6]常住居民II

    爱板会员勋章 活跃会员勋章

    发表于 2014-5-28 00:05:15 |显示全部楼层
    正好手上有一个RT3070的USB接口wifi模块,今天晚上上网查了下,顺便做了个驱动代码在RIOtboard板子上的移植。
    具体过程如下,首先到Ralink官网上http://www.mediatek.com/en/downloads/下载最新linux驱动代码。我下的是DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2,其实已经不新了,文档上说这个代码适用于linux2.4和linux2.6内核的,内心忐忑,是否能用还是个问题,但是下载下来就编译下试试。
    代码下载到ubuntu虚拟机之后进行解压,然后到解压后的文件夹,打开readme_sta_usb文档,里面有具体修改地方的指导,但是有些具体参数没有说到。我们在这里注明下:
    首先修改makefile文件:
    set the "MODE = STA"
    chose the TARGET to Linux by set "TARGET = LINUX"
    LINUX_SRC 修改为我们RIOTboard的linux内核源代码路径。
    ifeq ($(PLATFORM), RALINK_2880)
    LINUX_SRC = /home/xinxinyuan/linux-imx
    CROSS_COMPILE = /home/xinxinyuan/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-
    endif。
    platform修改为RALINK_2880,
    #PLATFORM = CMPC
    PLATFORM = RALINK_2880
    这样我们的makefile就修改差不多了。
    然后看看config.mk文件修改的地方:
    首先根据readme文件修改如下:
    ** Build for being controlled by NetworkManager or wpa_supplicant wext functions
               Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y'.
               => #>cd wpa_supplicant-x.x
               => #>./wpa_supplicant -Dwext -ira0 -c wpa_supplicant.conf -d
            ** Build for being controlled by WpaSupplicant with Ralink Driver
               Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n'.
               => #>cd wpa_supplicant-0.5.7
               => #>./wpa_supplicant -Dralink -ira0 -c wpa_supplicant.conf -d
    这个选项根据自己需要配置就可以,然后是 cc和ld的路径配置:
    CC := /home/xinxinyuan/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc
    LD := /home/xinxinyuan/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-ld
    然后是配置编译参数,主要关心一个地方就是CPU架构
    -D__LINUX_ARM_ARCH__=7 -march=armv7-a
    我们用的是imx6s,imx6s是cortex-A9 MPcore,这个arm架构是属于armv7-a,所以这里-mach一定要配置为armv7-a,其他型号多数会出错误。这样整个编译选项就如下:
    ifeq ($(PLATFORM), RALINK_2880)EXTRA_CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -D__LINUX_ARM_ARCH__=7 -march=armv7-a -msoft-float -Uarm -DMODULE -DMODVERSIONS $(WFLAGS)export EXTRA_CFLAGSendif
    配置完后我们就可以到源代码文件夹下make,然后在os/linux/下生成rt5572sta.ko文件,没事儿,这个不影响使用,下面我们把
    rt5572sta.ko文件和源代码根目录下的RT2870STA.dat文件拷贝到RIOTboard上面,其中RT2870STA.dat一定要放在/etc/Wireless/RT2870STA路径下,.ko文件可以自己找目录。拷贝过去之后我们就insmod rt5572sta.ko,没有任何输出,然后使用lsmod查看发现驱动已经加载,说明我们的驱动初步是成功的。我们使用ifconfig命令查看下:
    net1.PNG

    已经出现ra0网络。然后使用iwlist ra0 scan扫描无线网络:
    net2.PNG

    已经可以扫描到多个无线网络,到这儿基本就可以确定我们的驱动和wifi模块已经在工作了。
    下面看看图形界面中的工作情况:
    扫描到的无线网络:
    IMG_20140527_220600.jpg

    图中可以看到多个无线网络连接点,我的就是9f995a了,在看看整体情况和wifi模块:
    IMG_20140527_220609.jpg

    IMG_20140527_220619.jpg

    好了,天不早了,先到这儿了。imx6系列的板子果然要强大许多。再添加个电池和通信模块,就可以做平板或者手机了


    已有 2 人评分声望 铜板 收起 理由
    奔跑-350257 + 1 + 2
    小菜儿 + 2 + 5 很给力!

    总评分: 声望 + 3  铜板 + 7   查看全部评分

    回复

    使用道具 举报

    1083

    主题

    2

    好友

    1万

    积分

    翰林

    Rank: 7Rank: 7Rank: 7

  • TA的每日心情
    开心
    2014-9-23 05:09
  • 签到天数: 113 天

    [LV.6]常住居民II

    发表于 2014-5-28 05:19:57 |显示全部楼层
    谢谢楼主分享!
    回复

    使用道具 举报

    67

    主题

    14

    好友

    5038

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    [LV.9]以坛为家II

    爱板会员勋章

    发表于 2014-5-28 05:59:57 |显示全部楼层
    顶一个,楼主很牛
    回复

    使用道具 举报

    33

    主题

    10

    好友

    2412

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    无聊
    2016-11-9 20:46
  • 签到天数: 229 天

    [LV.7]常住居民III

    发表于 2014-5-29 10:54:19 |显示全部楼层
    楼主好样的  我前天搞了  也修改了makefile ,make时还是遇到各种问题
    回复

    使用道具 举报

    33

    主题

    10

    好友

    2412

    积分

    进士

    Rank: 5Rank: 5

  • TA的每日心情
    无聊
    2016-11-9 20:46
  • 签到天数: 229 天

    [LV.7]常住居民III

    发表于 2014-5-29 11:00:50 |显示全部楼层
    木子鱼 发表于 2014-5-29 10:54
    楼主好样的  我前天搞了  也修改了makefile ,make时还是遇到各种问题

    终于知道我错了,我直接在Rio 系统中去make ,肯定会有很多报错。应该在电脑完整版的ubuntu中去编译生成 .ko文件 然后放进Rio系统中的  
    回复

    使用道具 举报

    67

    主题

    14

    好友

    5038

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    [LV.9]以坛为家II

    爱板会员勋章

    发表于 2014-7-28 15:50:24 |显示全部楼层
    本帖最后由 bruce_helen 于 2014-7-28 16:04 编辑

    能不能把里面用到的代码上传一下?
    下载的真辛苦,Chrome浏览器不支持这个网页,好不容易用IE下载下来,分享一下
    DPO_RT5572_LinuxSTA_2.6.1.3_20121022.tar.bz2.7z (823.35 KB, 下载次数: 1)
    回复

    使用道具 举报

    1

    主题

    11

    好友

    3615

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    12 小时前
  • 签到天数: 788 天

    [LV.10]以坛为家III

    发表于 2014-8-11 11:03:40 |显示全部楼层
    楼主,你那个液晶屏还有液晶屏控制哪买的?有木有链接?
    hjq
    回复

    使用道具 举报

    0

    主题

    0

    好友

    6

    积分

    白丁

    Rank: 1

    该用户从未签到

    发表于 2014-11-20 22:30:40 |显示全部楼层
    我也是rt3070的卡,也是用的这个驱动源码包,直接在ubuntu10.4下编译安装,编译没有问题,可是insmod后没什么效果,iwlist scan看不到东西,而且奇怪的是,网卡自动命名为wlan0(不是ra0),rmmod rt3070sta(这个只是我改的名字)后,ifconfig依然能看到卡,被折腾惨了
    回复

    使用道具 举报

    0

    主题

    0

    好友

    6

    积分

    白丁

    Rank: 1

    该用户从未签到

    发表于 2014-11-24 21:37:57 |显示全部楼层
    wuyuexyz 发表于 2014-11-20 22:30
    我也是rt3070的卡,也是用的这个驱动源码包,直接在ubuntu10.4下编译安装,编译没有问题,可是insmod后没什 ...

    发现是跟系统自带的驱动冲突了,在blacklist中添加系统自带的驱动就没这个问题了。可蛋疼的是,装上这个驱动能正常搜索到网络,但就是连接不上。。。
    另外在网上找了一个2011年的驱动编译安装就能正常连接成功,不过,ping了下延迟挺大的,虽然大多在30ms左右,但偶尔就会出现几千ms的情况,平均延迟过百。。。,在windows下ping平均延迟10多ms,差好多,不知道楼主装上了ping延迟有多大?
    回复

    使用道具 举报

    1

    主题

    0

    好友

    12

    积分

    白丁

    Rank: 1

    该用户从未签到

    发表于 2014-12-16 10:32:56 |显示全部楼层
    我按照楼主的方法编译成功,但是在加载的时候出现:modprobe:could not load /lib/modules/3.0.35/module.dep;看lib下文件,发现该文件存在/lib/modules/3.0.35-2508-g54750ff/module.dep; uname -r 出来的是3.0.35,为何二者的内核版本不一致?求解
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /6 下一条


    手机版|爱板网 |网站地图  

    GMT+8, 2016-12-5 22:44 , Processed in 0.252470 second(s), 20 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部