在嵌入式系统的内核配置中包含g_mass_存储模块的情况下,我想定义设备的名称。后者将用于在插入主机时识别设备。
我正在使用以下功能:

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密钥进行交换一样?
编辑1:
Mass Storage Gadget
根据上一个链接中提供的信息,我试图通过SnPKey指定一个usb产品字符串,但没有成功。

最佳答案

找到解决方案。
必须在扇区创建期间定义卷标。
在我的例子中,我通过写0x4E,0x4F,0x20,0x4E,0x41,0x4D,0x45,0x20,0x20,0x20,0x20来验证这个过程,它等于NO NAME

10-08 08:10