2014-10-07 293 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