2014-10-07 260 views
1

我想访问SD卡上的CSD(卡特定数据)寄存器。我知道这样做的唯一方法是让Linux系统将其识别为mmc设备(多媒体卡?)(例如/ dev/mmcblk0)。现在设备显示为一个scsi磁盘(例如/ dev/sda)。Linux设备节点的SD卡为mmcblk访问CSD寄存器

有什么方法可以访问CSD寄存器(卡特定数据),当它被作为scsi磁盘挂载时?

有没有什么办法让我的内核可以将设备识别为mmc?

谢谢。

+1

卡是如何连接到电脑的?许多内置卡插槽实际上通过USB进行代理。我*不知道事实*如果通过USB SD/MMC读卡器芯片支持原始MMC级别的操作,但我怀疑他们通常不是。如果这种情况不常见,或者您不需要高速访问,则可以考虑从本地总线端口(如果可用)或使用基于具有USB功能的微控制器的自定义适配器对卡进行位反转。 – 2014-10-07 18:16:50

+0

@ChrisStratton USB读卡器使用USB大容量存储标准,通常不提供任何接口来执行“原始”SD/MMC操作。 – duskwuff 2014-10-07 18:17:51

+0

谢谢。我有USB适配器。我拥有的一个适配器是“内置于”我的桌面,但它似乎没有显示#lspci命令,并且确实显示为带#lsusb。 您认为我可以通过查找通过串行或PCI连接的硬件来获益吗? – ChrisVollo 2014-10-07 18:21:49

回答

1

您至少应该在/ sys/block/diskX目录中获得一些CSD信息。

例如: 我的连接到U盘的SD卡被系统发现为/ dev/sdc。

ls -l /sys/block/sdc/queue/ 
total 0 
-rw-r--r-- 1 root root 4096 Oct 7 22:25 add_random 
-r--r--r-- 1 root root 4096 Oct 7 22:25 discard_granularity 
-r--r--r-- 1 root root 4096 Oct 7 22:25 discard_max_bytes 
-r--r--r-- 1 root root 4096 Oct 7 22:25 discard_zeroes_data 
-r--r--r-- 1 root root 4096 Oct 7 22:25 hw_sector_size 
drwxr-xr-x 2 root root 0 Oct 7 22:24 iosched 
-rw-r--r-- 1 root root 4096 Oct 7 22:24 iostats 
-r--r--r-- 1 root root 4096 Oct 7 22:25 logical_block_size 
-r--r--r-- 1 root root 4096 Oct 7 22:24 max_hw_sectors_kb 
-r--r--r-- 1 root root 4096 Oct 7 22:24 max_integrity_segments 
-rw-r--r-- 1 root root 4096 Oct 7 22:24 max_sectors_kb 
-r--r--r-- 1 root root 4096 Oct 7 22:24 max_segment_size 
-r--r--r-- 1 root root 4096 Oct 7 22:24 max_segments 
-r--r--r-- 1 root root 4096 Oct 7 22:24 minimum_io_size 
-rw-r--r-- 1 root root 4096 Oct 7 22:25 nomerges 
-rw-r--r-- 1 root root 4096 Oct 7 22:25 nr_requests 
-r--r--r-- 1 root root 4096 Oct 7 22:25 optimal_io_size 
-r--r--r-- 1 root root 4096 Oct 7 22:23 physical_block_size 
-rw-r--r-- 1 root root 4096 Oct 7 22:25 read_ahead_kb 
-rw-r--r-- 1 root root 4096 Oct 7 22:25 rotational 
-rw-r--r-- 1 root root 4096 Oct 7 22:25 rq_affinity 
-rw-r--r-- 1 root root 4096 Oct 7 22:25 scheduler 
+0

谢谢。有趣...我想更多地了解这一点。你认为可以写入寄存器吗?我想要做的是启用临时写保护。 – ChrisVollo 2014-10-07 21:36:40

+0

所以我想你想要的是设置TMP_WRITE_PROTECT(CMD 27)位。我可能是错的,但我认为如果没有写入内核驱动程序来访问这个寄存器(似乎sys接口不允许它),你将无法做到这一点。 你也必须考虑到一些命令只能在SD卡的特定状态下执行。 请在这里阅读更多: https://www.sdcard.org/downloads/pls/simplified_specs/part1_410.pdf SD规格文件。 – RaFD 2014-10-07 22:20:19

+0

是的。这是我想要的,TMP_WRITE_PROTECT位。如果SD卡是mmcblk设备节点,我相信有一种方法可以改变它。我可能是错的。我使用名为sdtool的命令行工具在我的Raspberry pi上完成了它。 – ChrisVollo 2014-10-07 22:26:27