x()所需的代码大多数情况下只是一种对sa1100_usb_recv() 的调用以建立回调而已。当USB主机发送数据包时,设备的内核通过回调调用rx_done_callback_packet_buffer()函数,把数据包的内容移入usb-char 设备点上由read()返回的FIFO队列。
主机
对于运行Linux的USB主机,usb-char相应的USB主机模块称为usbserial模块。大多数Linux版本都包括Usbserial模块,尽管通常不是自动装入。在USB与设备的连接建立之前,usbserial 由modprobe 或 insmod载入。
一旦USB设备开始枚举,主机上的应用程序便用usbserial设备点(字符型,最大188,最小0以上)之一与设备进行通信。这些节点通常命名为/dev/ttyUSBn。Usbserial模块在内核报文日志记录中报告它把哪个节点指定给USB设备使用:
usbserial.c: 通用转换器删除
usbserial.c: 通用转换器当前连到ttyUSB0上。连接建立后,USB主机上的应用程序便通过读写指定的节点与USB设备进行通信。
Linux 主机上usbserial模块的一种替代选择是一种称作libusb(libusb.sourceforge.net)的库。这种库使用低层内核系统调用进行USB数据传输,而不是通过usbserial模块,在某种程度上跨Linux内核版本建立和使用时更方便。Libusb页码:[1] [2] [3] [4] [5] [6] [7] [8] 第6页、共8页 |