我有一个 Android 设备充当树莓派零的 USB 主机,它将充当从设备。我使用 android api 与 USB 从属设备交互绝对没有问题。
我显然需要一个驱动程序,例如小工具串行驱动程序我在启动时在树莓派上使用以下命令加载它。
sudo modprobe g_serial
系统显然应该/dev/ttyGS0
为驱动程序创建设备节点,但这并没有发生。这可能是什么原因?
如果驱动程序已成功加载,我如何使用它及其节点编写程序?是否有可能或者我需要编写自己的驱动程序?有没有其他方法可以解决这个问题?我对 Linux 相当陌生,所以终端命令的答案将会非常有帮助。提前致谢。
答案1
我无法告诉您 Raspberry Pi 出了什么问题(因为我没有),但我可以告诉您如何测试和使用串行小工具驱动程序。首先在您的主电脑上尝试以下操作。
加载 USB 小工具的虚拟(模拟)主机控制器驱动程序:
sudo modprobe dummy_hcd
这将同时充当小工具驱动程序的框架,并为您提供一个lsusb
对计算机可见的新的“正常”USB 总线(用 进行检查),以及这些总线之间的环回。
现在加载串行小工具驱动程序:
sudo modprobe g_serial
您应该在总线上以及/dev/ttyGS0
小工具驱动程序中看到一个新设备。同时,新设备会导致串行客户端的内核驱动程序被加载,因此您将还获取一个/dev/ttyACM0
设备。
您可以从这些设备中写入和读取,然后查看它们是否可以通信。例如,cat /dev/ttyACM0
在一个窗口中执行,然后echo foo > /dev/ttyGS0
在另一个窗口中执行。
我怀疑您必须将 Raspberry Pi 置于 USB 客户端模式,并加载正确的 HCD 驱动程序,以便小工具驱动程序可以连接,如果您没有这样做,小工具驱动程序将不会执行任何操作,正如您所观察到的。但我不知道适合 Raspberry Pi 的那个。