linux usb驱动 主机测 设备测,linux usb_gadget:设备控制器驱动测试(包含更新主机内核的方法)...

本文介绍了如何在Linux环境下测试USB驱动,包括主机端的USBtest内核模块及其测试流程,以及在设备端使用g_zero gadget进行驱动验证。针对全志A20板子的测试过程中,遇到的问题和解决方案进行了详细阐述,同时提供了在Ubuntu系统中更新内核的方法。
摘要由CSDN通过智能技术生成

一、简介

目前正在做的项目的那部分是将SOC作为一个USB从设备,插到电脑上能被识别为U盘。当在SOC上安装好设备控制器的驱动之后,你需要检测你做的驱动是否符合规范。

测试的原理是这样的,在主机端有usbtest内核模块,他是一个专用于测试的usb主机上的设备驱动,该模块通过ioctl接口提供了各种测试类型,比如Simple non-queued bulk I/O tests,Queued bulk I/O tests等等,在主机端的应用层有一个程序及脚本(testusb.c and test.sh),用于触发各种测试。对应的在设备端,有各种gadget驱动配合测试,比如g_zero便是其中之一。这一套流程可以用来测试主机端及设备端的控制器驱动。http://www.linux-usb.org/usbtest/index.html(这里提供测试方法的介绍)。

这里我结合在全志A20板子上所作的测试来作一个介绍。

二、测试流程

最好找一台专用于测试的电脑,因为后面还要更新操作系统的内核。

1、在linux3.3及linux3.3之前的kernel版本里,编译内核的时候以模块的方式选中"USB testing driver"便会去编译/usb/src/linux-source-3.xx.0/drivers/usb/misc/目录下的Usbtest.c文件,在/lib/modules/3.xx.0.24-generic/kernel/drivers/usb/misc/下生成usbtest.ko文件,

在主机端,安装内核模块:modprobe usbtest

在主机端,安装usbfs:mount -t usbfs none /proc/bus/usb,这样在/proc/bus/usb/下就会列出usb的设备信息(此时主机端驱动程序通过usbfs与用户空间的应用程序交互),应用程序testusb通过寻找usbfs挂载点来找到对应的usb device,即在/proc/bus/usb/目录下寻找usb设备信息。

2、在linux3.3之后的kernel版本中,已经没有了usbfs,但是设备节点长在/dev/bus/usb目录,应用程序通过寻找usb设备子目录来找到对应的usb设备,调试的信息debugfs在/sys/kernel/debug/usb/devices中,此时,

在主机端只要安装内核模块即可:modprobe usbtest

3、在主机端编译出应用程序:进入/usr/src/tools/usb/目录,执行make生成testusb应用程序。

4、在设备端,将zero gadget编译进内核

发现虽然将zero gadget编译进内核了,但是A20板子插到电脑上却没有任何反应,原来需要在composite_bind函数的最后添加usb_gadget_connect(cdev->gadget),哈哈,在主机上lsus

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值