Linux 2.6.32,busybox,识别物理 SD 设备

Linux 2.6.32,busybox,识别物理 SD 设备

我有一个 USB 读卡器,带有两个 SD 卡接口和两个 USB 端口(因此它也可以充当 USB 集线器),所有这些都位于同一设备上。我正在运行一个嵌入式 Linux 设备,该设备的使用不受监督,并且打算在读卡器中使用 2 个 SD 卡来存储在几个小时的操作中收集的数据。每张卡都旨在保存特定数据,并且两种数据类型不能混合。

使用 mdev 在安装 USB SCSI 设备(SD 卡或 USB 闪存盘)时触发脚本的功能,我可以记下 USB 设备的物理位置,以便我可以识别哪个磁盘是哪个磁盘,但是但有一个例外。读卡器报告读卡器中的两张 SD 卡物理上位于读卡器的端口 1 上。这意味着我无法(以我目前的知识)在我的自定义编写的程序中识别数据正在写入的物理卡。

我无法让用户进入循环来告诉系统哪张卡是哪一张(用户只需插入两张新卡,打开设备,然后走开)。如何使用Busybox兼容的工具确定哪个文件系统属于哪个物理磁盘?

谢谢。

答案1

/sys/block是寻找这个的地方。当读卡器插入时,它会以 的形式列出两个块设备sd*,其中 * 是一个字母。就好像系统添加了一个物理 scsi 设备,但没有任何方式访问媒体(当然,除非上面有一个格式化的分区,热插拔系统通过 mdev 自动安装该分区/etc/mdev.conf)。

/sys/block/sda(例如) 是到 的符号链接/sys/devices/platform/fsl-ehci.0/usb2/2-1/2-1.1/2-1.1:1.0/host0/target0:0:0/0:0:0:1/block/sda

前面的部分/host/target0:0:0是我的USB设备的物理设备树配置。读卡器位于总线 2、端口 1、端口 1。

接下来的部分/host/target0:0:0是更多我不太明白的设备映射,但最后一位数字(对于该读卡器中的设备)始终是 0 或 1,对应于一个端口或另一个端口。

所以,我已经有了我需要的东西,但如果有人能够填补空白并为后代提供更好的解释,那就太好了。

相关内容