zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210
//zz//#######################################################################
zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210
zz-Write:
@2015-2-4 22:11:14
@2015-2-11 00:32:07
@
REF:
嵌入式linux usb wifi移植参考文档.pdf
嵌入式linux usb wifi移植.pdf
http://blog.chinaunix.net/uid-8048969-id-3251135.html
RTL8188EUS_linux_v4.3.0.7_12758.20141114.zip
ftp3.realtek.com.tw (RTL8188E,M6b3Er)
KeyWord:
以 ti-am335x 为例,使用 ti-sdk 6.0 平台内核及交叉编译器工具链
//zz//#######################################################################
0.
USB 硬件调试
1)
内核代码中, am335x 需要将接rtl8188eu的 USB0 口设置为 HOST 模式;
设为 OTG 主从可切换模式会无法检测到USB外设
原因是
am335x 外接到 rtl8188eu 模块的USB口使用的4根线,没有引出 id 线到USB端口
虽然am335x 的id线下拉为低电平,是为 OTG 之主机模式
*但是 OTG 还需要用到 VBUS 线(即USB的VCC5V脚),这根线 OTG 检测主从要用到
若 VBUS 检测到无电压,表示对方是B端设备,再通过使能脚给VBUS上电VCC5V
若 VBUS 检测到5V,表示对方是A端(USB主机),本机为B端设备
此板子是 USB0_VBUS 直接接 VCC5V ,所以无论插电脑还是U盘或rtl8188e,AM335X的OTG侦测结果都是自己为设备.
2)
USB0 口开机就接上 rtl8188 模块
提示枚举错误,各种 -74 错误号
参看内核得知是协议错误 => 时序错误 => D+ D- 数据线的走线,串接电阻,电容不对
解决办法:
USB 差分高速信号,抵消反射处理,阻抗匹配可能不对
去掉两个串接的 33ohm ,去掉两个100pf左右的电容
3)
USB0 口rtl8188e 模块出现断电后再上电(重启),主机无法检测到设备的问题
USB协议提到,USB设备的 D+ D- 下拉了15K电阻,D+ 上拉1.5K电阻表示此设备为全速/高速
USB2.0 全速 12Mbps,高速最高 480Mbps
而 D- 上拉接1.5K电阻表示此设备只支持USB低速模式(USB1.0设备)
问题分析:
因为是高速设备,用万用表测量 D+ 对地电平
rtl8188e 模块在 am335x 整个开机过程中,先为3.0V左右高电平,枚举后因设备内部断开上拉电阻以作全速/高速通信,测得电平变为0.3左右
此时再将rtl8188e 模块断电,再上电,发现整个过程中 D+ 脚对地电平都为 0.3V左右的低电平
结果:
后面发现此情况为偶尔发生,正常情况下,USB设备断电再上电,我用万用表都能测到D+脚有个高电平,
主机识别设备的速度的时间很短,只看到电压为1.6V左右..后续分析使用示波器吧
*飞凌 OK335xD 说的需要开机后再插入 USB设备和观测到的现象不符
实际是偶尔发生开机后供电rtl8188e无法识别到,而开机就供电反而一定能是被到,U盘开机就插好也能侦测到
4)
rtl8188e usb 模块使用 IO 口无法控制其VBUS接上电源
原因:
NMOS 管使用错误
其实 MOS 管内部有四个级,源级S 漏极D 栅极G 衬底级B
常用 NMOS 管只有3个引脚,是因为源级S 与 衬底级B 连在一起的
要使NMOS管D S 导通,需要在栅极G加高电平,而且是G 相对于S(B) 为高电平
此处 D 接VCC S接VBUS 栅极G就算为高电平,也无法将 D S 连通,因为 G 与 B之间电压不够使 MOS 管中 P区的少子将两个N沟道导通
解决方法:
将 S 接到 GND ,模块的GND脚与 NMOS 管的 D 级相连
//zz//#######################################################################
1.
驱动包中各目录说明,有driver,还有 wpa_supplicant hostapd 等应用层工具代码的
解压驱动包
rtl8188eus_linux_v4.3_141114
driver/rtl8188eus_linux_v4.3.0.7drv
驱动程序,编译得到 8188eu.ko
wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8
连接wifi用的客户端程序 wpa_supplicant wpa_cli等;AP热点程序 hostapd
wireless_tools/wireless_tools.30.rtl
查看wifi信号强度,速度,频段等信息用的 iwconfig iwlist 程序
基于 /proc/net/wireless
//zz//#######################################################################
2.
驱动程序/内核模块 8188eu.ko 交叉编译移植
driver/rtl8188eus_linux_v4.3.0.7drv
驱动程序,编译得到 8188eu.ko
确定芯片选中的是 8188E
CONFIG_RTL8192C = n
CONFIG_RTL8188E = y
修改 Makefile
1)
仿照 CONFIG_PLATFORM_ARM_S3C2K4 添加一个 ti am335x 的选项
注释掉 I386 电脑用的选项
添加 ARM_AM335X 选项
#zz# @dell @2015-0204 begin
#zz# CONFIG_PLATFORM_I386_PC = y
CONFIG_PLATFORM_ARM_AM335X = y
#zz# @dell @2015-0204 end
2)
仿照 CONFIG_PLATFORM_ARM_S3C2K4 添加如下这段
设置小端格式,设置内核代码路径等等
# @home @2015-0204 begin
ifeq ($(CONFIG_PLATFORM_ARM_AM335X), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN
ARCH := arm
CROSS_COMPILE := arm-linux-
KVER := 3.2.0
KSRC := /home/am335x-tisdk6.0/linux-3.2.0-psp04.06ti-zz
endif
# @home @2015-0204 end
################################################
3)
去掉内核模块,驱动8188eu.ko中的调试输出信息
大部分调试信息是通过如下宏定义函数数出来的,使他们输出为空就行
DBG_8192C
MSG_8192C
DBG_817X
DBG_871X_LEVEL
在 include/autoconf.h 文件中
注释掉 CONFIG_DEBUG 宏定义,以减少不必要的调试信息输出
//zz// Too much debug info, Reduce something
// @dell @2015-02-04
//zz// #define DBG 1
#define DBG 0
/* DBG_871X, etc... */
//zz// #define CONFIG_DEBUG
在 rtw_debug.h 中
将 _dbgdump _seqdump 两个宏定义设置为空的(直接去掉会出错的,函数未定义)
这样调试信息就大部分不会有了,8188eu.ko也变小了
#elif defined PLATFORM_LINUX
#define _dbgdump //
#define _seqdump //
4)
执行 make 命令,即可编译得到 am335x 平台的 8188eu.ko 驱动模块
//zz//#######################################################################
3.
交叉编译 wpa_supplicant wpa_cli 程序,交叉编译 hostapd hostapd_cli 等程序
wpa_supplicant_hostapd/wpa_supplicant_hostapd-0.8
连接wifi用的客户端程序 wpa_supplicant wpa_cli等
AP热点程序 hostapd
#################
1)
wpa_supplicant/Makefile
设置编译器为交叉编译器
#zz############################
# zz @dell @2015-0204 begin
CC = arm-linux-gcc
# zz @dell @2015-0204 end
ifndef CC
CC=gcc
endif
在 src/lib.rules 中,最好也将编译器 CC 设置为交叉编译器
#zz############################
# zz @dell @2015-0204 begin
CC = arm-linux-gcc
# zz @dell @2015-0204 end
ifndef CC
CC=gcc
endif
#################
2)
hostapd/Makefile 中也是这样添加 CC 为交叉编译器
#zz############################
# zz @dell @2015-0204 begin
CC = arm-linux-gcc
# zz @dell @2015-0204 end
ifndef CC
CC=gcc
endif
//zz//#######################################################################
4.
交叉编译 iwlist iwconfig 等程序
wireless_tools/wireless_tools.30.rtl
查看wifi信号强度,速度,频段等信息用的 iwconfig iwlist 程序
基于 /proc/net/wireless
这里需要修改 Makefile 中 CC AR RANLIB 为交叉编译工具
同时 PREFIX 如果要安装的话,修改下路径,如下改为 _install 目录
#zz###############################################
# zz @dell @2015-0204 begin
PREFIX = _install
ifndef PREFIX
PREFIX = /usr/local
endif
## Compiler to use (modify this for cross compile).
#zz# CC = gcc
CC = arm-linux-gcc
## Other tools you need to modify for cross compile (static lib only).
#zz# AR = ar
#zz# RANLIB = ranlib
AR = arm-linux-ar
RANLIB = arm-linux-ranlib
# zz @dell @2015-0204 end
#zz###############################################
zz-rtl8188eu的linux-usb-wifi调试及驱动编译150210的更多相关文章
- 嵌入式Linux USB WIFI驱动的移植
硬件平台:飞思卡尔MX258开发板 操作系统:Linux2.6.31 WIFI: RT2860 USB WIFI模组 交叉编译环境:gcc version 4.1.2 调试步骤: 第一步:测试U ...
- USB wifi调试笔记
本文以realtek 8192CU WiFi模块为例,介绍USB wifi在Jelly Bean 4.1的调试笔记. 1.WIFI打不开现象概述 WiFi打不开是指您在UI的settings下选中Wi ...
- 天嵌E9平台下进行USB Wifi模块RT3070驱动的移植
因为项目工作须要,要在天嵌E9平台下实现wifi的点对点,点对多点的传输. Wifi 模块芯片:雷凌3070芯片 嵌入式平台:E9(ARM) 交叉编译环境:arm-none-linux-gnueabi ...
- 《网蜂A8实战演练》——8.Linux USB 主机控制器和设备驱动
USB 的全称是 Universal Serial Bus,顾名思义:通用串行总线. 提到总线,联想一下,在你心目中总线总是用来干嘛的?还记得 I2C 总线? I2C 总线上挂有二条信号线,一条是 S ...
- android上USB Wifi调试记录
https://wenku.baidu.com/view/cc3098c72f60ddccdb38a043.html?from=search
- kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 【转】
转自:http://blog.chinaunix.net/uid-26349264-id-4455634.html 目录 kali Linux下wifi密码安全测试(1)虚拟机下usb无线网卡的挂载 ...
- Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析
源: Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析
- 杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用
杭州蓝松科技推出的安卓端的USB转串口调试助手, 欢迎下载使用 下载地址:http://files.cnblogs.com/guobaPlayer/%E8%93%9D%E6%9D%BEUSB%E4%B ...
- am335x system upgrade usb wifi rtl8188eus(十九)
1 Scope of Document This document describes how to port rtl8188eus driver to linux 4.14.y desig ...
随机推荐
- sharepoint 脚本 强迫以管理员权限运行
#region 关键代码:强迫以管理员权限运行 $currentWi = [Security.Principal.WindowsIdentity]::GetCurrent() $currentWp = ...
- 未指定的错误,发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。数据类型不被支持。
未指定的错误,发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息.数据类型不被支持. 博客分类: 雅芳生涯 .Net VB C# OracleMicrosoftSecurity ...
- MaskedTextBox控件实现输入验证
Mask属性可以验证用户在文本中输入数据的格式 this.maskedTextBox1.Mask = "000000-00000000-000A";//身份证号码18位 this. ...
- <六> jQuery 获得内容和属性
获得内容 三个简单实用的用于 DOM 操作的 jQuery 方法: text() - 设置或返回所选元素的文本内容 html() - 设置或返回所选元素的内容(包括 HTML 标记) val() - ...
- 转:Java Annotation详解
转载自:http://william750214.javaeye.com/blog/298104 元数据的作用 如果要对于元数据的作用进行分类,目前还没有明确的定义,不过我们可以根据它所起的作用,大致 ...
- Oracle客户端PL_SQL的安装
Oracle数据库的操作大多还是在客户端完成的,因此在众多的客户端软件中我选择了PL_SQL,一下谈谈PL_SQL的基本安装和操作,以及在操作中碰到的一些问题: 1. 首先下载PL_SQL客户端软件, ...
- java对xml文件做增删改查
http://www.cnblogs.com/wangchenyang/archive/2011/08/23/2150530.html http://www.blogjava.net/weishuan ...
- FZU 2150 Fire Game(BFS)
点我看题目 题意 :就是有两个熊孩子要把一个正方形上的草都给烧掉,他俩同时放火烧,烧第一块的时候是不花时间的,每一块着火的都可以在下一秒烧向上下左右四块#代表草地,.代表着不能烧的.问你最少花多少时间 ...
- 通过navicat连接mysql服务器提示SQL Error (1130): Host '192.168.1.100' is not allowed to connect to this MySQL server
新装一个mysql,尝试用通过navicat连接mysql服务器的时候提示: SQL Error (1130): Host '192.168.1.100' is not allowed to conn ...
- [状压dp]经典TSP
0出发 每个顶点经过一次 回到0 最小花费. O($n^2 \times 2^n$) 记忆化搜索: // s: 已经访问过的节点状态 v: 出发位置 int dfs(int s, int v) { ) ...