zero与usb-skeleton结合测试

本文详细介绍了如何在主机端配置和编译usb-skeleton驱动,并将其与Zero设备进行连接。通过修改USB_SKEL_VENDOR_ID和USB_SKEL_PRODUCT_ID与设备匹配,加载必要的模块,实现主机与Mini2440的通信。在gadget端,加载s3c2410_udc.ko和g_zero.ko驱动,设置loopback模式。通过echo命令发送数据并验证回环效果,展示了USB通信的调试技巧,包括使用usb mon和lsusb -t工具。
摘要由CSDN通过智能技术生成

主机端的配置:我们在host端(可以是一个装了linux的pc,或其他嵌入式设备也可以,但需要有usb host controller),在host端安装驱动usb-skeleton,这个驱动是主机端的驱动。我们后面再分析这个驱动。首先,需要编译usb-skeleton,在编译之前需要把修改两个宏。

/* Define these values to match your devices */
#define USB_SKEL_VENDOR_ID 0xfff0
#define USB_SKEL_PRODUCT_ID 0xfff0</span>

将这两个宏修改成对应于zero.c中的数。其中,在zero.c中有如下的定义:

#define DRIVER_VENDOR_NUM	0x0525		/* NetChip */
#define DRIVER_PRODUCT_NUM	0xa4a0		/* Linux-USB "Gadget Zero" */

 因此,这两个数需要相同(在usb设备插入,枚举时候会根据vendor id 和 product id给device找相应的host端的驱动)因此,需要将将USB_SKEL_VENDOR_ID 改成 0x0525,USB_SKEL_PRODUCT_ID改成0xa4a0。

编译模块usb-skeleton之后,生成usb-skeleton.ko。在主机端加载这个模块。另外主机还需要加载usb-core.ko、usb-ohci.ko等。会生成文件/dev/skel0.这个文件就代表了mini2440 。我们可以通过读写/dev/skel0,从而通过usb给mini2440发送数据。


gadget端的配置:gadget就是我们的mini2440。我们在gadget端需要安装的驱动有s3c2410_udc.ko和g_zero.ko。当然也可以把他们编译到内核中,直接烧写内核。我们需要加载这两个驱动,首先加载s3c2410_udc.ko。然后insmod g_zero.ko。另外,我们想让gadget起到的作用是loopback的作用,因此,这个需要在加载驱动时进行配置。方式是这样的: insmod g_zero.ko loopdefault=1 ,
其中loopdefault这个参数是用来将loopback configuration 作为设备的默认配置的。这样加载之后,从设备端的配置也结束了。


在host端执行#echo helloworld > /dev/skel0,在zero.c的ep的回调函数中添加打印语句可以看到收到的数据。然后在host端执行 #cat /dev/skel0

                    helloworld

我们又读回了helloworld。


usb-skeleton通过构造read和write的方法,直接往设备节点写数据就可以通过构造urb将数据发送出去,与g_zero那边的loopback配合来完成数据回环显示。linux就是喜欢这种有echo的功能,在UNP中一个echo server的实现讲了整整一部书。

这样,我们的这个测试例就结束了。


另外,补充一个调试手段。和网络变成一样,usb通讯的一个有效调试手段也是抓包。在windows上面通过usb hound可以抓usb包。在linux上面我们通过usb mon来抓包。貌似wireshark也有抓usb包的功能,我没有用过。通过usb mon抓包,需要对内核进行相应的配置选项。然后,

#mount -t debugfs none_debugs /sys/kernel/debug
#modprobe usbmon

再进入 /sys/kenel/debug/usb_mon 就可以看到各个usb host controller的对应项了。通过cat 1u 就可以看到第1个Host controller收发的包。

另外,lsusb -t也是很不错的工具,可以看到usb 设备的各种描述符。通过

cat /proc/bus/usb/devices   也可以查看usb设备的信息。

转自:http://www.xuebuyuan.com/1494145.html

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值