Como posso ler o ID do dispositivo flash instalado, talvez através da interface mtd?

4

Em nossa solução Linux incorporada usando o uClinux, acabei de adicionar um dispositivo flash maior. Eu quero ser capaz de consultar qual dispositivo eu instalei (dispositivo de hardware).

O dispositivo pequeno e grande tem ID de dispositivo diferente, que eu posso ler no código do driver do meu dispositivo.

O que eu não sei é como obter essa informação em "user land". Ou seja em um script shell / bash.

Eu olhei para:

cat /proc/mtd - isso fornece informações sobre o tamanho das partições. Mas não posso dizer a partir disso, de fato, precisarei alterar os tamanhos das partições com base no chip flash instalado.

mtd_debug info /dev/mtd0 - Isso é bem parecido, ele me fala sobre o tamanho do setor (tamanho do apagamento), o tipo de mtd, etc ... mas como os dois chips flash são do mesmo tipo isso também não é informação suficiente. / p>     

por code_fodder 27.02.2017 / 14:13

2 respostas

1

Eu fiz uma solução baseada em código para isso, está em estouro de pilha aqui: how-can-i-determine-o-qual-mtd-flash-device-is-installed

No entanto, uma vez que esta é uma mudança de código (mesmo que seja apenas uma linha), isso requer uma reconstrução do kernel, então eu não estou marcando isso como a solução ainda ...

    
por 01.03.2017 / 08:45
0

Rapidamente, mas feio, você pode varrer a saída do kernel para uma mensagem sobre NAND:

dmesg | grep 'Manufacturer ID'

A mensagem varia de versão para versão ( 2.6 .32 , 4.10 . Aqui está o resultado para 2.6.32.57:

[root@board /]# dmesg | grep 'Manufacturer ID'
NAND device: Manufacturer ID: 0xec, Chip ID: 0xda (Samsung NAND 256MiB 3,3V 8-bit)
    
por 27.02.2017 / 15:52