USB学习

USB学习

1. 动机

从事汽车电子行业以来,了解到了诸多之前没有接触过的领域,对于一个一直从事中间件开发的我来说,受益匪浅。
工作的中心主要是手机互联相关业务,所涉及的领域比较多,多媒体,gstreamer,alsa,USB驱动,iap协议等。
自觉除了USB驱动,其他内容都有略知一二,出问题都能从容应对,唯有USB驱动仍是软肋,一直在心中作梗。
遂借工作之余,打算探个究竟。

2. 方法

应用出生,当然是从应用入手,大概了解了内核驱动实现之后,觉得对USB的理解还是稍有欠缺。
遂想到一句古话:纸上得来终觉浅,绝知此事要躬行。

  1. USB in a NutShell
    https://www.beyondlogic.org/usbnutshell/usb1.shtml 大概了解USB的整体框架

  2. 《圈圈教你玩USB》
    不可多得的好书,不过并不适合的零基础的人。要有51单片机的基础,USB相关知识。
    参考该书实现一个USB外设,对USB有了更深的了解。做一个外设并不容易,还需要参考
    《PDIUSBD12》和《AT89C52》手册,弄懂芯片的协议。

  3. 《Linux那些事儿之我是USB》
    说实话,作者可能很懂USB,但是讲的内容并不像书的名字这么通俗易懂,可能驱动层就是这么难懂吧。可以协助阅读内核相关代码。

  4. 《usb_20》
    当然,终极目标解释理解spec了,其他都是实现,这个还是内功。

3. 感悟

说实话,互联网所谓的全栈工程师,跟嵌入式相比,感觉还是小巫见大巫了。
单讲USB,从应用 - 驱动 - USB器件 - MCU(固件) - 设备(LED)。没有点基础还真吃不消。
USB整体框图:

USB学习

坚持原创技术分享,您的支持将鼓励我继续创作!