应用层解决usb转sd卡嵌入式linux内核不支持热插拔问题

        硬件设计使用了,usb转sd卡的电路,类似sd卡读卡器,经过测试,发现linux系统,usb口不动,直接插拔sd卡,系统无法热插拔,

经过多方验证,查找到一种复位usb节点的方法,可实现重新加载usb设备,可以类比其他类似功能,实现复位usb设备。

echo 0 > /sys/devices/soc/7000000.ssusb/7000000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1.3/authorized 

echo 1 > /sys/devices/soc/7000000.ssusb/7000000.dwc3/xhci-hcd.0.auto/usb1/1-1/1-1.3/authorized 

具体节点,查看自己设备内核日志

方法一:应用层使用文件系统读写失败,时,可动态操作节点,实现热插拔,重新加载sd卡设备

方法二:硬件上增加一个sd卡检测引脚,拔掉卡时,判断io口,比方法一有更快的时效性和准确性

此处在提供一个内核更改方法,需要懂mmc框架,此处只提供下思路,需要自己实现:

通过一直发送cmd:TEST_UNIT_READY 来检测card的状态。
这边看了 /drivers/scsi/sd.c 文件是有走到的。可以参考函数 sd_spinup_disk里面状态检测。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值