Chinaunix首页 | 论坛 | 博客
  • 博客访问: 547769
  • 博文数量: 105
  • 博客积分: 3274
  • 博客等级: 中校
  • 技术积分: 1161
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-21 12:14
文章分类

全部博文(105)

文章存档

2011年(1)

2010年(104)

分类: LINUX

2010-08-31 18:31:11

由于要做一个usb从机,而linux内核自带的usb转串口方案又被pass掉了,因此只好老老实实的写usb gadget驱动了。而我对windows上的东东一窍不通,也就只能在linux下面调试了,幸运的是Linux自带了usb-skeleton.c,为我们提供了一个最基础的USB驱动程序,即USB骨架程序,可被看作一个最简单的USB设备驱动实例。尽管USB设备驱动千差万别,但基本上都是这个模板。可以说,掌握了这个骨架程序,就基本掌握了Linuxusb设备驱动。后续,我会详细叙述这个程序,基于2.6.27

先说说怎么使用这个程序来测试吧,很简单,主要改2个地方就可以了,如下:

/* Define these values to match your devices */

#define USB_SKEL_VENDOR_ID      0xfff0

#define USB_SKEL_PRODUCT_ID    0xfff0

也就是PIDVID,只要把你的usb gadget驱动的PIDVID与上述定义的一致,就可以使用了。我使用的时候一般都改这一块的宏定义,把PIDVID改的与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,这个万能驱动不错吧。

阅读(6755) | 评论(6) | 转发(3) |
给主人留下些什么吧!~~

zsjalive2014-10-27 17:08:02

楼主你好:
你提到了修改PID与VID,是将usb-skeleton.c中的pid与vid值修改成哪个对象的pid与vid值?

我直接insmod usb-skeleton.ko后,没有在/dev/目录下发现skel0对象啊,可以解释一下吗?

isup2014-05-28 11:23:30

你是怎么用于测试的?我插入U盘后,  
cat /dev/skel0
cat: /dev/skel0: Broken pipe

liubofei741102014-03-06 17:44:19

在linux 下 usb 驱动 代码里 怎么 修改 pid  和 vid

liubofei741102014-03-06 17:43:54

在linux 下 usb 驱动 怎么 修改 pid  和 vid

chinaunix网友2011-01-07 18:12:18

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com