搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
知新_RL
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
C++五子棋(五)——实现AI落子_ai五子棋落子点
2
Centos7安装、卸载nginx及配置,配置成系统服务(一步到位)_centos 卸载nginx
3
[附源码]Python计算机毕业设计Django的项目管理系统_django 项目管理系统
4
低代码(十)低代码平台后设计二:开发态思维导图_低代码开发思维导图
5
基于边缘计算的公路隧道智能控制系统
6
ArcGIS栅格赋值_arcgis数据赋值于栅格
7
Gensim的doc2vec如何使用新的数据update model_gensim update
8
卓有成效的管理者--我能贡献什么&如何发挥人的长处
9
AI工具:帮手还是对手?_ai辅助学习的优缺点
10
nginx反向代理----->微服务网关----->具体微服务_微服务项目从nginx到gateway的流程
当前位置:
article
> 正文
SDIO WiFi模块分析_android wifi sdio时序
作者:知新_RL | 2024-03-24 11:07:03
赞
踩
android wifi sdio时序
S3C6410硬件模块分析 -- SDIO WiFi模块分析
(2011-05-04 17:42)
分类:
底层开发
Andrew Huang <bluedrum@163.com>
转载请注明作者及网址.
手头的上课s3c6410开发板,带了SDIO接口的WiFi模块,但是没有Linux下的驱动,因此在上网络驱动时课参考s3c2440的实现试着分析和调试一下SDIO的WiFi驱动。
我手头使用模块是WM-G-MR-09模块,其主控实际采用了marvell8686的IC来作为主控芯片,是由台湾环隆出的模块。网上能找到最接近的Linux驱动是针对 s3c2440的官方出的
GSPI-8686-LINUX26-BULVERDE-9.70.3.p29-26409.P50.tar
官方的源码包提供的动态模块形式的
驱动和命令行工具。经过简单修改Makefile,并且调步几个iw_函数的调用后,成功的在linux 2.6.28下编译成功,但是其中部分代码拷贝自s3c2440,因此这个驱动必然不会正常运行。因此必须要分析其模块的来改写成s3c6410的模块。
首先这个模块是WiFi+Bluetooth 的2合一的模块。并且带了SDIO/G-SPI的接口与CPU进行交互.
SDIO接口比较明白,是源于SD卡的交互接口,后来扩展到多个硬件模块的对接,比如SDIO的蓝牙,WIFI模块等。
G-SPI是一个什么接口呢?它实际上是SPI总线的扩展。原来在早期推广SDIO接口,为了取得更大兼容性,在设计硬件接口时,留出几个PIN脚完全兼容SPI的接口。这样就能让只带SPI的总线接口的CPU上也能使用SD卡。
SPI是一个三线工业控制总线,它分别是 SPICLK(时钟线),MOSI(主设备发送/从设备接收线),MISO(主设备接收/从设备发送),完全的SPI还有一根片选线 (CS线),如果缺省这一根,则只能主设备固定为某一个设备。
而G-SPI在这四根线上再进入扩展了一个CLK_REQ线和 一个外部中断线 G-SPI_SINTn
其中外部中断脚分析驱动象是用于唤醒和休眠的功能,而CLK_REQ是休眠时的时钟频率线(?)
两种接口的对应关系如下。
而CPU采用哪一种接口完全取决于硬件设计,在模块的说明到,取决于IF_SEL_1和IF_SEL_2两个pin脚的接法,即23/24号脚的接线,如果想配成SDIO的接口,两个脚悬空,否则则成焊上两个100K的下拉电阻.
在模块原理图也说得更清楚,即是否焊上r8,r9两个电阻就决定软件使用哪一个接口。
虽然模块支持两个接口,但是所有代码提供都是G-SPI的实始化代码,硬件上也是如下设计.
不巧的是手头的模块,以及学员手中模块居然全是没有焊r8/r9两个电阻的模块,即只能用使用SDIO接口。在打电话询问了做Marvell的FAE的学员,他也无法确定SDIO接口的命令格式与G-SPI的命令格式完全一致,因此用SDIO直接初始化模块的方案就放弃了。只采用G-SPI的接口来工作。
接收下来确定S3C6410 上是否也支持这种SDIO的管脚上复用SPI的用法。因为S3c6410同时支持SDIO和SPI的模块,但是如果 SDIO的PIN不能被SPI控制器接管,只能采用自行模拟时序的方法来通讯,这样无疑大大增加了工作量,因此我查询s3c6410的GPIO的配置,在GPIO的配置上,SPI的管脚是和SDIO复用的。但仔细分仔发现SDIO的管脚并没有完全与SPI的复用。如果想使用G-SPI,必须在接线直接接在SPI的管脚上,并且把G-SPI外部中断脚接在某一个外部中断的GPIO之中。
而且关于模块的中断脚,这只是一个简单低电平有效的外部中断.
而这个管脚按照原理图,它正好接在了GPH4上,即是第6组的第4个中断脚
至此,在s3c6410下的模块驱动移植工作就变成了如下两个工作.
1.实现SPI S3c6410的驱动
2.按对外部中断脚,实现wan_interrupt响应
其余工作重用官方驱动即可
SDIO驱动
仔细分析s3c6410的关于SDIO的接口。发现在S3C6410有三个SDIO的channel 0使用GPG组,Channel 1使用GPH组。而channel 2使用 GPC组。但是只有channel 2才有SPI与SDIO管脚复用的可能性。而我手头开发板其接在channel 1上,即GPH组上。因此软件采用SPI的难度相当大。而且仔细分析,只能采用SDIO实现方法。
Linux 内核对Marvell网卡支持。
用Marvell关键字搜索 Linux 2.6.28 目录下的drivers/net/wireless目录,发现libertas就是对MW 8686的支持代码。从源码看直接 PCMIA接口(if_cs.c),USB接口(if_usb.c)和SDIO接口(if_sdio.c).并且分析源码,发现其支持
PCMIA支持 CF8385
USB支持USB8388
SDIO支持 sd8385/sd8686
而最新的linux 2.6.38.5支持的接口更多。把g-spi接口的支持也增加进来(if_spi.c)。芯片支持更加丰富
PCMIA支持CF8305/CF8381/CF8385
USB支持 USB8388/8682
SDIO支持 sd8385/sd8686/sd8688
G-SPI支持gspi8385/gspi8686/gspi8688
因此在Linux 下可以直接使用SDIO的驱动驱动这一模块
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/知新_RL/article/detail/301931
推荐阅读
article
Android
.mk 编译报错
undefined
reference
to
_
undefined
re...
当出现
undefined
reference
to
xxx时,对应的lib库已经添加到LOCAL_STATIC_LIB...
赞
踩
article
Android
带
html
标签文本添加自定义
超链接
跳转
...
这里主要做了一个简单的封装,关键点在于重写的onCLick方法,它的方法中则可以修改
超链接
的一些属性,比如字体颜色,下划...
赞
踩
article
Android
宠物
连连看
案例
_
仿动物
连连看
游戏界面使用
linearlayout
布局通过
案例
来演示...
[详细]
-->
赞
踩
article
毕业设计
-基于
Android
的
校园
新闻
APP(
Android
studio
毕业设计
,
Android
课...
2:
校园
新闻
:本模块主要是介绍在本校的网站上面关于
校园
新闻
的介绍,而本部分所针对的对象是所有人(包括了未登录的游客),用...
赞
踩
article
Android 13.0
kenel
和f
ram
eworks中
修改
ram
运行
内存
的功能实现...
在13.0的系统rom产品开发定制中,在对一些产品开发中的配置需求方面,在产品后续订单中,产品提出要提高硬件配置,但是硬...
赞
踩
article
Android
Studio
实现
图书馆
订座
系统_
androidstudio
图书馆
选
座位
app源码...
在校园生活中,
图书馆
是很多人选择的学习圣地,这里不仅充满书香气息,而且还十分静谧。这样的学习环境,必然会很抢手,导致很多...
赞
踩
article
Android
开源
组件
和
第三方
库
汇总
_
android
组件
汇总
网站...
Android
开源
组件
和
第三方
库
汇总
转载1、 github排名 https://github.com/trending...
赞
踩
article
Android
UI
框架之 X
UI
...
TextView、Button、EditText、ImageView、Spinner、Picker、Dialog、Pop...
赞
踩
article
Android
常用
的
UI 控件 和 对应
的
方法详细总结
_
android
seekbar
两头间距...
设计和代码切换,一般情况下,我们 UI 布局都是先拖再细调整,也就是先用设计默认拖出一个大概
的
布局,然后用代码来微调一、...
赞
踩
article
Android
ConstraintLayout
使用详解...
Android
ConstraintLayout
使用详解_android constraintlayoutandroi...
赞
踩
article
Android
ConstraintLayout
用法全解析...
ConstraintLayout
用法全解析文章目录
ConstraintLayout
用法全解析前言一、 什么是Cons...
赞
踩
article
腾讯
开源
的
Android
UI
框架——
QM
UI
Android
...
各位同学,早上好,我是你们的老朋友D_clock爱吃葱花,前些天忙着发版本,最近也在看各种各样的新知识,有好多东西想写啊...
赞
踩
article
android
studio
for
Mac
关于华为
手机
的真机
连接
_mac
android
stu...
android
studio
for
Mac
关于华为
手机
的真机
连接
step one:需要确保
手机
的Android版本不...
赞
踩
article
Android
Studio
WiFi
连接手机_
android
studio
wifi
连接华为鸿蒙...
使用一个插件即可,插件下载地址https://plugins.jetbrains.com/plugin/7983或者ht...
赞
踩
article
Android
UI
_androidui 框架...
Android
UI
框架 Activity、Fragment封装,支持状态栏修改、快速设置标题栏、设置空视图、内含轮播、...
赞
踩
article
Android
UI
框架概览...
Android
App真实的逻辑构成App
UI
构成层级结构在
Android
中绝大部分的
UI
组件都是存放在android...
赞
踩
article
MacOS
+
Android
Studio
通过 USB 数据线真机调试_
mac
版
android
...
MacOS
+
Android
Studio
通过 USB 数据线真机调试_
mac
版
android
studio
怎么与手...
赞
踩
article
Android
UI
框架
Android
UI
控件类简介
android5
大
布局
详解...
线性
布局
管理器(LinearLayout):点击打开链接表格
布局
管理器(TableLayout):点击打开链接帧
布局
管理...
赞
踩
article
Android
Studio
中创建
Android
虚拟机
并使用
虚拟机
调试HarmonyOS_andro...
在
Android
Studio
的工具栏中,选择您的虚拟设备作为目标设备,并点击"Run"(运行)按钮。通过按照以上步骤,...
赞
踩
article
android
studio
设备
调试
及
Logcat
查看_
android
studio
调试
时不跳转...
本文转载自:https://www.cnblogs.com/apaojun/p/4283944.html 作者:apao...
赞
踩
相关标签
android
Android.mk
html
前端
android-studio
java
开发语言
rom内存修改
运行内存
系统运行内存
mem
android studio
安卓app
课程设计
订座系统
Android
开源框架
ui