Как определить имя метки устройства, модуль g_mass_storage
Работая над встроенной системой, которая включает в себя модуль g_mass_storage в конфигурации ядра, я бы хотел определить имя устройства. Последнее будет полезно для идентификации устройства при подключении к хосту.
Я использую следующую функцию:
int usb_gadget(void)
{
char cmd[512];
int fd = -1;
int len = -1;
memset((void *)cmd, 0x00, sizeof(cmd));
fd = open("proc/modules", O_RDONLY);
if (fd > 0)
{
len = read(fd, cmd, sizeof(cmd));
if (len > 0)
{
if (strstr(cmd, "g_mass_storage") > 0)
{
fprintf(stderr, "Missing module \n");
}
else
{
strcpy(cmd, "modprobe ");
strcat(cmd, "g_mass_storage");
strcat(cmd, " file=");
strcat(cmd, "tmp/testfile");
strcat(cmd," idVendor=2000 ");
strcat(cmd," idProduct=2000 ");
strcat(cmd," bcdDevice=2000 ");
strcat(cmd," iManufacturer=TEST ");
strcat(cmd," iProduct=BOARD1 ");
strcat(cmd," iSerialNumber=1 ");
system(cmd);
}
close(fd);
}
}
return 0;
}
Когда устройство подключено к ПК с Windows, оно определяется как Local Disk(E:)
,
Как обменять Local Disk
по определенному имени, как это сделано для моего USB-ключа SnPKey
?
РЕДАКТИРОВАТЬ 1:
Согласно информации, приведенной в предыдущей ссылке, я пытался указать строку USB-продукта через iProduct
безуспешно.
1 ответ
Решение найдено.
Метка тома должна быть определена при создании секторов.
В моем случае я проверил процесс, написав 0x4E,0x4F,0x20,0x4E,0x41,0x4D,0x45,0x20,0x20,0x20,0x20
который равен NO NAME
,