linux下usb调试工具,LINUX USB调试_孔昊旻的博客-程序员宅基地

技术标签: linux下usb调试工具  

LinuxUSB驱动程序调试

:这是LinuxUSB驱动程序调试--003:Ubuntu下的准备工作的详细页面,介绍了和linux,有关的知识、技巧、经验,和一些linux源码等。

Ubuntu下的准备工作:

(1)如何查看内核中的printk输出: dmesg

再配合管道命令,   dmesg |head   ,    dmesg |tail

通过这个命令,我们可以看到内中的printk输出的内容,这是很有用的一个

工具。

(2)的USB抓包工具:usb_mon

其实,Ubuntu下已经内置了USB抓包工具---USB_MON

【其实 make menuconfig 时候会让我们选择的】

使用方法如下:

# mount -t debugfs none /sys/kernel/debug

# modprobe usbmon

查看当前的USB device:

# cat  /sys/kernel/debug/usb/devices

下面的输出:

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 12 Spd=480 MxCh= 0

D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1

P:  Vendor=601a ProdID=4740 Rev= 1.00

S:  Manufacturer=Ingenic

S:  Product=JZ4740 USB Boot Device

C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  2mA

I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=00 Prot=50 Driver=skeleton

E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

如何看懂上面的输出?  Documentation/usb/usbmon.txt

Bus=01 means it's bus 1.

通过上面的 Vendor=601a ProdID 可以找到我们设备的Bus号。

上面Bus=01。

使用下面的名利,就开始监听 Bus01上的全部USB数据包。

# cat  /sys/kernel/debug/usb/usbmon/1u

要想开始监听 全部 Bus 上的全部USB数据包:

# cat  /sys/kernel/debug/usb/usbmon/0u

一旦有数据包,就会打印出来:

# cat /sys/kernel/debug/usb/usbmon/1u

f07dbb80 3233986312 S Co:1:012:0 s 40 01 80c0 0000 0000 0

f07dbb80 3234327703 C Co:1:012:0 0 0

f07dbb80 3234327880 S Co:1:012:0 s 40 02 0000 0200 0000 0

f07dbb80 3234329561 C Co:1:012:0 0 0

f07dbb80 3234329625 S Bi:1:012:1 -115 32 <

f07dbb80 3234331550 C Bi:1:012:1 -75 32 = 00000000 00000000  。。。

读懂上面的数据,还是要看usbmon.txt

URB tag  :标志

TimeStamp:毫秒数

Event Type:  S - submission,

C - callback,

E - submission error.

URBType:BusNo:DeviceAddr:EndPointNum

Ci Co   Control input and output

Zi Zo   Isochronous input and output

Ii Io   Interrupt input and output

Bi Bo   Bulk input and output

URB Status: 0为没有错误。-XXX是错误码。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36431195/article/details/116732453

智能推荐

基于AXI VDMA的图像采集系统_杏儿黄的博客-程序员宅基地

本课程将对Xilinx提供的一款IP核——AXI VDMA(Video Direct Memory Access) 进行详细讲解,为后续的学习和开发做好准备。内容安排如下:首先分析为什么要使用VDMA、VDMA的作用;然后详细介绍VDMA的特点、寄存器作空间; 最后阐述如何使用VDMA,包括IP核的配置方法、代码编写流程等。本章主要是理论学习,学习完本章,会对VDMA有全面的认识,有利于学

C++友元函数的最简单案例_求中点坐标的c++程序_土豪gold的博客-程序员宅基地

问题:C++友元函数的最简单案例本程序通过VC++ 6.0编译与测试,程序的目的是求两个点之间的中点坐标,具体代码如下://没有使用友元类,报错,错误分析见代码注释#include &amp;lt;iostream&amp;gt;using namespace std;class Point{public: Point(float a,float b):x(a),y(b){} void p...

Java按字节读写二进制文件_李大白lzy的博客-程序员宅基地

java 按字节读写文件(Base64编码解码)最近在做项目时遇到这样一个需求:依次读取本地文件夹里所有文件的内容,转为JSON,发送到ActiveMQ的消息队列, 然后从MQ的消息队列上获取文件的信息,依次写到本地。常见的文件类型,比如.txt ,.png等文件的读写并不难。但是,我刚才所提到的需求,如果用常规的方法去读写,比如按字节读取文件内容,转为字符串,再转为JSON发送到MQ的队列,然后从

新edge保持百度账号登录_ 冥王星的博客-程序员宅基地

不少WIN10的小伙伴都已经升级了最新的edge浏览器,也都十分欢喜的试用了它的新的功能和界面,但也遇到过各种各样的小小问题不知如何解决。我遇到的就是edge无法储存百度账号的登录状态,导致每次重新打开edge浏览器时都需要重新重新登录百度账号。太讨厌了!造成这种情况的原因是,新版edge的隐私和服务功能太过强大,关闭浏览器会清除上次的网站跟踪,导致账号登录状态无法保存。经过不断摸索,通过以下步骤可以解决百度账号登录状态无法保存的问题。1. 打开浏览器设置①点击浏览器右上角”···“按钮;②点击

ENVI入门系列教程---一、数据预处理---2.2 编辑图像头文件_envi预处理_胡侃有料的博客-程序员宅基地

every blog every motto: you cannot change what you refuse to confront.0. 前言ENVI中修改头文件说明: 本文基于ENVI 5.31. 正文1.1 设置忽略值代开文件注: 这里数据已经好了,下方只是演示使用,主要针对图片周围是黑色的,改变成白色。Raster Management -&gt; Edit ...

Rxjs 修改Observable 里的值_weixin_30660027的博客-程序员宅基地

有这么一个对象c$: Observable&lt;any&gt; 修改里边的值:声明一个subject subject: Subject&lt;any&gt;;在ngOnInit()中进行初始化 this.subject = new BehaviorSubject&lt;object&gt;(CLOSE_OPTIONS);然后将subject赋值给Observable对象 this.c...

随便推点

ROS入门_1.19 总结篇: ROS基础概念与基本操作_1、了解并掌握ros基础内容与操作_无人驾驶小司机的博客-程序员宅基地

一:ros的系统架构    ros系统架构主要分为三个部分:文件系统级计算图级开源社区级1. 文件系统级功能包(package):是ROS中软件组织的基本形式,一个功能包具有最小的结构和最少的内容,用于创建ROS程序;--指的是一种特定的文件结构和文件夹组合功能包清单:manifests.xml  通过这个文件实现对功能包的管理;功能包集(stack):将几

electron-vue打包,使用electron-builder打包,简单方便_雪寂霜凝的博客-程序员宅基地

项目用的是[email protected][email protected] ,[email protected],ui框架那些就不说了首先下载electron-builder,这里建议使用cnpm挂淘宝镜像下载npm install -g cnpm --registry=https://registry.npm.taobao.org,先下载之后统一将整个node_module文件夹删除,用np...

mysql和ocr_重新配置ocr voting_半泽和莉娜的博客-程序员宅基地

由于存储空间不足,下线的数据库需要把存储空间腾出来,关闭集群资源,主机工程师收回lun需要(包括ocr 和 voting data 磁盘组),新的应用需要上线需要新的数据库,新的hitach存储到位需要重新安装数据库,上次删除gi 和database软件都在,这次只需要重新配置即可。参考How to Deconfigure/Reconfigure(Rebuild OCR) or Deinstall...

Spark创建SparkSession,dataframe常用操作_try to stay simple的博客-程序员宅基地

先启动pyspark第一篇博客有from pyspark import SparkContext,SparkConffrom pyspark.sql import SparkSessionspark = SparkSession.builder.config(conf=SparkConf()).getOrCreate()spark.read.text(“people.txt”)#读取文件创...

ICMP习题(记录一下)_icmp报文封装在链路层帧中发送_furfur-jiang的博客-程序员宅基地

1【单选题】对网际控制协议(ICMP)描述错误的是( )A、ICMP封装在IP数据报的数据部分B、ICMP消息的传输是可靠的C、ICMP是IP协议的必需的一个部分D、ICMP可用来进行拥塞控制正确答案: B 我的答案:B得分: 16.6分2【单选题】对于ICMP协议的功能,说法错误的是( )A、差错纠正B、可探测某些网络节点的可达性...

安卓环境配置(JAVA环境配置)_欸嘿嘿嘿的博客-程序员宅基地

近日,开了一门安卓的课程。老师给了一个压缩包,一打开,发现用不了。我的是win10的64位系统安装的JAVA也是64位的。他给的是32位的,无法运行。于是,一大波问题来了。那就从安装JAVA开始吧。首先,看一下你电脑是啥系统的,多少位的。是32位的就只能装32位的,是64位的,那么都可以装。怎么查看电脑是多少位的呢?选中我的电脑,右键属性。就在系统类型那里。java32位的下载地址ja...

推荐文章

热门文章

相关标签