2014年(26)
分类: LINUX
2014-10-26 15:04:52
原文地址:Linux 下usb万能调试驱动 作者:zhanghonghu84
由于要做一个usb从机,而linux内核自带的usb转串口方案又被pass掉了,因此只好老老实实的写usb gadget驱动了。而我对windows上的东东一窍不通,也就只能在linux下面调试了,幸运的是Linux自带了usb-skeleton.c,为我们提供了一个最基础的USB驱动程序,即USB骨架程序,可被看作一个最简单的USB设备驱动实例。尽管USB设备驱动千差万别,但基本上都是这个模板。可以说,掌握了这个骨架程序,就基本掌握了Linux下usb设备驱动。后续,我会详细叙述这个程序,基于
先说说怎么使用这个程序来测试吧,很简单,主要改2个地方就可以了,如下:
/* Define these values to match your devices */
#define USB_SKEL_VENDOR_ID 0xfff0
#define USB_SKEL_PRODUCT_ID 0xfff0
也就是PID和VID,只要把你的usb gadget驱动的PID、VID与上述定义的一致,就可以使用了。我使用的时候一般都改这一块的宏定义,把PID、VID改的与gadget设备一致。
然后重新编译usb-skeleton.c,生成usb-skeleton.ko,加载模块insmod usb-skeleton.ko,如果从设备插入了电脑,就会识别到此从设备。
加载了模块usb-skeleton.ko后会在/dev下生成设备文件skel0。接下来就可以测试读写了。
测试写: echo “test string” > /dev/skel0
从设备就会收到“test string”字符串。
测试读: cat /dev/skel0
从设备通过USB发送“string test”
电脑主机端就会出现 “string test”
O(∩_∩)O,这个万能驱动不错吧。