用于SAM7串行的嵌入式Linux USB驱动程序

时间:2014-08-30 09:05:02

标签: serial-port usb linux-device-driver embedded-linux

我有一台使用在Linux下运行的Atmel处理器的设备。对于此设备,我想使用AT91SAM7处理器连接远程设备。这个远程设备被配置为通过USB进行伪串行,在Windows下这可以正常工作并显示为“AT91 USB到串行转换器(COM3)”。

在Linux下,设备出现在/ dev中,如下所示:

crw-rw----    1 root     root     253,   7 Aug 30 10:52 /dev/usbdev2.2_ep00
crw-rw----    1 root     root     253,   5 Aug 30 10:52 /dev/usbdev2.2_ep01
crw-rw----    1 root     root     253,   6 Aug 30 10:52 /dev/usbdev2.2_ep82
crw-rw----    1 root     root     253,   4 Aug 30 10:52 /dev/usbdev2.2_ep83

为了与设备通信,我该怎么办?一些驱动程序绑定到内核?或者是否存在可加载的驱动程序(.ko)?

1 个答案:

答案 0 :(得分:0)

根据你所写的内容,带有AT91SAM7处理器的嵌入式主板已正确配置,因为当它连接到Windows主机时它可以工作。

如果它在linux下不起作用,可能是因为它无法识别vendorid:productid值。

在linux主机上检查lsusb的输出:

ottavio@ottavio:~$ lsusb 
Bus 004 Device 006: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
ottavio@ottavio:~$

在这种情况下,我的计算机上有一个USB< - > RS232转换器。当你插上电路板时,你应该有一条与电路板相关的线路。

现在,根据您的系统,您可能需要使用usbserialftdi_sio。所以先尝试加载usbserial

modprobe usbserial vendor=0x067b product=0x2303

如果这不起作用,请尝试加载ftdi_sio

modprobe ftdi_sio vendor=0x067b product=0x2303

请注意,如果已加载模块,则需要rmmod。最后,在我的例子中,vendrid是0x067b,产品是0x2303,你需要使用正确的值。