文章目录
-
- Linux驱动子系统-sdio子系统
-
- sdio系统概述
- 判断sd卡是否识别
- 判断sdio wifi是否识别
- sd协议
-
- SD BUS
- SPI BUS
- 硬件接口:
- 调试的问题
- sdmmc接口使用sdio wifi设备 无法识别设备
- 概率不识别
- 硬件问题,io电压异常
-
- dts 含义解析
Linux驱动子系统-sdio子系统
sdio系统概述
MMC SD SDIO三种卡,从发展历程来看,是先有MMC卡,后来有SD卡,这两种都是纯粹的存储卡,而SDIO是什么呢,从字面意思理解,应该是SD+IO,也就是既有存储功能,又有IO控制功能,不过也有纯IO功能的SDIO设备(本人用到的WIFI模块就是这种)。并且,这三种卡可以使用同一个插槽,系统还能正确的识别!!,可能是由于历史原因,在开始有Linux的时候,还只存在mmc卡(不存在SD和SDIO卡),所以在linux系统里面关于这三种卡的名称统统用“mmc“来命名。
SDIO总线和USB总线类似,SDIO总线也有两端,其中一端是主机(HOST)端,另一端是设备端(DEVICE),采用HOST- DEVICE这样的设计是为了简化DEVICE的设计,所有的通信都是由HOST端发出命令开始的。在DEVICE端只要能解析HOST的命令,就可以同HOST进行通信了,SDIO的HOST可以连接多个DEVICE。
SDIO的信号传输模式有SPI、1-bit、4-bit三种。在SPI模式中,第8脚位被当成中断信号。其它脚位的功能和通信协定与SD记忆卡的标准规范一样。在SDIO总线定义中,DAT1信号线复用为中断线。在SDIO的1BIT模式下DAT0用来传输数据,DAT1用作中断线。在SDIO的4BIT模式下DAT0-DAT3用来传输数据,其中DAT1复用作中断线。
判断sd卡是否识别
log信息如下:
[ 115.399427] mmc0: new ultra high speed SDR50 SDHC card at address aaaa
[ 115.401103] mmcblk0: mmc0:aaaa SS32G 29.7 GiB
[ 115.411808] mmcblk0: p1
说明tf卡已经被正确识别,并且可用的分区p1
- 1
- 2
- 3
- 4
确认板子上的linux系统是否识别SD卡fdisk -l ---对应/dev/mmcblk0,/dev/mmcblk0p1
看看到底有没有mmc相关的分区cat /proc/partitions179 64 31166976 mmcblk0179 65 31165440 mmcblk0p1
挂载mount /dev/mmcblk0p1 /mnt
卸载umount /mnt
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
判断sdio wifi是否识别
log如下:
[ 2.464027] mmc0: new high speed SDIO card at address 0001
[ 2.464116] hdj stdio_bus.c sdio_add_func 341 mmc0:0001:1
- 1
- 2
节点信息:
cat /sys/bus/sdio/devices/mmc0:0001:1/uevent //可查看SDIO设备ID
mount -t debugfs none /sys/kernel/debug
cat /sys/kernel/debug/mmcx/ios //可查看WIFI_sdio 相关信息
# cat /sys/bus/sdio/devices/mmc0\:0001\:1/uevent
DRIVER=rtl88x2cs
SDIO_CLASS=07
SDIO_ID=024C:C822
MODALIAS=sdio:c07v024CdC822
- 1
- 2
- 3
- 4
- 5
/sys/kernel/debug/mmc0 # cat ios
clock: 50000000 Hz
vdd: 21 (3.3 ~ 3.4 V)
bus mode: 2 (push-pull)
chip select: 0 (don't care)
power mode: 2 (on)
bus width: 2 (4 bits)
timing spec: 2 (sd high-speed)
signal voltage: 0 (3.30 V)
driver type: 0 (driver type B)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
sd协议
sdmmc 和 sdio接口 控制器相同.
- 需要注意:
- 硬件所在的接口
- 供电的选择
sd协议:https://www.jianshu.com/p/6272e4cb1eeb
SD卡按总线速度模式来分,有下面几种:
Default Speed mode: 3.3V供电模式,频率上限25MHz,速度上限 12.5MB/sec
High Speed mode: 3.3V供电模式,频率上限50MHz,速度上限 25MB/sec
SDR12: UHS-I卡, 1.8V供电模式,频率上限25MHz,速度上限 12.5MB/sec
SDR25: UHS-I卡, 1.8V供电模式,频率上限50MHz,速度上限 25MB/sec
SDR50: UHS-I卡, 1.8V供电模式,频率上限100MHz,速度上限 50MB/sec
SDR104: UHS-I卡, 1.8V供电模式,频率上限208MHz,速度上限 104MB/sec
DDR50: UHS-I卡, 1.8V供电模式,频率上限50MHz,性能上限 50MB/sec
UHS156: UHS-II RCLK Frequency Range 26MHz - 52MHz, up to 1.56Gbps per lane.