1. 前期准备工作和移植环境搭建

1.1 移植环境的搭建

  • Ubuntu14.04(当然也可以用其他Ubuntu版本),作为源码编译环境,而且已经安装了交叉编译工具链;

  • 用官方提供的内核源码,编译得到内核源码树(因为编译驱动需要内核源码的一些支持);

  • 开发板可以通过nfs方式挂载到Ubuntu(编译后得到的.ko文件需要通过这种形式传到开发板中)。挂载命令:

    mount -t nfs -o nolock,nfsvers=3 192.168.1.33:/home/lbh/nfs /mnt
    

    192.168.1.33这个IP地址是我ubuntu的IP;而且nfs的共享目录每个人安装的也不一样,根据自己的ubuntu环境来设置。

1.2 移植前准备工作

  • 获取官方的MT7601驱动源码:DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2

  • 确认USB WIFI模块是否正常

    把USB WIFI模块插入开发板中,然后使用lsusb命令查看系统是否识别到了这个模块,如果打印出如下的信息:

    Bus 001 Device 003: ID 148f:7601
    

2. 驱动源码的修改和编译

2.1 确认USB WIFI驱动源码的vid、pid是否和设备模块的一样

源码包中 ./common/rtusb_dev_id.c 文件中有定义 vid、pid 参数。在文件的37行可以找到 vid、pid 的定义,代码如下。可以看到有定义 {USB_DEVICE(0x148f,0x7601)} 这个参数,是和WIFI模块一样的vid、pid。

/* module table */
USB_DEVICE_ID rtusb_dev_id[] = {#ifdef RT6570{USB_DEVICE(0x148f,0x6570)}, /* Ralink 6570 */
#endif /* RT6570 */{USB_DEVICE(0x148f, 0x7650)}, /* MT7650 */
#ifdef MT7601U{USB_DEVICE(0x148f,0x6370)}, /* Ralink 6370 */{USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */{USB_DEVICE(0x148f,0x760b)},
#endif /* MT7601U */{ }/* Terminating entry */
};

2.2 修改驱动源码的Makefile文件

  • 确认驱动源码运行的目标平台

    在Makefile文件的49行:PLATFORM = SMDK 需要定义,表示运行在三星平台上。

  • 内核源码树路径和编译工具链路径修改

    在275行有定义三星平台下的内核源码树路径和编译工具链的路径,修改为如下和自己开发环境相匹配的路径。

    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-
    LINUX_SRC = /root/kernel/jiuding-kernel
    CROSS_COMPILE = /usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-
    endif
    
  • 修改WIFI网卡名称(也可以使用源码默认的名称)

    常用的无线网卡名称有:rax、wlanx

    对于mt7601驱动源码,要修改WIFI网卡名称,是在 ./include/rtmp_def.h 文件中的1601行有定义这个名称。

    #define INF_MAIN_DEV_NAME “ra”

    #define INF_MBSSID_DEV_NAME “ra”

  • 添加wpa_supplicant支持

    ./os/linux/config.mk 这个文件中有一个宏定义配置支持这个功能的。在24行配置为y即可。

    # Support Wpa_Supplicant
    # i.e. wpa_supplicant -Dralink
    HAS_WPA_SUPPLICANT=y
    
  • 编译生成.ko驱动文件

    编译生成的.ko文件就在./os/linux目录下。

3. mt7601驱动模块的安装和路由器端的基本概念

  • 驱动模块安装

    把编译好的.ko文件,通过nfs共享文件夹形式传输到开发板上,在开发板上执行 insmod 命令安装.ko文件即可。

  • 确认 WIFI 驱动是否运行

    安装完后使用 ifconfig -a 可以显示出所有的网卡名称,可以看到安装的WIFI网卡名称为 “ra0”。

    不过此时还不能使用 ifup ra0 命令打开这个无线网卡,因为还需要做一些配置文件才能打开。

  • iwconfig命令介绍

    这个是linux下配置无线网卡的一个命令工具,不过这个命令集已经很老了,有些特性不支持,所以现在很少用。

  • 路由器端的基本概念

    • 路由器的WAN、LAN
    • 无线参数:SSID(就是别人能看到的无线网络名称)、频段、模式
    • 安全类型:WEP、WPA、WPA2
    • 安全选项
    • 加密算法
    • PSK密码

4. 配置WIFI网卡

4.1 把相关配置文件复制到开发板

  • 把源码目录下的 RT2870STA.dat 这个文件复制到开发板的 /etc/Wireless/RT2870STA 目录下(没有这几个目录的话,就自己新建)。注意:这个配置文件一定是要放在这个路径下的,不然会报错说找不到这个文件。

  • 打开 /etc/wpa_supplicant.conf 这个配置文件(这个配置文件是 wpa_supplicant 这个命令工具本身的配置文件,和WIFI网卡无关),写入如下内容:

    ctrl_interface=/var/run/wpa_supplicant
    ap_scan=1  network={key_mgmt=WPA-PSK     # 使用什么密码方式。我试过配置为WPA2-PSK方式,但是连接不了手机热点ssid="redmi"            # 要接入的路由器WIFI名称,实验的时候我把手机作为APpsk="12345678"       # WIFI密码
    }
    
  • 打开WIFI网卡。输入如下命令:

    ifconfig ra0 up
    

    我使用过 ifup ra0 命令,但是提示没有这个命令(不知道为什么)。

4.2 WIFI网卡相关配置

4.2.1 手工配置

  • 连接路由器WIFI或者手机热点:

    wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0
    

    因为我身边没有路由器,所以我是开手机热点进行连接的。

  • 查看开发板WIFI连接状态:

    wpa_cli -i ra0 status
    
  • 手动指定WIFI的IP地址:

    ifconfig ra0 192.168.43.100
    

    指定了IP地址之后,开发板就可以和手机ping通了。不过一定要注意把开发板的有线网卡关闭了,不然就是默认使用有线网卡的。

  • 配置网关:

    但是此时还不能ping通外网的,因为还没有配置网关。配置网关命令如下:

    route add default gw 192.168.43.1 dev ra0
    

    配置网关后,此时就可以ping通外网了。比如:ping 8.8.8.8

  • 配置DNS:

    配置好网关之后,我们还是不能ping通 www.baidu.com 这类网站,因为还没有配置DNS服务器(就是把网站转换为一个对应的IP地址的服务器)。配置DNS如下:

    • 打开 /etc/resolv.conf 这个文件

      vi /etc/resolv.conf
      
    • 在配置文件中写入 nameserver 192.168.43.1 这条语句即可。当然我们也可以配置为其他的DNS服务器。比如谷歌的 8.8.8.8 ;比如国内运营商的114.114.114.114

    配置完DNS后,此时就可以ping通百度的域名、淘宝的域名等等了。

4.2.2 修改interfaces文件实现IP地址动态分配

打开 /etc/network/interfaces 这个文件,然后接着添加一下内容:

auto ra0
iface ra0 inet dhcp         #指定动态分配IP地址,如果是动态分配IP,那么DNS服务器也会自动分配
#iface ra0 inet static
address 192.168.43.100      #如果是动态分配,那么这一句指定IP地址就不起作用
netmask 255.255.255.0
gateway 192.168.43.1

补充记录:上面这个配置内容,我一开始测试是可以实现IP地址自动分配的。但是后来又试了几次之后又不行了,我找了很久也找不到问题在哪。感觉应该是我后来不小心改了什么文件或者参数造成的,一时间这里不知道怎么回事。

4.3 修改启动文件实现开机即连接了WIFI

可以修改 /etc/init.d/rcS 的启动配置文件,从而实现开机就能连接上WIFI。不过九鼎科技提供的 rootfs 是在这个目录下建立一个个的子配置文件,然后rcS文件读入这些子配置文件,从而实现开机配置某些功能的需求。所以这里我也建立一个S44WIFI的子文件(名字S开头即可,然后随便取)。然后输入以下内容:(注意要修改文件权限有可执行权限)

# 安装WIFI驱动
insmod /home/mt7601Usta.ko  # 启动WIFI网卡
ifconfig ra0 up# 连接路由器或者手机热点
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0# 重启WIFI网卡
ifconfig ra0 down
ifconfig ra0 up

一开始我使用interfaces文件来动态分配IP地址,是可以的。但是不知道为什么后来又不行了,搞了很久不知道什么情况。所以上述的开机自动连接WIFI,然后动态分配IP没有实现。不过可以用下面的内容,实现开机指定一个IP地址连接WIFI,如下:

insmod /home/mt7601Usta.ko
ifconfig ra0 up
wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0# 指定WIFI网卡的IP
ifconfig ra0 192.168.43.100# 配置网关
route add default gw 192.168.43.1 dev ra0# 配置DNS服务
echo "nameserver 192.168.43.1" > /etc/resolv.conf

上面这份命令测试可以实现开机指定一个IP,然后实现连接 www.baidu.com 网址。

移植MT7601 WIFI驱动(sta模式)到s5pv210开发板相关推荐

  1. RT3070无线网卡STA模式并使开发板接入Wifi上网

    开发板:FL2440    内核:linux 3.0   无线网卡:RT3070 RT3070的工作模式分为 STA(station)模式.SoftAP(Access Point)模式两种. STA模 ...

  2. 实现RT3070无线网卡STA模式并使开发板接入Wifi上网

    --------------------------------------- 主机操作系统:Centos 6.7 交叉编译器环境:arm-linux-gcc-4.5.4  开发板平台: FL2440 ...

  3. GEC6818 移植 rtl8723bu wifi驱动

    文章目录 1. 配置内核 2.RTL8723BU 模块驱动编译 2.1 下载解压 2.2 配置编译 3. openssl 移植 3.1 下载解压 3.2 配置 3.3 编译安装 4. libnl 移植 ...

  4. 三星官方smdkv210 uboot移植到我的s5pv210开发板

    北京 2020-7-26 19:44 周日 昨天外面闷热 今日凉快.空调一开啥事没有!O(∩_∩)O 用了差不多两个周末蹲家里移植的.进度比较慢,算是把uboot相关的一些东西基本了解了. uboot ...

  5. x210ii DM9000驱动调试成功-基于x210ii/s5pv210开发板

    //-------------------------------------------------------------------------------------------------- ...

  6. 使用无线WIFI模块NodeMCU Lua V3物联网开发板8266-01/01S 在Arduino搭建环境到点亮一个LED灯

    使用无线WIFI模块NodeMCU Lua V3物联网开发板8266-01/01S 在Arduino搭建环境到点亮一个LED灯 软件下载 基于Arduino环境搭建 点亮一个LED灯 上传成功 修改代 ...

  7. 集多功能为一体的智能WiFi模块Linux多线程处理器openwrt开发板工业4G路由器网口有线转无线WiFi

    集多功能为一体的智能WiFi模块Linux多线程处理器openwrt开发板工业路由器网口有线转无线WiFi双路RS485/RS232串口透传 RMS7688A集多功能为一体的智能WiFi模块,能跑Li ...

  8. tq2440 linux,移植最新内核Linux4.1.6到TQ2440开发板教程(一)-Go语言中文社区

    本次移植主要是移植最新内核Linux4.1.6到TQ2440开发板 开发板:TQ2440 内核:Linux4.1.6 目的:在开发板上实现内核的启动,并挂上nfs根文件系统 1. 下载最新内核linu ...

  9. ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340上传程序不显示

    买的ESP8266串口wifi模块 NodeMCU Lua V3物联网开发板 CH340在上传店家提供的示例程序可以上传成功,但屏幕不显示,如下图. 方法:选择开发板时,选择"LOLIN(W ...

最新文章

  1. iOS设计模式——MVC(Model-View-Controller)
  2. OpenStack自动发现计算节点
  3. 弹性法计算方法的mck法_粘弹性自由阻尼加筋板的随机响应分析和试验研究
  4. 商业银行如何进行分布式数据库选型思考
  5. python串口通信_python的串口通信(pyserial)
  6. android学习笔记---36_Activity生命周期
  7. 2020微信生态全景运营白皮书:10大热门场景、5大案例剖析.pdf(附下载链接)
  8. C语言 函数指针一(函数指针的定义)
  9. 伪随机数与采样(sampling)
  10. python 【第一篇】初识python
  11. css定位position,absolute relative两种情况下,top,left,right,bottom的区别
  12. java开发注意事项
  13. caffe上手:mnist学习
  14. JQuery 简单表单验证
  15. 01炼数成金TensorFlow基本概念
  16. linux双击打开二进制文件,linux下打开二进制文件
  17. word表格复制到excel回车换行问题 1
  18. 如何使用Flashfxp上传下载文件
  19. 如何评价文档图片的相似度
  20. Gradle编译生成不同的版本,动态设定应用标题 / 应用图标 / 替换常量

热门文章

  1. 使用subversion管理iOS源代码
  2. AcWing 1695. 果壳游戏(模拟)
  3. 统计学习第五弹--python实践概率分布
  4. java子承父业(继承,访问权限修饰符,super,重写,final)
  5. 实现花样流水灯(多种方法)
  6. 计算机专业到了35岁真的会失业吗?
  7. K叉哈夫曼树构造方法 O(N)
  8. 17周项目五(3色球问题)
  9. HDU - 5411 CRB and Puzzle 矩阵快速幂
  10. 朴素贝叶斯算法代码实现(垃圾邮件检测)