网站开发公司企业官网,怎么制作网页步骤,四川成都最新消息,余姚网站建设62752762学习交流加 个人qq#xff1a; 1126137994个人微信#xff1a; liu1126137994学习交流资源分享qq群#xff1a; 962535112 今天记录我在I.MX6Q平台移植RT5370无线网卡驱动程序的过程#xff0c;加qq1126137994 微信#xff1a;liu1126137994 共同学习更多技术#xff01;… 学习交流加 个人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 LINUXdefine 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_SUPPLICANTy and HAS_NATIVE_WPA_SUPPLICANT_SUPPORTy. #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_SUPPLICANTy and HAS_NATIVE_WPA_SUPPLICANT_SUPPORTn. #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_APCLIn# Support Wpa_Supplicant
HAS_WPA_SUPPLICANTn# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORTn
把这几个值的n全部变成y
# Support AP-Client function
HAS_APCLIy# Support Wpa_Supplicant
HAS_WPA_SUPPLICANTy# Support Native WpaSupplicant for Network Maganger
HAS_NATIVE_WPA_SUPPLICANT_SUPPORTy
然后文档中还有说关于wpa_supplicant的操作与使用放到下一篇文章讲解
4make 编译源码程序会在os/linux/目录下生成rt5370sta.ko驱动模块程序
5load 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主要是用来支持WEPWPA/WPA2和WAPI无线协议和加密认证的由于linux本身并不支持WPA的加密所以需要移植wpa_supplicant来使wifi能够连接WPA加密的无线路由上简单的说wpa_supplicant就是WiFi驱动和用户的中转站外加对协议和加密认证的支持。 wpa_supplicant的移植就放到下一篇文章中了~
想一起探讨以及获得各种学习资源加我 qq1126137994 微信liu1126137994 可以共同交流关于嵌入式操作系统C语言C语言数据结构等技术问题。