2016-02-03 28 views
1

使用包含内核配置中的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 PC,该装置被定义为Local Disk(E:)

如何通过特定名称替换Local Disk,因为它是为我的USB密钥SnPKey完成的?

编辑1:

Mass Storage Gadget

根据前面的链接中给出的信息,我试图通iProduct指定的USB产品线没有成功。

+0

经过多次研究,这个写法似乎在分区阶段就已经实现了。我很快就会在平台上实现测试。 – ogs

回答

1

找到解决方案。

在创建扇区时必须定义卷标。

在我的情况下,我通过写作0x4E,0x4F,0x20,0x4E,0x41,0x4D,0x45,0x20,0x20,0x20,0x20,这相当于NO NAME验证过程。