【驱动】11.USB子系统

【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM

【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym

【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM

【嵌入式八股】四、嵌入式Linux篇(本专栏)https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0

USB子系统

硬件原理

看【硬件篇-接口协议】部分USB相关

应用编程

可以通过libusb访问USB设备,不需要USB设备端的驱动程序,需要移除原来的驱动程序。然后就可以直接访问USB控制器的驱动程序,使用open/read/write/ioctl/close这些接口来打开设备、收发数据、关闭设备。 libusb封装了更好用的函数,这些函数的使用可以分为5个步骤:

  • 初始化
  • 打开设备
  • 移除原驱动/认领接口
  • 传输
  • 关闭设备

alt

内核驱动

USB总线设备驱动

alt

Gadget框架(可以把开发板作为USB从设备,通过OTG接口让其他Host读写数据)

基于Gadget驱动框架模拟一个USB设备时,endpoint的数据传输能力是底层的USB Device Controller驱动提供的,我们要做的就是:

  • 提供各类设备描述符
  • 使用底层USB Device Controller驱动程序提供的API函数,从endpoint得到数据、反馈数据

USB传输的核心是endpoint,使用endpoint可以收发数据。在endpoint之上,就可以模拟USB串口、USB触碰屏、USB摄像头。基于这个角度,Gadget框架可以分为两层:

  • 底层endpoint操作
  • 上层模拟各类USB设备

alt

总体框架

总状态转换流程

alt

alt

面试介绍

从硬件原理、应用开发和内核驱动3个方面介绍Linux USB

  • 首先是硬件原理

    新接入的USB设备的认编号是0,在未分配新编号前,PC使用0编号和它通信。然后给它分配一个编号。

    USB 2.0协议支持3种率:低速(Low Speed,1.5Mbps)、全速(Full Speed, 12Mbps)、高速(High Speed, 480Mbps)。

    USB连接涉及Hub Port和USB设备,Hub端口的D+、D-都有15K的下电阻,平时为低电平。全速设备内部的D+有1.5K的上拉电阻,低速设备内部的D-有1.5K的上拉电阻,连接到Hub后会导致Hub的D+或D-电平变化,Hub根据变化的引脚分辨接进来的是全速设备还是低速设备。高速设备一开始也是作为全速设备被识别的。Hub端口复位然后会发送和接收一系列KJ信号(高速检测握手信号)监测一个新插入的USB设备能否工作于高速模式。

    再说一下USB议层数据格式:先发同步信号告诉设备采用的通信速率,再进行异步传输。一条线搞定传输,不过是差分线变成两条了。

    • SOP:用来表示包的起始

    • SYNC:用来同步

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

【嵌入式八股】嵌入式Linux 文章被收录于专栏

查阅整理上千份嵌入式面经,将相关资料汇集于此,主要包括: 0.简历面试 1.语言篇 2.计算机基础 3.硬件篇 4.嵌入式Linux【本专栏】 (建议PC端查看)

全部评论

相关推荐

06-27 18:45
中山大学 Ruby
25届应届毕业生,来广州2个礼拜了,找不到工作,绝望了,太难过了…
应届想染班味:9爷找不到工作只能说明,太摆了或者太挑了。
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
每晚夜里独自颤抖:你cet6就cet6,cet4就cet4,你写个cet证书等是什么意思。专业技能快赶上项目行数,你做的这2个项目哪里能提现你有这么多技能呢
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 17:28
25届每天都在焦虑找工作的事情0offer情绪一直很低落硬撑着面了一个岗位岗位有应酬的成分面试的时候hr给我出各种场景题问的问题比较犀利 有点压力面的感觉感觉有点回答不上来本来就压抑的情绪瞬间爆发了呢一瞬间特别想哭觉得自己特别没用没绷住掉眼泪了事后想想觉得自己挺有病的 真的破大防了
喜欢唱跳rap小刺猬...:我觉得没关系吧,之前有一次面试leader给我压力面,我顶住了压力,结果入职的时候发现组里氛围很差,果断跑路。其实从面试就能大概看出组的情况,面试体验好的组倒是不一定好,但是面试体验不好的组。。。就很难说
点赞 评论 收藏
分享
评论
1
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务