imx6q平台上移植mt7601

2023-05-16

本文描述如何将MT7601 WiFi模块移植到IMX6Q开发板上,分析移植过程中碰到的问题,分析错误原因,提供解决办法。

一、MT7601实物图

二、验证开发板和USB MT7601硬件是否正常

步骤1:将MT7601插入到IMX6Q开发板上

步骤2:在串口终端敲入命令lsusb

如下图所示,表示硬件上正常。

三、开发环境及准备资料

开发环境:ubuntu 14.04

准备资料

1)MT7601源码:DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2

2)工具:wireless_tools.29.tar.gz、libnl-3.4.0.tar.gz、openssl-1.0.1.tar.gz、wpa_supplicant-2.7.tar.gz

四、移植源码

1)将MT7601源码拷贝到共享文件夹,并解压

2)驱动源码修改及编译

A. 确认USB的VID和PID

源码路径:

/share/mt7601_wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/common/rtusb_dev_id.c

B. 确认或修改网卡名称

源码路径:

/share/mt7601_wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/include/rtmp_def.h

C.确认添加支持wpa_supplicant

源码路径:

/share/mt7601_wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux/config.mk

D.修改Makefile

路径:

/share/mt7601_wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/Makefile

其中LINUX_SRC是内核源码树、CROSS_COMPILE是交叉编译工具链前缀

E. 编译并生成驱动模块

命令:make clean && make –j2

编译中出错:

问题原因:我们指定的内核在配置时不支持802.11的无线设备驱动,这是因为前期在做裁剪的时候,将wireless部分不参与编译。

解决办法:

使能wireless部分参与编译,重新生成config文件,再编译Linux内核。

编译MT7601源码得到驱动安装文件:

路径:/share/mt7601_wifi/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913/os/linux

文件:mt7601Usta.ko

F.将mt7601Usta.ko拷贝到rootfs文件

命令:cp ./mt7601Usta.ko /imx6q-c/rootfs-qt4/driver-test -f

五、移植iwconfig

A.  下载iwconfig源码

网址:

http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/wireless_tools.29.tar.gz

B.  将iwconfig源码拷贝到共享文件夹,并解压

C.  修改Makefile,指定交叉编译工具链和安装路径

修改前:

修改后:

C.  编译并安装

命令:make && make install

D. 检验时候安装成功

在rootfs下,输入相关命令,出现下图提示表示iwconfig工具已成功移植到rootfs。

六、移植wpa_supplicant

A.  下载wpa_supplicant源码

网址:

http://w1.fi/wpa_supplicant/

B.  将wap_supplicant-2.7.tar.gz拷贝到共享文件夹并解压

C.   进入到wpa_supplicant目录,并生成.config

D.  修改Makefile

修改前:

修改后:

E.  编译

命令:make

出现错误提示:

分析错误:找不到libnl-3.0.pc库文件、找不到openssl/ssl.h头文件

分析原因:可能在wpa_supplicant安装的过程中是要依赖其他库

解决办法:

1)将错误信息贴到浏览器进行搜索,查找解决办法

2)查看README文本,安装相匹配的版本

结论:在安装wpa_supplicant时是要先安装libnl、openssl,然后再修改Makefile,指定安装时加载的库文件和头文件。

七、移植libnl

A.   下载libnl源码

网址:

https://github.com/thom311/libnl/releases/download/libnl3_4_0/libnl-3.4.0.tar.gz

B.  将libnl-3.4.0.tar.gz拷贝到共享文件夹并解压

C.  进入到libnl-3.4.0目录进行配置

命令:

sudo ./configure --host=arm-linux --prefix=/share/mt7601_wifi/libnl_install --enable-static --enable-shared CC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-gcc

出现错误:

解决办法:

步骤1: 根据提示安装flex: sudo apt-get install flex

步骤2:再次进行配置

配置成功标志:

D.  编译并安装

命令:make && make install

E.  进入到安装目录 libnl_install

八、移植openssl

A.  下载源码

网址:

http://www.openssl.org/

B.  将openssl-1.0.1.tar.gz拷贝到共享文件夹并解压

C.   进入到openssl-1.0.1目录修改Makefile

步骤1:修改安装目录

修改前:

修改后:

步骤2:修改交叉编译工具链

修改前:

修改后:

D.  编译和安装

命令:make && make install

出现错误:在编译完成后,进行安装时出现了错误。

分析原因:在安装docs出错了

解决办法:1)分析源码,解决安装出错的问题

                     2)由于我们不需要看openssl的手册,只是利用安装后的一些lib文件在编译wap_supplicant时使用。

选择第二种方法,修改Makefile,避开安装man手册。

修改Makefile:

修改前:

修改后:

E.  进入到安装目录:openssl_install

九、接着移植wpa_supplicant

F.  修改Makefile

修改前:

修改后:

G.  编译

命令:make

还是出现错误。

解决办法:

查找命令:find -name “libnl-3.0.pc”

添加环境变量:

export PKG_CONFIG_PATH="/share/mt7601_wifi/libnl_install/lib/pkgconfig:$PKG_CONFIG_PATH"

重新编译:在源码目录下生产一些工具文件:如 wpa_cli、wpa_passphrase、wpa_supplicant

H.  将工具wpa_cli、wpa_passphrase、wpa_supplicant拷贝到rootfs中

I.   在开发板控制台上验证wpa_supplicant工具

出现错误:

分析错误:在运行wpa_supplicant指令时找不到动态库。

通过查看wpa_supplicant是一个动态链接文件,在运行时依赖动态库。

解决办法:移植动态库 libnl-3.so.200, 从libnl_install/lib下移植到开发板rootfs中。

步骤1:在rootfs中创建文件夹usr/local/mt7601/lib用于存放mt7601库文件

/share/imx6q-c/filesystem/qt4/rootfs/usr/local/mt7601/lib

步骤2:添加到rootfs环境变量

修改/etc/qt_env_profile.sh

步骤3:拷贝libnl-3.so.200、libnl-genl-3.so.200到usr/local/mt7601/lib

步骤4:验证wpa_supplicant

表明成功移植wpa_supplicant。

十、在开发板上验证MT7601

步骤1:将MT7601模块插入到开发板的USB口上

步骤2:安装驱动程序

命令:insmod mt7601Usta.ko

步骤3:开启无线网卡

命令:ifconfig ra0 up

出现了错误。

错误分析:找不到/etc/Wireless/RT2870STA/RT2870STA.dat文件。

解决办法:查找RT2870STA.dat所在位置,将其拷贝到/etc/Wireless/RT2870STA目录下。

可知RT2870STA.dat在MT源码目录下。

再次启动无线网卡,成功启动,提示如下:

步骤4:连接无线网络

命令:wpa_supplicant -B -c /etc/wpa_supplicant.conf -i ra0

出现错误:

错误分析:找不到 /etc/wpa_supplicant.conf文件

解决办法:在/etc目录下创建wpa_supplicant.conf,并输入以下内容。

   ctrl_interface=/var/run/wpa_supplicant

   network={

       key_mgmt=WPA-PSK

       ssid="vip-01"

       psk="12345678"

   }

从wpa_supplicant.conf的内容可知,要在/var目录下要有run文件夹,于是创建目录/var/run。

再次连接无线网络。

出现错误:

解决办法:指定是Linux wireless extensions

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

成功连接提示。

步骤5:查看连接状态

命令:wpa_cli -i ra0 status

成功连接上热点。

当前状态就是:wifi网卡已经启动并且连接上路由器了,但是本地没有ip地址

步骤6:设置ra0 IP地址

命令:ifconfig ra0 192.168.0.10

步骤7:ping网关

命令:ping 192.168.0.1

步骤8:ping 外网IP

命令:ping 8.8.8.8

不能ping通外网IP。

分析原因:需要配置网关

命令:route add default gw 192.168.0.1 dev ra0

步骤9:ping外网

命令:ping www.taobao.com

不能ping通,需要配置dns

修改/etc/resolv.conf

十一、设置开机自启动Wifi模块

步骤1:在/share/imx6q-c/filesystem/qt4/rootfs/etc/rc.d目录下创建rc.network文件

步骤2:修改rc.network内容为如下所示:

步骤3:修改/share/imx6q-c/filesystem/qt4/rootfs/etc/rc.d/rcS文件,使用rc.network文件被执行

步骤4:添加或修改/etc/network/interfaces文件

步骤5:修改interfaces文件为如下所示:

步骤6:确保配置了DNS,查看/etv/ resolv.conf

步骤7:以上是在ubuntu14.04中进行修改的,将修改后的rootfs 打包成rootfs.qt4.tar.bz2并烧录到开发板上,启机进行验证。

步骤8:使用烧录工具Mfgtools-Rel-13.01.00_ER_MX6Q_UPDATER进行烧录

步骤9:进行测试验证

动态分配得到的IP

ping 192.168.0.1

ping 8.8.8.8

ping www.taobao.com

通过以上验证,已成功移植MT7601 WIFI模块到IMX6Q开发板,并可以正常使用。

 

总结:

  1. 要具备linux下的开发基础,VI工具以及一些常用命令的使用,如:

ls、cd、pwd、mkdir、mv、cp、rm、find、grep、which、chmod、tar等

      2. Linux下移植模块,一般流程:

源码下载、配置、交叉编译、部署安装、测试

     3.测试过程中遇到问题与解决

    1)ra0的配置和上网前,一定要先关掉eth0(ifconfig eth0 down),否则你ping或者设置等等都是默认使用的eth0而不是ra0。

    2) 当我们wifi网卡连接上路由器后,想要ping通路由器(网关),必须本地wifi网卡有一个和网关同一网段的ip地址才可以。这个本地的ip地址可以dhcp分配,也可以手工配置一个。

   3) 本地有了ip地址,并且wifi网卡通过wpa_supplicant配置连上路由器后,就能ping通网关了。但是这时还不能ping通外网,因为本地还没有添加网关配置。添加网关配置有两种方法:通过route命令动态添加,或者通过/etc/network/interfaces文件添加。

  4) 添加网关后就能ping通外网IP了,但是还ping不通www.taobao.com等域名,因为还没有DNS。需要修改/etv/ resolv.conf文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

imx6q平台上移植mt7601 的相关文章

  • 基于51单片机的超声波测距

    1 超声波测距原理 超声波是利用反射的原理测量距离的 xff0c 被测距离一端为超声波传感器 xff0c 另一端必须有能反射超声波的物体 测量距离时 xff0c 将超声波传感器对准反射物发射超声波 xff0c 并开始计时 xff0c 超声波
  • 超细!详解AD13:如何从零开始画出一个PCB(电路板)

    在学电子或者单片机的小伙伴们或许有过这种念头 xff0c 就是想把自己的设计的电路或者单片机系统做成一个电路板出来 xff1b 但却不知怎样做出来 今天我就给大家详细讲解如果通过AD13电路设计软件设计出一个电路板 1 首先打开AD13 x
  • 基于51单片机液晶万年历设计

    电子万年历是一种非常广泛日常计时工具 xff0c 给人们的带来了很大的方便 xff0c 在社会上越来越流行 它可以对年 月 日 时 分 秒进行计时 xff0c 采用直观的数字显示 xff0c 可以同时显示年月日时分秒和温度等信息 xff0c
  • 基于51单片机的简易计算器

    1 简介 本计算器是以MCS 51系列AT89C51单片机为核心构成的简易计算器系统 该系统通过单片机控制 xff0c 实现对4 4键盘扫描进行实时的按键检测 xff0c 并由LCD1602显示屏将过程与结果显示出来 2 硬件原理图 硬件主
  • 基于51单片机的红外解码器

    1 简介 本红外解码器是以MCS 51系列AT89C512片机为核心 xff0c 将红外传感器接收的信号解析出来 xff0c LCD1602显示屏将解码数据显示出来 2 总体原理图 硬件组成 单片机最小系统LCD1602显示屏IR红外接收器
  • 基于51单片机的心率脉搏计检测系统

    1 功能原理 脉搏传感器采样脉搏信号 xff0c 采用STC89C51单片机作为控制器 xff0c 脉搏传感器输出方波传入单片机 xff0c 触发单片机进去外部中断函数 xff0c 每接收一个脉冲波形 xff0c 显示屏就计数一次 如果脉搏
  • 基于51单片机的智能调光台灯

    1 功能介绍 智能台灯可分成自动和手动两种模式 在自动模式下 xff0c 台灯能根据环境光的亮暗与人是否被台灯所检测到 xff08 人是否在 xff09 来自动开启台灯 当人被微机检测到 xff0c 环境光又达到某个程度的时候 xff08
  • app元素辅助定位三种方式:Appium-Inspector、uiautomatorviewer、Weditor(uiautomator2)

    xff08 1 xff09 使用Appium Desktop中Appium Inspector辅助进行元素定位 早期版本集成在Appium Desktop中 xff0c 最新版本已分开 下载地址 xff1a Releases appium
  • 俄罗斯方块游戏的算法

    1 原理 这个游戏设计 xff0c 本质上就是用一个线程或者定时器产生重绘事件 用线程和用户输入改变游戏状态 这个游戏也不例外 xff0c 启动游戏后 xff0c 就立即生成一个重绘线程 xff0c 该线程每隔50ms绘制一次屏幕 当然 x
  • 基于51单片机的俄罗斯方块游戏

    俄罗斯方块游戏算法 请参考俄罗斯方块游戏的算法 1 概述 俄罗斯方块是一款风靡全球的益智游戏 它规则简单 xff0c 容易上手 xff0c 且游戏过程变化无穷 xff0c 使用户在游戏中得到乐趣 本设计是采用单片机来实现的智能俄罗斯方块游戏
  • 基于51单片机的智能温控风扇

    1 功能 本设计为一种温控风扇系统 xff0c 具有灵敏的温度感测和显示功能 xff0c 系统选用STC89C52单片机作为控制平台对风扇转速进行控制 可在测得温度值在高低温度之间时打开风扇弱风档 xff0c 当温度升高超过所设定的温度时自
  • 基于51单片机的数字频率计

    1 简介 数字频率计是现代科研生产中不可或缺的测量仪器 xff0c 它以十进制数显示被测频率 xff0c 基本功能是测量正弦信号 xff0c 方波信号 xff0c 及其它各种单位时间内变化的物理量 本系统采用AT89C52单片机智能控制 x
  • 基于51单片机的火灾报警器

    1 系统功能 火灾报警器 xff0c 主要检测温度和烟雾 xff0c 再通过单片机控制相应的报警和驱动负载 通过液晶显示当前的烟雾值和温度值 xff0c 通过按键设定相应的阀值 主要包括以下几项功能 xff1a 1 火情探测功能 xff1a
  • 基于51单片机的指纹密码锁

    1 系统功能概述 本次分享的是一款基于51单片机的指纹识别电子密码锁系统 xff0c 该系统以STC89C52单片机作为模块核心 xff0c 通过串口通信控制指纹模块AS608实现录取指纹并存储指纹数据 xff0c 并通过LCD12864液
  • 基于51单片机的智能电子秤

    1 概述 xff08 1 xff09 系统原理 本电子秤系统利用压力传感器采集因压力变化产生的电压信号 xff0c 经过电压放大电路放大 xff0c 然后再经过模数转换器转换为数字信号 xff0c 最后把数字信号送入单片机 单片机经过相应的
  • 基于51单片机的智能垃圾桶

    1 简介 本次主要是利用单片机设计并制作一套智能垃圾箱 要求以单片机为控制核心 xff0c 通过红外传感器检测是否有人扔垃圾 xff0c 并自动打开垃圾箱盖 xff0c 扔完垃圾后再自动关闭 主要内容包括 xff08 1 xff09 红外对
  • gmake: No rule to make target `C:/ti/controlSUITE2_DMC Rev/device_support/f2803x/v122/DSP2803x_h的解决

    注 xff1a 此方法是在CCS8环境下的使用成功的 在使用controlSUITE的例程编译时 xff0c 工程老出现这种错误 xff0c 排查了很久 xff0c 终于找到了原因 xff0c 造成这种原因主要是CCS在安装时没有按照默认的
  • 基于51单片机的数字气压计

    1 概述 本设计是基于MPX4115的数字气压计 xff0c 硬件处理电路为大气压传感器模拟信号的采集 转换 处理和显示 xff0c 并根据相应的软件需求设计控制程序 2 硬件设计 xff08 1 xff09 硬件总体框图 气压计的硬件主要
  • 一站式开源分布式集群云真机测试平台Sonic——基于Docker方式部署sonic前后端(体验版)

    Sonic xff1a 一站式开源分布式集群云真机测试平台 xff0c 致力服务于中小企业的客户端UI测试 xff0c 永久免费 sonic官网 xff1a Sonic 开源云真机测试平台 开源不易 xff0c 请大家多多支持作者 xff0
  • Policy Gradient Algorithms

    Policy Gradient Algorithms 2019 10 02 17 37 47 This blog is from https lilianweng github io lil log 2018 04 08 policy gr

随机推荐

  • 基于51单片机的多功能八路抢答器

    1 功能介绍 多功能八路抢答器是基于51单片机来设计的 xff0c 除了可以实现最基本功能 8路抢答外 xff0c 还具有自动处理犯规选手 xff0c 抢答时间调整 xff0c 还可以进行答题 xff0c 计分 xff0c 并且可以查询或修
  • 基于51单片机的贪吃蛇游戏

    1 简介 本设计为一款贪吃蛇游戏 xff0c 显示器采用8 8点阵 xff0c 主控制器采用51单片机 xff0c 并通过按键实现对游戏的操作 2 贪吃蛇算法介绍 吃蛇游戏算法的实现 xff0c 即如何通过液晶屏显示蛇的移动 其实蛇看似移动
  • 基于51单片机的便携式输液点滴控制报警器

    1 简介 基于单片机输液点滴控制报警器组成 该系统主要由光电传感器检测电路 键盘 数码管显示 报警提示电路 液滴流速监测电路 电机驱动电路等组成 利用光电感器测量出液滴流速 xff0c 并将将信息返回给单片机 xff0c 单片机对流速信号与
  • PCB加工文件—Gerber文件的导出

    当我们使用软件将一个板卡的PCB图纸设计好后 xff0c 想到PCB厂家制作成电路板 简单的 xff0c 你可以把自己的设置PCB文件 PcbDoc 直接发给厂家加工 xff0c 但是有些PCB厂家会要求你提供Gerber文件 但是这个Ge
  • AD13如何导出坐标文件

    在电子行业加工生产大批量的电路板 xff0c 都是利用贴片机进行生产和制造 xff0c 在生产之前 xff0c 我们需要提供PCB的坐标文件给贴片厂家 xff0c 这样厂家才能确定每个元器件应该贴在PCB板上什么位置 所以下面我们就来讲一下
  • 基于PID算法的水箱温度控制系统

    1 概述 本设计为基于STC89C52单片机的智能水温控制系统 xff0c 控制对象以500mL陶瓷水箱为容器 xff0c 并使用PID控制算法来调整水箱中500ml纯净水的温度 水温可以在一定范围内人为设定 xff0c 并能实现在下限温度
  • 基于51单片机的数字电流电压表

    1 简述 本文介绍了基于STC89C52单片机为核心 xff0c 分别以ACS712 05芯片和串联分压电路为为电流检测和电压检测电路 xff0c 并通过AD0809数模转换芯片对电压信号进行采集和转换 xff0c 传输给单片机进行处理 x
  • OpenStack快速入门

    一 登陆OpenStack 查看用户名和密码 查看文件 用户名admin和demo 登录 页面显示 修改密码 点击设置 gt 更改密码 创建和操作虚拟机实例 xff08 一 xff09 创建虚拟机实的前提 创建虚拟机实例的前提条件 1 实例
  • vnc view远程登录Linux

    转自http blog sina com cn s blog 49c306b201011had html 尽管我们可以使用 SSH连接远程通过字符界面来操作Linux xff0c 但是对于更多熟悉图形人来说是很不方便的 xff0c 因此开启
  • 【Python基础】之装饰器

    这是我初次接触装饰器 xff0c 先从初学者的角度介绍装饰器 xff0c 关于装饰器的应用场景举例 xff0c 后面再补充 1 装饰器的作用 装饰器可以让一个函数在不做任何变动的情况下新增额外的功能 如下代码 xff0c func name
  • Sonic simple服务中设备图片、测试用例运行异常图片、失败录像路径映射配置

    使用docker ps查看容器信息 使用docker exec it a2d69c075875 sh进入容器 xff0c 并查看容器文件 相关文件夹说明 xff1a imageFiles xff1a 测试用例运行截图信息 keepFiles
  • ubuntu vmware 虚拟网络编辑 ping 外网不通问题

    内网环境在192 168 1 1 网段 虚拟机想要ssh 接入 xff0c 并且可以上网 使用桥接方式和NAT方式都可以 互ping xff0c 但是上网遇到了问题 NAT解决方法如下 xff0c 桥接方式随后再研究 NAT 模式下子网IP
  • 深入解读相机矩阵

    在这片文章里 xff0c 你将了解到以下内容 xff1a 1 相机的针孔模型 2 相机矩阵的概念 3 相机内参的含义 4 相机外参的含义 1 相机针孔模型 针孔模型是相机成像的基础模型 xff0c 是理解后续相机矩阵内容的基础 下图描述了基
  • python 循环输入,用户输入回车结束

    输入的回车会被视为空字符 xff0c 可以用a 61 61 39 39 来作为结束循环的标志 n 61 while 1 a 61 input if a 61 61 39 39 break else n append a print n
  • OpenvSwitch 子项目 OVN 功能介绍(一)

    众所周知 xff0c OpenvSwitch 以其丰富的功能和不错的性能 xff0c 已经成为 Openstack 部署中最受欢迎的虚拟交换机 由于 Openstack Neutron 的架构引入了一些性能问题 xff0c 比如 neutr
  • SDN网络中的转发数据和数据传输

    数据驱动的网络 从数据驱动的角度来看网络 xff0c 会发现一张现实中的网络存在着各种数据 设计和管理一张网络 xff0c 主要是设计数据 xff0c 存储数据 xff0c 管理数据和分析数据 网络数据的规模 复杂度和变化速度 xff0c
  • [云计算]OpenStack - Neutron

    Neutron在OpenStack中的位置 可以为虚拟机或者 OpenStack 组件提供网络服务 xff0c xff08 由 Nova network 独立出来的 xff09 随着需承载业务的能力的增长作为 Nova 子组件无法满足 过程
  • 后台架构师除了技术,还有97件事,你知道吗?

    对于架构师 xff0c 很多人可能觉得很笼统 架构师到底需要学习什么 xff1f 学习完哪些技术就可以到架构师的水准 在行业内的话其实并没有一个非常明确的标准 技术是一方面 xff0c 但是如果仅仅只是技术的话 xff0c 具体一名合格的架
  • Failed to read artifact descriptor for xxx.jar

    mavne 项目 pom xml 文件标红 错误如下 xff1a Failed to read artifact descriptor for xxx jar Failed to read artifact descriptor for x
  • imx6q平台上移植mt7601

    本文描述如何将MT7601 WiFi模块移植到IMX6Q开发板上 xff0c 分析移植过程中碰到的问题 xff0c 分析错误原因 xff0c 提供解决办法 一 MT7601实物图 二 验证开发板和USB MT7601硬件是否正常 步骤1 x