USB转WIFI无线网卡驱动程序(RT5370驱动程序)的移植记录之一

学习交流加

  • 个人qq:
    1126137994
  • 个人微信:
    liu1126137994
  • 学习交流资源分享qq群:
    962535112

今天记录我在I.MX6Q平台移植RT5370无线网卡驱动程序的过程,加qq1126137994 微信:liu1126137994 共同学习更多技术!!!

两种移植方法:1、移植官方下载的RT5370驱动程序源码 2、在Linux内核配置自带的RT5370驱动程序

今天先记录移植官方下载的RT5370驱动程序源码。内核自带的驱动的配置方法放到以后的文章中!

一、移植官方下载的驱动程序源码

***软件环境:***虚拟机ubuntu12.04

硬件环境: IMX6Q单板 RT5370wifi芯片

RT5370驱动程序源码下载点击下载:

先说一下思路:当我们需要移植一个驱动程序的时候,大概有两种移植的情况:移植内核自带的驱动程序,移植非内核自带的驱动程序

这里先说移植非内核自带的驱动程序的思路:首先要看源程序的README文件,看别人说的是如何修改与配置。然后一定会修改的文件是Makefile文件(主要是指定编译工具,内核树,单板信息等),然后有可能还会需要修改其他配置文件(这与具体的驱动程序有关)。

1. 首先下载驱动程

下载好的驱动程序放到Linux系统,解压,打开README_STA_usb文件:

=======================================================================
Build Instructions:  
====================1> $tar -xvzf DPB_RT2870_Linux_STA_x.x.x.x.tgzgo to "./DPB_RT2870_Linux_STA_x.x.x.x" directory.2> In Makefileset the "MODE = STA" in Makefile and chose the TARGET to Linux by set "TARGET = LINUX"define the linux kernel source include file path LINUX_SRCmodify to meet your need.3> In os/linux/config.mk define the GCC and LD of the target machinedefine the compiler flags CFLAGSmodify to meet your need.** Build for being controlled by NetworkManager or wpa_supplicant wext functionsPlease 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 DriverPlease 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 -d4> $make# compile driver source code# To fix "error: too few arguments to function ˉiwe_stream_add_event"=> $patch -i os/linux/sta_ioctl.c.patch os/linux/sta_ioctl.c5> $cp RT2870STA.dat  /etc/Wireless/RT2870STA/RT2870STA.dat6> load driver, go to "os/linux/" directory.#[kernel 2.4]#    $/sbin/insmod rt2870sta.o#    $/sbin/ifconfig ra0 inet YOUR_IP up#[kernel 2.6]#    $/sbin/insmod rt2870sta.ko#    $/sbin/ifconfig ra0 inet YOUR_IP up7> unload driver    $/sbin/ifconfig ra0 down$/sbin/rmmod rt2870sta

在README_STA_usb文件中找到上述内容,上述内容就是告诉你如何修改编译驱动程序的。
那么我们就根据上述7条内容来执行:
(1)解压
(2)修改Makefile:
打开源代码程序Makefile,发现MODE = STA TARGET = LINUX 已经是与要求的一样了,那么这两个地方就不用修改!!!

然后找到PLATFORM = SMDK 将它的注释去掉,用的平台是SMDK,同时注释掉本身设置的PLATFORM = PC 这句话。

找到:

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 = /home/zsl/work/system/linux-3.0.35
CROSS_COMPILE = /home/zsl/work/system/fsl-linaro-toolchain/bin/arm-none-linux-gnueabi-
endif
#其中LINUX_SRC代表我们开发板使用的Linux操作系统的内核目录 #
#CROSS_COMPILE代表我们编译内核用的编译工具的目录#

(3)修改os/linux/config.mk
根据文档:
define the GCC and LD of the target machine
define the compiler flags CFLAGS

查看config.mk发现如下:

CC := $(CROSS_COMPILE)gcc 
LD := $(CROSS_COMPILE)ld   

$(CROSS_COMPILE)这个是变量引用,在Makefile中这个变量就代表:/usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-

所以在这里就不需要修改!!!

然后找到:

# Support AP-Client function
HAS_APCLI=n# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=n# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n

把这几个值的n全部变成y:

# Support AP-Client function
HAS_APCLI=y# Support Wpa_Supplicant
HAS_WPA_SUPPLICANT=y# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y

然后文档中还有说关于wpa_supplicant的操作与使用放到下一篇文章讲解!

(4)make
编译源码程序,会在os/linux/目录下生成rt5370sta.ko驱动模块程序!!!

(5)load driver
装载驱动程序。装载驱动程序之前需要

将/os/linux/目录下的rt5370sta.ko拷贝到开发板上,并将驱动根目录下的RT2870STA.dat拷贝到开发板的/etc/Wireless/RT2870STA/目录下,前提是需要自己手动创建/etc/Wireless/RT2870STA/目录

然后装载驱动程序
insmod rt5370sta.ko

我的出现如下错误:

  rt5370sta: Unknown symbol usb_alloc_urb (err 0)rt5370sta: Unknown symbol usb_free_urb (err 0)rt5370sta: Unknown symbol usb_alloc_coherent (err 0)rt5370sta: Unknown symbol usb_register_driver (err 0)rt5370sta: Unknown symbol usb_put_dev (err 0)rt5370sta: Unknown symbol usb_get_dev (err 0)rt5370sta: Unknown symbol usb_submit_urb (err 0)rt5370sta: Unknown symbol usb_free_coherent (err 0)rt5370sta: Unknown symbol usb_control_msg (err 0)rt5370sta: Unknown symbol usb_deregister (err 0)rt5370sta: Unknown symbol usb_kill_urb (err 0)insmod: error inserting 'rt5370sta.ko': -1 Unknown symbol in module

这些错误都是那些函数无符号,至于为什么无符号,我查了一下,有可能是没有声明GPL协议,需要更改os/linux下的usb_main_dev.c文件,在开头的地方写上:

MODULE_LICENSE("GPL"); 

然后make 重新编译源码程序!!!编译成功
重新加载驱动程序:
insmod rt5370sta.ko
这里写图片描述

显示装载成功!!!

然后我们ifconfig ra0 up
这里写图片描述

打开ra0后,再ifconfig查看一下:
这里写图片描述
这说明我们的驱动程序已经可以正常使用了!!!

再卸载试一下:
首先:ifconfig ra0 down
然后: rmmod rt5370sta.ko
这里写图片描述
可以看出,我们的WIFI驱动程序可以正常使用与卸载!!!

那么接下来的README_STA_usb 文档中的内容是介绍如何操作使用wpa_supplicant。

这里说一下wpa_supplicant

wpa_supplicant主要是用来支持WEP,WPA/WPA2和WAPI无线协议和加密认证的,由于linux本身并不支持WPA的加密,所以需要移植wpa_supplicant来使wifi能够连接WPA加密的无线路由上,简单的说,wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。
wpa_supplicant的移植就放到下一篇文章中了~

想一起探讨以及获得各种学习资源加我:
qq:1126137994
微信:liu1126137994
可以共同交流关于嵌入式,操作系统,C++语言,C语言,数据结构等技术问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/423217.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP和RPC的优缺点

在HTTP和RPC的选择上,可能有些人是迷惑的,主要是因为,有些RPC框架配置复杂,如果走HTTP也能完成同样的功能,那么为什么要选择RPC,而不是更容易上手的HTTP来实现了。 本文主要来阐述HTTP和RPC的异同&#xff…

【Makefile由浅入深完全学习记录5】预定义变量的使用

今天学习Makefile预定义变量的使用,加qq:1126137994.微信:liu1126137994一起学习更多技术!!! 1.预定义变量:自动变量 在Makefile中存在一些预定义过的变量,我们可以直接拿来使用而…

NFC 验证平台搭建

如何把 NFC 挂载到 G7的系统中去,调试一步一步的过程中分别做了什么。 1. 在AHB1上找到1个slave的空挡,ahb-slave8,修改相应AMAB里面的ahb_dcdr.v 文件,给NFC分配基地址空间 0x110050002.在ahb1_top文件当中例化NFC,同…

两个原子操作组合到一块不一定是能保证原子性

1.两个原子操作组合到一块不一定是能保证原子性 ConcurrentLinkedQueue AtomicInteger 两个类都为线程安全的类,但是组合起来并不能保证原子性: public static ConcurrentLinkedQueue concurrentLinkedQueue new ConcurrentLinkedQueue();public static Atomic…

【Makefile由浅入深完全学习记录6】Makefile中变量的高级主题上

抓住基础,学习更多技术,迎接挑战,加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 上一篇文章学习了makefile中的预定义变量的使用,今天来继续学习makefile中的变量! 1、变量值的替换 …

micro asyn wininet

http://msdn.microsoft.com/en-us/library/cc185684(VS.85).aspx 状态机 http://support.microsoft.com/kb/224318 How To Control Connection Timeout Value by Creating Second Thread转载于:https://www.cnblogs.com/edward259/archive/2010/04/12/1710305.html

USB转WIFI无线网卡驱动程序(内核自带RT5370驱动程序添加)的移植记录之二

学习交流加 个人qq: 1126137994个人微信: liu1126137994学习交流资源分享qq群: 962535112 今天记录我在I.MX6Q平台添加内核自带RT5370无线网卡驱动程序的过程,加qq1126137994 微信:liu1126137994 共同学习更多技术&…

MYSQL[30]

MYSQL[30]转载于:https://www.cnblogs.com/motadou/archive/2010/04/13/1710849.html

Node.js安装详细步骤教程(Windows版)

Node.js安装详细步骤教程(Windows版) 什么是Node.js? 简单的说 Node.js 就是运行在服务端的 JavaScript。 Node.js是一个基于 Chrome V8 引擎的 JavaScript 运行环境; Node.js使用一个事件驱动、非阻塞式 I/O 的模型,使其轻量且高效&…

移植wpa_supplicant软件与DHCP软件解密WPA/WPA2 加密的无线网络

加qq1126137994与微信:liu1126137994 一起学习更多技术! 现在的无线网络基本都是 WPA/WPA2 加密方式的,当我们在嵌入式Linux平台要实现无线网卡连接无线网时,我们需要一些工具来解密WPA/WPA2 加密方式的无线网。wpa_supplicant软…

Quartz实现定时功能 job.xml文件的配置

使用Quartz实现定时功能 Quartz是一个完全由java编写的开源作业调度框架,具体的介绍可到http://www.opensymphony.com/quartz/官方网站查看。 Quartz的几个核心的接口和类为: Job接口:自己写的“定时程序”实现此接口的void execute(…

xshell 连接不了 centos7

xshell 连接不了 centos7 采用的是net模式 有一段时间没有使用虚拟机了:今天打开后突然不能使用了,发现主机ping不通虚拟机了,而虚拟机可以正常联网,可以ping主机 查了一下 vmnet8 自动分配的 ipv4 和虚拟机 分配的网关地址没…

内存溢出和内存泄漏的区别、产生原因以及解决方案

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 内存泄露 memory leak,是指程序在申请…

使用WebService与Oracle EBS进行集成(上)

一、概述 OracleEBS是Oracle公司的ERP产品,这个产品非常庞大,可以对企业的各个方面进行强大的管理功能,一般大型企业都会用到它的部分模块,根据公司的性质不同,选择的模块也会有所不同。对于生产型企业,所…

java多线程思维导图

分享是最好的整理,利用csdn 平台保存一下

【Makefile由浅入深完全学习记录7】Makefile中变量的高级主题下

加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 继续上一篇文章关于变量的学习! 1、环境变量(全局变量) -makefile中能够直接使用环境变量的值 如果makefile中定义了同名变量,则环境变量将被覆…

如何在数据表中存取图片 - 回复 三足乌 的问题

问题来源: http://www.cnblogs.com/del/archive/2009/05/28/1491186.html#1801853准备工作:1、在空白窗体上添加: ClientDataSet1、Button12、激活窗体的 OnCreate 事件、激活 Button1 的 OnClick 事件实现代码:unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants…

【Makefile由浅入深完全学习记录8】条件判断语句

加qq:1126137994 微信:liu1126137994 一起学习更多技术~ 今天来学习Makefile中条件判断语句! Makefile也算是一门语言,它有自己的语法,那么它应该也会像C/C语言一样,支持条件判断语句! Makef…

七个小矮人

有七个大的目标: 1,场景编辑器和模型编辑器 ---场景编辑器在网络上有很多,主要是提供给美术设定一个完整的场景,让美术把场景的各个方面都诶放进来。这个就以流行的实现就好了 -----标准就是实现换装,动作融合和更改 …

C语言实现位数组(bit数组)与位数组的简单应用举例

学习交流加(可免费帮忙下载CSDN资源):个人微信: liu1126137994学习交流资源分享qq群1(已满): 962535112学习交流资源分享qq群2: 780902027 今天有朋友遇到一个笔试题:一个…