[sdio] Common Information Area (CIA) 分析及初始化过程
来源:互联网 发布:2016淘宝卖家怎么推广 编辑:程序博客网 时间:2024/05/16 06:39
本文转载至:
http://read.pudn.com/downloads91/sourcecode/embed/346908/sdio/%E7%9B%B8%E5%85%B3%E6%96%87%E6%A1%A3/SDIO%20CIA.pdf
另参考:
https://www.sdcard.org/developers/overview/sdio/sdio_spec/Simplified_SDIO_Card_Spec.pdf
一 , CIA 概述
SDIO 卡寄存器存储区中有一固定的公共端口区域,简称为 CIA 。 CIA
中的寄存器包括了对 I/O 端口功能, 中断产生以及端口工作信息, 可以通过读写功能 0
对 CIA 所定义的寄存器进行相关操作。 CIA 包含了 CCCR (Card Common Control Registers),
FBR (Function Basic Registers) 和 CIS (card's common Card Information Structure)
共三方面信息。其中 CCCR 定义了 SDIO 卡的公共控制寄存器,主机端通过操作 CCCR
可以对 SDIO 卡进 行检查和对端口进行操作, CCCR 地址为 0x000000-0x0000FF 。 FBR
定义了所支持的端口功能 1 到端口功能 7 的操作, 包括了了各端口的要
求和功能,电源控制等, FBR 的地址为 0x00n00 to 0x00nFF (其中 n
为功能端口号)。 CIS 定义了卡的一些信息结构,地址为 0x001000-0x017FFF
,必须提到的 CIS 有公共 CIS 和各功能端口各自 的 CIS ,其中公共 CIS 的初始地址在
CCCR 的 CIS Pointer 域中,各端 口功能的 CIS 在各功能端口 FBR 的 CIS Pointer
域中。
二, CIA 定义
1 , CCCR 中详细定义见表 6-1 ,其中有几个域比较重要,地址为 0x00 的 CCCR/SDIO
Revision 定义了 CCCR 的版本信息, 1.0 版本还 是 1.1 版本。地址为 0x01 的 SD
Specification Revision 定义了 SD 的版 本信息, 1.0 版本还是 1.1 版本。地址为
0x08 的 Card Capability 定义了 卡的速率类型(高速或低速),支持的位模式( 1 位
SD 或 4 位 SD ), 是否支持中断, 是否支持热插拔等。 地址为 0x09-0x0B 的 CIS
Pointer , 获得 CIS Pointer 为读取公共 CIS 提供了可能。
2 , CIS 中的信息是以 TUPLE 为单位的, TUPLE 的格式如下:首 先是 TUPLE 的 tuple
code ,它的作用是指示下面的信息内容,比如 tuple code 为 0x20 ,是指此 TUPLE
是提供一个 CISTPL_MANFID , 具体内容见表 13-2 ,接下来的字节为 TPL_LINK
,它指出下一 TUPLE 的位置,同时也指示出当前 TUPLE 的长度。有两类 TUPLE
比较重要, 第一是 CISTPL_MANFID ,它指示出生产序列号和卡的序列号。第二 个是
CISTPL_VERS_1 ,它表示 Level1version/product-information 。
3 , FBR 中定义了各功能端口的信息。其中重要信息如下:首先 每一端口功能都有一个
256 字节的 FBR ,各 FBR 的起始地址 0x00n00 , 比如说端口功能 1 ,那么起始地址为
0x00100 。 FBR 中 0xn09-0xn0B 是各端口功能的 CIS 指针,指向各功能端口的 CIS
。其次每个 FBR 的 第一个字节代表 SDIO 的标准函数接口代码,表 6-7 中有具体规定。
0x01-0x07 已经有确切的定义。需要提到的是如果第一个字节为 0x0F,
那么第二个字节是扩展的函数接口代 码,在初始化时也是需要的。
三,主机初始化与 CIA
主机的初始化需要获得 SDIO 卡 CIA 中的一些特定信息,从 SDBUS
驱动程序中可以得知:从机 SDIO 上电,主机得知有卡插入 后主机发送 CMD5 , SDIO
卡以 R4 响应, R4 包含 SDIO 卡的 OCR 。主 机验证 OCR 后,主机发送 CMD3 命令,
SDIO 卡以 R6 响应, R6 包括 SDIO 的 Status 及 RCA 。主机正确接受后,发送 CMD7
命令, SDIO 以 R1b 响应, R1b 包括 card status ,主机正确接受。随后,主机发送
CMD52 和 CMD53 分别获得 CCCR 中的 CCCR REV , Card Capacities, Spec,Common CIS
Pointer, CIS 中的 Manufacturer ID, Level 1 Version/Product info, FBR 中的
Device Code, CIS pointer, 需要指出 的是 CCCR 中的 CCCR REV , Card Capacities,
Spec,Common CIS Pointer 及 CIS 中的 Manufacturer ID, Level 1 Version/Product
info, 只 去读一次,因为都是些公共的信息,而 FBR 中的 Device Code, CIS pointer
则需要根据设备中 Function 的具体数目一一获得,当正确获得
这些信息后,根据信息内容在主机端加载驱动。
施 长 浩 2006年12月21 号
另外,可参考:http://blog.chinaunix.net/uid-21074389-id-3069947.html
CommonIO Area
CIA访问是HOST通过IO读写FUNCTION0,CIA寄存器提供使能和关闭所有IO功能的操作,控制中断发生和可选的软件加载支持IO功能。CCCR,FBR,CIS支持单独的结构
CCCR(CardCommon Control Register)CCCR允许host控制和检测IOcard使能和中断,CCCR中的BIT位是混合读和写和只读的状态位。如果7个功能在SDIO中一些不提供,未用到的功能位响应时只读的,并且返回是0.所有保留(RFU)的位是只读状态并且返回0值。访问CCCR寄存器是可能的在初始化以后而此时IO功能是禁用的。
adress
Register name
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
0x00
CCCR/SDIO Revision
SDIO Bit3
SDIO Bit2
SDIO
Bit1
SDIO
Bit0
CCCR
Bit3
CCCR
Bit2
CCCR
Bit1
CCCR
Bit0
0x01
SD Revision
RFU
RFU
RFU
RFU
SDBit3
SDBit2
SDbit1
SDBit0
0x02
IO enable
IOE7
IOE6
IOE5
IOE4
IOE3
IOE2
IOE1
RFU
0x03
IO Ready
IOR7
IOR6
IOR5
IOR4
IOR3
IOR2
IOR1
RFU
0x04
Int Eable
IEN7
IEN6
IEN5
IEN4
IEN3
IEN2
IEN1
RFU
0x05
Int Pending
INT7
INT6
INT5
INT4
INT3
INT2
INT1
RFU
0x06
I/O abort
RFU
RFU
RFU
RFU
RES
AS2
AS1
AS0
0x07
Bus Interface Control
CD disable
SCSI
ECSI
RFU
RFU
RFU
Bus width1
Bus width
0x08
Card Capability
4BLS
LSC
E4MI
S4MI
SBS
SRW
SMB
SDC
0x09-0x0B
Common CIS Pointer
指向卡的通用卡信息结构CIS
0x0c
Bus suspend
RFU
RFU
RFU
RFU
RFU
RFU
BR
BS
0x0D
Function Select
DF
RFU
RFU
RFU
FS3
FS2
FS1
FS0
0x0E
Exec Flags
EX7
EX6
EX5
EX4
EX3
EX2
EX1
EXM
0x0F
Ready Flags
RF7
RF6
RF5
RF4
RF3
RF2
RF1
RFM
0x10-0x11
FN0 Block
Size
功能0的IO块大小
0x12
Power Control
RFU
RFU
RFU
RFU
RFU
RFU
EMPC
SMPC
0x13-0xEF
RFU
0XF0-0xFF
保留给厂商
Field
Type
解释
CCCRx
RO
CCCR格式的版本号,这4位包含card支持的CCCR和FBR格式,CCCR或FBR的改变将引起新版本号的分配。
0x00=CCCR/FBR Version1.00
0x01=CCCR/FBR Version1.00
0x02-0x0F 保留
SDIOx
RO
SDIO标准协议版本号
0x00=SDIO 标准协议1.00
0x01=SDIO标准协议1.10
0x02-0x0F 保留
SDx
RO
SD协议版本号
0x00=SD Version1.00
0x01=SD Version1.10
0x02-0x0F 保留
IOEx
RW
使能功能,如果这位为0,功能禁止,这位为1,功能被使,并开始初始化。通过IORx可以获得初始化状态。上电或复位此位为0.host可以使用IOEx作为每一个功能的复位的错误恢复。HOST端数据序列是复位每一个功能是复位IOEx,等IORx变成0并且再次设置IOEx。如果错误没有发生,SDIO复位将生命也不做。操作的所用功能都被禁止。
IORx
RO
IO Fuction Ready如果这位复位为0,功能没有准备好被操作。如果这位为1,功能可以操作。对于一些儿功能在SDIO中不被实现,将总是被设置为0.功能将设置这位为1在超时时间值内,超时时间定义在TPLFE_ENABLE_TIMEOUT_VAL元组中
IENx
RW
功能的中断使能,如果这位被清零,功能的中断信号将不会被发送到HOST端,如果这位位1,中断信号将发送到HOST同时master中断使能也必须置1
IENM
RW
中断使能master。如果这位为0,中断信号不会从card发送到HOST,为1,功能的中断信号会发送到HOST
INTx
RO
功能的中断挂起。如果这位为0表明没有中断挂起,为1有中断挂起,如果IENx和IENM位没有设置,HOST将不能收到挂起中断
ASx
WO
终止选择(Abort Select),终止IO读写操作,并且释放SD总线。这3位定义功能传输停止。如:停止功能好3的数据传输,通过CMD52命令写0X03到ASx。
RES
WO
IO Card Reset设置这位为1将引起IO功能在SDIO card中执行软复位,但并不影响当前card协议选择。通过CMD52设置此为,此位自动清除,因此没有必要重写置0。读此位将收到不确定的数据值
Bus Width1:0
RW
定义数据传输总线宽度,所有全速SDIO card支持1位和4位,但是低速可选择4位数据传输。复位或上电,此位清0
CD disable
R/W
连接10到90K上拉电阻到数据线DATA[3],上拉被用于card检测。这个位必须清零在上电时
SCSI
RO
支持连续的SPI中断(Support Continuous SPI interrupt)。对现有的wifi芯片,不用理会
ECSI
RW
使能SPI中断Enable Continuous SPI Interrupt.
SDC
RO
Card Supports Direct Commands卡支持直接命令。这位仅应用在SD模式,对于SPI模式不适用。这个标志位指示SDIO卡的能力在执行CMD52同时数据传输正在进行。
SMB
RO
卡支持多块传输。这位仅使用在SD模式,不适用SPI模式。这位报告SDIO卡的功能。命令相关时CMD53
SRW
RO
卡支持读等待。这位指示SDIO卡支持读等待操作。
SBS
RO
Card supports Suspend/Resume.这位用在SD模式,对SPI模式不适用。
S4MI
RO
Supports interrupt between blocks of data in 4-bit SD mode
支持中断的数据块中的4位的SD模式。此标志位报告
SDIO卡的能力,产生中断时, 4位多块数据传输。如果
此位是0 ,则SDIO卡无法信号中断在多块
数据传输中的4位模式。在这种情况下,并不意味着中断之后才
数据传输完成。如果此位是1 ,那么SDIO卡是一种能信号
中断模块之间的数据传输,同时正在取得进展
E4MI
RW
Enable interrupt between blocks of data in 4-bit SD mode
如果这位为0在SD模式的多块数据传输时,SD 卡将不会信号中断
,为1将信号中断。
LSC
RO
Card is a Low-Speed card.为0指示卡是高速模式,为1是低速模式
4BLS
RO
4-bit support for Low-Speed cards,如果卡支持4位传输模式,并且是在低速模式,此位为1否者是0
Pointer to
card’s
common CIS
RO
This 3-byte pointer points to the start of the card’s common CIS.
指向CIS,CIS包含整个卡的信息,
BS
RO
总线状态:
Bus Release Request/Status
RW
Bus Release Request/Status:对实际的wifi芯片没有用到
FSx
RW
功能选择位0:3bit,有两种方式设置这个值,一个是通过CCCR寄存器,一个是通过新的IO命令写IO功能号
0000=CIA功能号0
0001-0111功能号1到7
1000 Transaction of memory in combo card
其他保留。如果SBS设置为0,表示为只读状态
DF
RO
Resume Data Flag:如果这位为0,表示没有没有数据传输,如果这位为1,有更多的数据传输在功能或者内存唤醒后。
EXx
RO
执行标志7:0,这些位被HOST来确定当前功能1到7和内存的执行状态。该位为1,每一个功能和内存正在执行命令。只有在SBS=1,这些位才定义,SBS=0,这些位同样也必须是0
RFx
RO
Ready Flag bits 7:0,这些位通知HOST读写忙状态。当功能和内存正在执行写,此标志位被清0,表示此时功能和内存忙,不能接受更多的数据。
FN0 Block Size
RW
这个16位寄存器设置功能0 IO操作块大小,如果card不支持IO块操作(SMB=0),这个寄存器只读,并且总是0.最大的块大小是2048.最小1块
SMPC
RO
Support Master Power Control这个标志位告诉HOST card支持功耗控制。
SMPC=0:当前电流小于200MA,SMPC=1大于200MA
EMPC
RW
Enable Master Power Control
RFU
RO
保留
Reserved
for Vendors
R/W
这里由厂商定义或扩充
FBR(FunctionBasic Registers)
除了CCCR,每个支持的I/ O功能有一个256字节区域使用,让主机能够迅速
判断每个功能(FUNCTION)的能力和要求,使能每个功能(FUNCTION)电源选择,并
使软件载入中。的地址,这寻址是从0x00n00以0x00nFF其中n是功能数量
(0x1到0x7) 。这每功能区的结构如下
Address
7
6
5
4
3
2
1
0
0x100
Function1
CSA enable
Function1
Supports
CSA
RFU
RFU
Function 1 Standard SDIO Function
interface code
同3
同3
同3
0x101
Function 1 Extended standard SDIO Function interface code
0x102
RFU
RFU
RFU
RFU
RFU
RFU
EPS
SPS
0X103-0x108
RFU
0x109-0x10B
Pointer to Function 1 Card Information Structure (CIS)
0x10C-0x10E
Pointer to Function 1 Code Storage Area (CSA)
0x10F
Data access window to Function 1 Code Storage Area (CSA)
0x110-0x111
I/O block size for Function 1
0x112-0x1FF
Reserved for Future Use
0x200-0x7FF
Function 2 to 7 Function Basic Information Registers (FBR)
0x800-0xFFF
RFU
状态位描述
Field
Type
描述和解释
SDIO Standard
Function interface code
RO
这位指示SDIO标准功能接口的功能。不同的数据值代表不同的标准接口
0x0:非SDIO标准接口支持
0x1:这个功能支持SDIO标准的UART
0x2:这个功能支持SDIO type-a的蓝牙标准
0x3:这个功能支持SDIO type-b的蓝牙标准
0x4:这个功能支持SDIO GPS接口标准
0x5:这个功能支持SDIO 摄像头接口标准
0x6:这个功能支持SDIO PHS 标准接口
0x7:这个功能支持SDIO WLAN接口
0x8-0x0E:保留
0xF:这个功能支持SDIO标准接口号大于0Xe.
Function
Supports
CSA
RO
如果Function 支持和包含CSA(Code Storage Area).这位被置1.如果Function不支持CSA,这位将清零。CSA使能被7位寄存器0xn00控制
Function
CSA
Enable
RW
此位置1,读写CSA允许,否则不能读写。如果function不支持CSA,这位为只读状态
Extended
SDIO
Standard
Function
interface
code
RO
扩展的SDIO标准接口。如果SDIO标准功能接口大于0xE,这个字节应该包含编码和标准编码应该包含 0xF值。如果标准编码小于0xF,这个字节是0x00
SPS(Support
Power
Selection)
RO
SPS=0:表示没有功耗选择。EPS为0
SPS=1:指示FUNCTION 有两种功耗模式通过选择EPS
EPS
(Enable
Power
Selection
EPS
EPS=0:功能操作在高电流模式
最大的电流值是在TPLFE_HP_MAX_PWR_3.3V
EPS=1:FUNCTION 工作在低功耗模式
最大电流值在TPLFE_LP_MAX_PWR_3.3V
Address
pointer to
Function
CIS
RO
这3个字节组成24位的指针指向CIS的开始位置与每一个FUNCTION融合在一起。SDIO卡中的每一个FUNCTION是强制CIS的。指针存储是小端模式。如果FUNCTION不支持,寄存器指针指向元组的最后。
Address
pointer to
Function
CSA
RW
3个字节组成24位指针,指向读写的CSA字节,任何读写CSA的操作通过window 寄存器。指针将自动增加1.如果FUNCTION不支持CSA,24bit读时将总是返回0x000000.指针存储时小端模式
Data
access
window to
CSA
RW
当CSA使能,任何读写这个地址必须通过CSA寻址指针。如果不支持CSA,这8位将是只读状态返回 0x00。
Function
1-7 I/O
Block Size
RW
这16位寄存器设置IO块操作的块大小。如果这个卡不支持IO块操作(SMB=0)这个寄存器就变成只读,并总是返回0x0000。最大的块大小是2048,最小的是1
CardInformation Structure(CIS)CIS提供更多的完整的信息和独立的FUNCTION。设计标准基于PCcard16的设计标准。所有的卡,支持的IO操作的都有一个CIS,并且每一个FUNCTION有一个CIS。访问CIS通过读固定的地址区域(0x0001000-0x017FFF).这个地址区域作为通用的CIS,也可以被用作每个FUNCTION的存储区域。对地址0X018000-0X01FFF是保留的。
- [sdio] Common Information Area (CIA) 分析及初始化过程
- [sdio] Common Information Area (CIA) 分析及初始化过程
- sdio 初始化流程
- Arm linux 内核移植及系统初始化过程分析
- Arm linux 内核移植及系统初始化过程分析
- Arm linux 内核移植及系统初始化过程分析
- Arm linux 内核移植及系统初始化过程分析
- Arm linux 内核移植及系统初始化过程分析
- 对象初始化过程分析
- rtems初始化过程分析
- DirContext初始化过程分析
- UVA 12931 Common Area
- [SDIO]主机识别SDIO接口卡过程
- SDIO WiFi模块分析
- SDIO 协议分析
- Bootloader初始化启动过程分析
- xorg初始化过程分析,总结
- 源码分析-Mybatis初始化过程
- 如何解决在Xp系统中应用程序有2G内存的限制
- C语言-学习---1
- iOS 基础:证书介绍
- Collect preferences failed, class java/lang/AutoCloseable not found in C:\Program Files (x86)\Androi
- Java与C++差异之return
- [sdio] Common Information Area (CIA) 分析及初始化过程
- iOS 绘图 Quartz 2D
- SQL Server option(recompile)
- C++中对二进制文件读取问题
- quick-lua创建骨骼动画
- java基础 之 HashMap统计csv文件的单词
- PL/SQL Developer 中文乱码问题的解决
- 010005 专注的做一个研究型的美男子
- 32位应用程序单个进程最大占用内存是4GB