小编Mow*_*urf的帖子

带有 functionfs 的 Linux USB 小工具:读取端点 1 不成功

我想在带有 WINUSB 驱动程序的 Windows10-PC 上使用 iMX7-SOM 作为供应商特定设备(小工具)。我使用的是基于 Angstrom、Yocto 制作的映像,内核为 v4.9.166。

我使用 libusbgx 配置了小工具,将 functionfs 安装在 /ffs 并将描述符写入 /ffs/ep0。设备按预期枚举,并且我在端点 0 上获取命令(如“BIND”、“ENABLE”、“DISABLE”等)。

这么久了,真好……

在端点 0 接收到“ENABLE”时,我想打开 /ffs/ep1 并使用 poll() 读取传入数据。但 poll() 立即返回,而 read() 永远不会返回(仅当我拔掉设备时)。在主机端没有应用程序正在运行。

我使用 select() 代替,但结果完全相同。

当我使用 ioctl(fd_of_ep_1, FUNCTIONFS_FIFO_STATUS) 时,我收到错误消息“不支持操作”。

int fd = open("/ffs/ep1", O_RDWR);

fd_set read_set;
FD_ZERO(&read_set);
FD_SET(fd, &read_set);

int ret = select(fd + 1, &read_set, NULL, NULL, NULL);
if (ret < 0)
{
    perror("select");
}
else if (FD_ISSET(fd, &read_set))
{
    int foo = ioctl(fd, FUNCTIONFS_FIFO_STATUS);
    if (foo < 0) …
Run Code Online (Sandbox Code Playgroud)

c linux embedded usb embedded-linux

1
推荐指数
1
解决办法
1697
查看次数

标签 统计

c ×1

embedded ×1

embedded-linux ×1

linux ×1

usb ×1