Linux 2.6.32, busybox, Identificar dispositivo SD físico

2

Eu tenho um leitor de cartão USB com duas interfaces de cartão SD e duas portas USB (por isso, ele também pode atuar como um hub USB), tudo no mesmo dispositivo. Estou executando um dispositivo Linux embarcado que não é supervisionado em seu uso e pretendo usar dois cartões SD no leitor para armazenar dados coletados durante várias horas de operação. Cada cartão destina-se a conter dados específicos e os dois tipos de dados não podem ser misturados.

Usando a capacidade do mdev de disparar um script quando um dispositivo SCSI USB (um cartão SD ou um disco flash USB) é montado, posso observar a localização física do dispositivo USB para que eu possa identificar qual disco é qual, mas há uma exceção a isso. O leitor de cartão informa que ambos os cartões SD no leitor estão fisicamente localizados na porta 1 do leitor. Isso significa que não posso (com meu conhecimento atual) identificar em meus programas personalizados o cartão físico para o qual os dados estão sendo gravados.

Eu não consigo colocar o usuário no loop para informar ao sistema qual placa é qual (o usuário simplesmente conecta 2 cartões novos, liga o dispositivo e sai). Como posso determinar qual sistema de arquivos pertence a qual disco físico usando ferramentas compatíveis com o Busybox?

Obrigado.

    
por San Jacinto 28.11.2011 / 14:05

1 resposta

2

/sys/block é o lugar para procurar por isso. Quando o leitor de cartão está conectado, ele lista dois dispositivos de bloco no estilo sd* , onde * é uma letra. É como se o sistema tivesse adicionado um dispositivo scsi físico sem qualquer meio de acessar a mídia (a menos que haja uma partição formatada nele, que o sistema hotplug monta automaticamente através do /etc/mdev.conf do mdev).

/sys/block/sda (por exemplo) é um link simbólico para /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 .

A seção anterior a /host/target0:0:0 é a configuração da árvore de dispositivos físicos dos meus dispositivos USB. O leitor de cartões está no barramento 2, porta 1, porta 1.

A seção após /host/target0:0:0 é mais um mapeamento de dispositivo que não consigo entender, mas o último dígito (para dispositivos nesta leitora) é sempre um 0 ou um 1, que corresponde a uma porta ou ao outro.

Então, eu tenho o que preciso, mas seria bom para alguém aparecer e preencher os buracos e oferecer uma explicação muito melhor para a posteridade.

    
por 28.11.2011 / 17:13