学习交流加

  • 个人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语言,数据结构等技术问题。

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

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

    学习交流加 个人qq: 1126137994 个人微信: liu1126137994 学习交流资源分享qq群: 962535112 今天记录我在I.MX6Q平台添加内核自带RT5370无线网卡驱动程序 ...

  2. 基于USB总线的无线网卡驱动程序

    一.USB设备驱动程序的构成 1.设备的探测,用于检查传递给探测函数的设备信息,确认驱动程序是否适合该设备. 2.数据的发送和接收,负责主机到设备的发送和设备到主机的数据接收. 3.设备断开,当设备断 ...

  3. Rt5370 USB无线网卡移植记录

    内容提要:嵌入式linux软件开发人员调试软件,是一定要进入设备的shell的.进入shell无非就是通过串口.ssh方式,而ssh方式需要网卡.一般嵌入式linux产品上市后,串口和网卡是没有的,但 ...

  4. RZ616 Wi-Fi 6E 160MHz : 对本驱动程序而言,版本号错误如何解决?

    日志名称:          System 来源:            mtkwlex 日期:            2023/4/5 11:59:46 事件 ID:         5006 任务 ...

  5. USB WIFI网卡在S5PV210上的移植和使用最全攻略(1)

    目录 一.本季文章将会带来那些干货 1.MT7601网卡驱动的移植 2.无线网卡的配置和使用 3.在自己定制的rootfs中移植USB WIFI 4.在自己定制的rootf中添加dhcp支持 二.项目 ...

  6. Linux USB 驱动开发实例 (三)—— 基于USB总线的无线网卡浅析

    回顾一下USB的相关知识   USB(Universal Serial Bus)总线又叫通用串行外部总线,它是20世纪90年代发展起来的.USB接口现在得到了广泛的应用和普及,现在的PC机中都带有大量 ...

  7. wifi6无线网卡驱动linux,Centos6.5 WIFI无线网卡驱动BCM43142驱动安装

    Centos6.5 WIFI无线网卡驱动BCM43142驱动安装 Broadcom 网卡型号:BCM43142 lspci|grep Broadcom 1.确定自己的网卡驱动 下载网卡驱动:hybri ...

  8. Linux USB 驱动开发实例(七)—— 基于USB 总线的无线网卡浅析

    回顾一下USB的相关知识 USB(Universal Serial Bus)总线又叫通用串行外部总线, 它是20世纪90年代发展起来的.USB接口现在得到了广泛的应用和普及,现在的PC机中都带有大量的 ...

  9. wifi无线网卡移植到andorid

    不久前移植过ranlink公司的wifi无线网卡,发现网上的一些文档不完整或者对一些碰到的问题没有说明,在此详细说明一,本人将其移植到android系统上碰到了不少的问题,修改了驱动及框架代码,费了两 ...

最新文章

  1. 如何创建高效的业务连续性计划
  2. GDI+需要Dispose的对象(不断更新中)
  3. NFV — 高性能 NFVI
  4. MFC ComboBox
  5. java 位运算符赋值_java-运算符(算术、赋值 =、关系、逻辑、三元、位运算符)...
  6. 汽车电气化竞争:获胜的途径
  7. git wechat.class.php,wechat-php-sdk/qywechat.class.php at master · gitye/wechat-php-sdk · GitHub
  8. ERROR: Failed building wheel for pycrypto
  9. android关联权限,基于关联规则的Android权限研究及应用
  10. python常量变量和对象_Python学习笔记——变量和常量
  11. 爬虫python能做什么-总算发现python爬虫能够干什么
  12. python3:从 logging 库中摘‘零件’另造小轮子 简单日志功能
  13. 小米游戏本bios_小米游戏本2019款,原来他才是电脑的终极境界
  14. 用java做考试管理系统,考试管理系统的开发实现(Java+Web)
  15. 单片机控制气压海拔模块BMP180之模块化编程(持续更新中)
  16. android系统设置动态壁纸,安卓教程:设置GIF动图为手机壁纸
  17. 戴尔win10开机后,在桌面点右键一直转圈,但任务栏又能正常点击
  18. 北航计算机学院的博士待遇,北航博士毕业留校让人寒心的工资
  19. C++11 - 构建一个符合实际应用要求的线程池
  20. eac 反调试_自己动手制作一个过保护调试器

热门文章

  1. 解决el-select后台一次返回大数据量渲染慢导致页面卡顿的问题
  2. vue.js 引用背景图 background 无效的3种解决办法
  3. linux扩容根目录空间_Linux系统扩容根目录磁盘空间的操作方法
  4. C/S通信模型与B/S通信模型介绍
  5. ※交换排序(1)——快速排序(quick sort)
  6. 各种排序笔记---基于非比较排序部分
  7. python 进程和线程
  8. ecshop各个文件夹作用
  9. Ruby学习-第二章
  10. java8 入门脚本之家_Java 8中的Lambda表达式