工具/软件:Starterware
您好!
我需要获取 Mentor USB OTG 控制器的完整文档以查找所有寄存器。
有人可以让我走上获取此文档的道路吗?
谢谢你。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好、Bin、
我可以使用小工具来实现我的目标吗? gadgetfs 比子 gadget 驱动程序更简单。
是否可以在小工具中添加控制函数来处理从其他应用程序发送的消息? 我在 usb.c 中找到了说明
首先,在配置/dev/gadget $chip 时调用 DEV_CONFIG()
+* (通过写入配置和器件描述符)。 然后进行操作
+* 可用作设备事件的来源、用于处理所有控制
+* 除基本枚举之外的请求。
因此、在配置/dev/gadget /$chip 之后、其他应用程序可以向/dev/gadget /$chip 的文件描述符发送控制消息。 正确吗?
另外、您能否告诉我在使用小工具 getfs 时如何设置 FIFO 和 DMA?
谢谢你。
[引用用户="营 杰 gi">我是否可以使用小工具来实现我的目标? gadgetfs 比子 gadget 驱动程序更简单。
我不确定什么是"子小工具驱动程序"、但 USB 小工具应能满足您的目标。 但我相信 USB configfs 对您来说甚至更简单、除非您的 HID 和 MUS_STORAGE 函数是自定义的、这样 Linux 内核中提供的 HID 和 MUS_STORAGE 小工具驱动程序就不符合您的要求。
[引用用户="pingjie ga)]是否可以在小工具中添加控制函数来处理从其他应用程序发送的消息? 我在 usb.c[/quot]中找到了说明
内核中有许多 usb.c 文件、我不确定您查看的是哪一个、但您应该能够在 gadgetfs 中添加控制函数、因为您必须使用 gadgetfs 来实现整个 gadget 驱动程序。
[引述 USER="Yingjie ga"]另外,您能告诉我在使用小工具时如何设置 FIFO 和 DMA 吗?
无论您使用 gadgetfs 或 configfs、都不必担心 USB FIFO 和 DMA、这些都已经由 USB 控制器驱动程序处理。
您好、Bin、
我已经在我的入门套件上尝试了小工具 getfs 和 configfs。 板上只有一个 USB Micro B 连接、我也将其用作引导的 UART 连接。 我使用的 configfs 在/dev/hidg0上创建 hid 设备。 当我尝试写入/dev/hidg0时,有时我从 write(FD、BUG、len)得到的返回值为0。 但在大多数情况下、系统会在那里挂起。 小工具发生了类似的情况。 以下是我的 configfs 命令、并随附写入 USB 文件。 select()始终返回1,并且/dev/hidg0文件描述符已准备就绪。 我知道我应该向这个 EP 写入一个真实的 kbd 报告。 但为简单起见、我只向其写入一个小 buf。
您能帮您找出问题所在吗? 它是否与唯一的 Micro B 通过集线器转换为 UART 有关?
root@AM335x-evm:/sys/kernel/config/usb_gadget/g1 echo "0x1234">idVendor
root@AM335x-EVM:/sys/kernel/config/usb_gadget/g1 echo "0x5678">idProduct
root@AM335x-EVM:/sys/kernel/config/usb_gadget/g1 mkdir 字符串/0x409
root@m335x-evm:/sys/kernel/config/usb_gadget/g1 echo "foo1"> strings/0x409/maufacactuer
root@AM335x-EVM:/sys/kernel/config/usb_gadget/g1 echo "foo2"> strings/0x409/product
root@AM335x-evm:/sys/kernel/config/usb_gadget/g1 echo "foo3"> strings/0x409/seiinumber
root@AM335x-EVM:/sys/kernel/config/usb_gadget/g1 mkdir configs/C.1
root@AM335x-EVM:/sys/kernel/config/usb_gadget/g1 mkdir configs/c.1/strings/0x409
root@AM335x-EVM:/sys/kernel/config/usb_gadget/g1 mkdir 函数/hid.kbd
root@AM335x-EVM:/sys/kernel/config/usb_gadget/g1 ln -s functions/hid.kbd/ configs/c.1
root@AM335x-EVM:/sys/kernel/config/usb_gadget/g1 echo "musb-hdrc.0.auto"> UDC
是的、我按照/Documentation/usb/gadget_hid.txt 来实现 configfs。 我没有找到 hid_gadget_test 应用程序、因此我从该文件复制了 hid_gadget_test 的示例代码、并创建了我自己的 tempwrite.c
在我的入门套件上、我可以看到/dev/hidgX 已创建。 但是在启动 PC 上,启动套件通过 USB 电缆连接到, 除了 ttyUSB0和 ttyUSB1外,不枚举任何 USB 设备。 我在启用/配置 配置后检查了之前和之后/重新插入了 USB 电缆。
您好、Bin、
我发现它不起作用的原因。 在 UDC 链接到 musb-hdrc.0.auto 之前、必须设置 functions/hid.kbd/中的属性。
现在、我可以在 SK 上键入它、并显示在我的主机 PC 上。
我还有一个问题、希望您能给我一些想法。
如果我需要通过设置 USB 寄存器进行 USB 软复位、是否必须在设置 configfs 小工具之前将其删除、然后在设置后重新创建 configfs 小工具? 换句话说、USB 软复位是否会影响已经生效的 configfs 小工具功能?
[引用用户="ingjie gu">我发现它不起作用的原因。 在 UDC 链接到 musb-hdrc.0.auto.之前、必须设置 functions/hid.kbd/中的属性
很高兴您解决了这个问题。 是的、链接到 UDC 必须是最后一步。
[引用用户="ingjie gu"]或者换句话说,USB 软复位是否会影响已经生效的 configfs 小工具功能? [/报价]
我从未尝试过 configfs、但使用传统的 USB 小工具驱动程序、我发现每个 USB 控制器都有不同的行为(我猜是由不同的控制器驱动程序设计引起的)-有些需要重新加载小工具驱动程序、有些则不需要。
但我不记得 AM335x 上的 MUSB 控制器是如何工作的。 请给它一个测试、让我知道它是如何运行的。 但我相信您不必"重新创建"configfs 小工具"、"从 UDC 取消链接、执行软复位、然后再次链接到 UDC "就足够了。
我还没有运行我自己的定制板、我将在完成后测试 USB 软复位。
我正在尝试通过 configfs 来模拟 HID 和大容量存储。 HID 正在工作。 但是、大容量存储在模拟时存在问题。
我在入门套件上插入了 USB 磁盘、它列为/dev/sdb /dev/sdb1
直接使用以下属性运行 g_mass 存储时
modprobe g_mass 存储 idVendor=0x1234 idProduct=0x5678 iManufacturer=gyjm iProduct=gyjp iSerialNumber=gyjs file=/dev/sdb1 stal=0 removable=1
入门套件上的"dmesg"显示:
root@AM335x-EVM:/sys/kernel/config/usb_gadget dmesg -T
[2017年10月27日星期五19:37:20 ]大容量存储功能、版本:2009/09/11
[2017年10月27日星期五19:37:20 ] LUN:可移动文件:(无介质)
[2017年10月27日星期五19:37:20 ] LUN:可移动文件:/dev/sdb1
[2017年10月27日星期五19:37:20 ] LUN 数量=1
[2017年10月27日星期五19:37:20 ] g_mass 存储小工具:海量存储小工具、版本:2009/09/11
[2017年10月27日、星期五、19:37:20 ] g_mass 存储小工具:g_mass 存储就绪
[2017年10月27日星期五19:37:21 ] g_mass 存储小工具:高速配置#1:Linux 文件支持存储
我的 PC 报告:您插入的磁盘不可被此计算机读取。 但无论如何、它都是枚举的。
然后、我使用我认为正确的步骤来配置大容量存储。 已枚举 HID、但未枚举大容量存储。 以下是与大容量存储相关的配置。
mkdir 函数/mass 存储。1.
#echo 0 > functions/mass 存储.1/stall
#echo /dev/sdb1 > functions/mass 存储.1/lun.0/file
#echo 1>功能/mass 存储.1/lun.0/可移动
#ln -s functions/mass 存储。1 configs/c.1
#echo musb-hdrc.0.auto > UDC
我得到了以下 dmesg:
[2017年10月27日星期五19:08:25 ]大容量存储功能、版本:2009/09/11
[2017年10月27日星期五19:08:25 ] LUN:可移动文件:(无介质)
文件为"无媒体"。 我不确定这是否是枚举失败的原因。 在 PC 上、dmesg 显示没有大容量存储。
您对此问题有什么看法吗?
[引用用户="营 杰 gu"]
[2017年10月27日星期五19:37:20 ] LUN:可移动文件:(无介质)
[2017年10月27日星期五19:37:20 ] LUN:可移动文件:/dev/sdb1
[/报价]
此消息是正常的、只是驱动程序在两个阶段中的工作方式。
[引用用户="营 杰 gu"]
[2017年10月27日星期五19:37:20 ] LUN:可移动文件:/dev/sdb1
(笑声)
我的 PC 报告:您插入的磁盘不可被此计算机读取。
[/报价]
PC 无法读取它、因为 PC 期望 USB 磁盘应该具有 MBR、但/dev/sdb1没有 MBR、它只是一个分区。 我认为如果您改为使用'file=/dev/sdb、PC 应该能够读取它。
[引用用户="ingjie ga">然后我用我认为是正确的步骤配置大容量存储。 已枚举 HID、但未枚举大容量存储。 以下是与大容量存储相关的配置。 [/报价]
PC 是 Windows 还是 Linux? 如果您使用的是 Windows PC、这不会让我感到意外。
但是、如果您使用 Linux PC、并且您认为自己正确使用了 configfs、则必须查看 PC 上的枚举日志以找出问题所在。