2016-02-03 1 views
1

En travaillant sur un système embarqué incluant le module g_mass_storage dans sa configuration du noyau, je voudrais définir le nom de l'équipement. Ce dernier sera utile pour identifier l'appareil lorsqu'il est branché à un hôte.Comment définir le nom de l'étiquette de l'appareil, module g_mass_storage

J'utilise la fonction suivante:

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; 
} 

Lorsque l'appareil est connecté à un PC sous Windows, l'appareil est défini comme Local Disk(E:). Comment échanger Local Disk par un nom spécifique comme c'est fait pour ma clé USB ?

EDIT 1:

Mass Storage Gadget

Selon les informations données dans le lien précédent, j'ai essayé de spécifier une chaîne de produit USB à travers iProduct sans succès.

+0

Après de nombreuses recherches, cette écriture semble être réalisée au cours de l'étape de partitionnement. Je vais bientôt réaliser un test sur la plateforme. – ogs

Répondre

1

Solution trouvée.

L'étiquette de volume doit être définie lors de la création des secteurs.

Dans mon cas, j'ai validé le processus en écrivant 0x4E,0x4F,0x20,0x4E,0x41,0x4D,0x45,0x20,0x20,0x20,0x20 qui est égal à NO NAME.