urb介绍

urb介绍urb 介绍 usbrequedtbl 简称 urbusb 总线就像一条高速公路 货物 人流之类的可以看成是系统与设备交互的数据 而 urb 就可以看成是汽车 USB 的 endpoint 有四种不同类型 也就是说能在这条高速公路上流动的数据有四种 但是对汽车没有要求 所以可以用 urb 运载这四种数据不过首先要告诉运什么 目的地什么

 1. 运货首先有车 第一步创建一个urb struct urb *usb_alloc_urb(int isoc_packets, int mem_flags); 2.要承载数据,还要告诉司机目的信息跟要运的货物,对于不同的数据,系统提供不同的函数 对于中断urb,使用 void usb_fill_int_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe,void *transfer_buffer, int buffer_length, usb_complete_t complete, void *context, int interval); transfer_buffer是一个要送/收的数据的缓冲,buffer_length是它的长度,complete是urb完成回调函数的入口, context由用户定义,可能会在回调函数中使用的数据,interval就是urb被调度的间隔。 对于批量urb和控制urb void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, void *transfer_buffer, int buffer_length, usb_complete_t complete,void *context); void usb_fill_bulk_urb(struct urb *urb, struct usb_device *dev, unsigned int pipe, unsigned char* setup_packet,void *transfer_buffer, int buffer_length, usb_complete_t complete,void *context); 参数分析:urb要被初始化的urb指针 dev目标设备,被发送到哪个USB设备 pipe这个urb要被发送到USB设备的特定端点 transfer_buffer是一个要送/收的数据的缓冲 buffer_length是它的长度 complete是urb完成回调函数的入口 context由用户定义,可能会在回调函数中使用的数剧 interval就是urb被调度的间隔 3. 有了汽车,有了司机,下一步就是开始运货,使用下面函数来提交urb int usb_submit_urb(struct urb *urb, int mem_flags); mem_flags有几种:GFP_ATOMIC、GFP_NOIO、GFP_KERNEL,通常在中断上下文环境我们会用GFP_ATOMIC。 4. 会掉函数 这里skel_write_bulk_callback就是一个完成回调函数,而他做的主要事情就是检查数据传输状态和释放urb: 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/202002.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午8:06
下一篇 2026年3月20日 上午8:06


相关推荐

  • 谷歌浏览器搜索使用指南[通俗易懂]

    谷歌浏览器搜索使用指南[通俗易懂]谷歌浏览器使用指南下载谷歌浏览器使用浏览器时遇到的问题对谷歌浏览器进行配置下载谷歌浏览器可以在谷歌浏览器官网进行下载,网址:https://www.google.cn/intl/zh-CN/chrome/在腾讯电脑管家,进行下载使用浏览器时遇到的问题搜索引擎我们这里先选用百度搜索引擎,如果想使用其他搜索引擎,更换其他的网址即可。1.当你使用谷歌浏览器时你会发现,根本上不了网2.这个时候你不要惊慌,自己在网址框中手动输入:https://www.baidu.com/即可进行上网对谷

    2025年10月20日
    5
  • 解决 Mysql 连接 10038 错误问题

    今天在写接口,连接数据库的时候,出现了一点问题,后来几经折腾总算解决了,这里分享给大家。

    2022年4月6日
    39
  • 生成唯一序列号 Unique ID

    生成唯一序列号 Unique ID程序取号的锁竞争和网络延迟是不可避免的 所以最理想的 UniqueID 策略还是本地生成 把发号器内嵌到每个程序中 同时保证生成标准的同步

    2026年3月26日
    2
  • linux下tomcat8安装详解(附图解步骤)

    linux下tomcat8安装详解(附图解步骤)Linux下Tomcat8的安装配置安装tomcat前首先要安装对应的jdk并配置Java环境。一、环境准备jdk版本:1.8工具:xShell5xftp5说明:本文是通过Xshell5工具远程连接Linux操作,原理一样.二、安装步骤1、下载安装包官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downlo…

    2022年6月2日
    38
  • 哈夫曼编码详解——图解真能看了秒懂

    哈夫曼编码详解——图解真能看了秒懂直接上题目 已知字符集 a b c d e f 若各字符出现的次数分别为 6 3 8 2 10 4 则对应字符集中各字符的哈夫曼编码可能是 2 分 A 00 1011 01 1010 11 100B 00 100 110 000 0010 01C 10 1011 11 001D 0011 10 11 0010 01 000

    2026年3月20日
    2
  • OpenClaw云部署实践

    OpenClaw云部署实践

    2026年3月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号