linux内核里与usb通讯,基于Linux的USB主/从设备之间的三种通信方式

在usb -char中,真正的操作开始于usbc_open()函数,列表1给出了函数的一部分代码。笔者由于临时的兴趣,对该代码做了一点修改,取消了错误和超时句柄。在此向代码的原作者Brad Parker、Nicolas Pitre 和Ward Willats致歉。

twiddle_descriptors()函数用于设置设备的USB描述符。在描述符设置好之后,我们就可以开始进行设备查询,并从USB 主机接收一帧数据。kick_start_rx()函数段的代码主要用于调用sa1100_usb_recv(),建立回调。

在USB主机发送一个数据包时,设备的内核模块会通过回调方式调用rx_done_callback_packet_buffer()函数,将数据包的内容送入一个FIFO队列,以便能通过read()函数将该数据包返回给usb-char设备节点。

2. USB主机端通信过程

对于运行Linux操作系统的USB 主机,与usb-char相应的USB 主机模块叫做usbserial。大多数Linux版本中都包含了该模块,但它并不总能自动加载。通常应在主机与USB设备之间的连接建立之前利用 modprobe 或insmod加载该模块。

USB设备查询完成之后,主机上的一项应用就会利用某个usbserial设备节点(字符型, major 为188, minor 大于等于0)与其通信。这些节点通常叫做/dev/ttyUSBn。Usbserial模块会报告它将哪一个节点分配给了哪一台USB设备,并将这一信息按如下方式记载在内核消息记录中: ============================

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值