Day4 USB的历史因素


回顾一下,昨天的故事

你到政府部分办事,首先需要找到办事窗口,然后告诉TA你是谁,能办什么事,来办什么事,然后把你的手机号,邮箱告诉TA

接着,办事人员给你一个登记号,然后说,记下了,稍后我会派专员联系你

然后,你就回家了,等着电话,10分钟后,电话来了,对话如下

办事专员:我是XX号客服,你是不是YY,登记号是ZZ

你 :是的
办事专员:巴拉巴拉
你 :巴拉巴拉

最后,通话结束

上面的事情,细化一下,完全可以套用到USB通讯过程

  1. 你到政府部分办事,首先需要找到办事窗口(插入USB设备)
  2. 然后窗口接待人员问了你一些基本信息,姓名,性别(USB主机主动获取设备描述符)
  3. 帮你取了个号(设置USB设备地址),突然把你名字忘了,哎,那谁,XYZ号,你叫啥名儿?办什么事?你只好又重复一遍(USB主机主动获取设备描述符,配置描述符,接口描述符,端点描述符)
  4. 办事人员,最后问你家在哪,电话号码多少(USB主机记录接口描述符,端点描述符)
  5. 接着,TA说,好,记下了(注册USB设备到系统),稍后我会派专员联系你(匹配USB驱动),你可以回家了,保持电话畅通(等待端口事件)
  6. 然后,你就回家了,等着电话,10分钟后,电话来了(发生数据交互)
    对话如下
  7. 办事专员:我是XX号客服,你是不是YY,登记号是ZZ(确定USB设备地址,端口地址)
  8. 你 :是的
    办事专员:巴拉巴拉
    你 :巴拉巴拉
    (PC与USB设备发生数据交换)
  9. 最后,通话结束(结束通信)

PS:上面的有一些术语,看不懂没关系,暂时忽略。重点关注整个交互流程

技术的产生和发展,都是跟当时社会的整体环境相适应的;这一点在IT技术上尤其明显

先了解USB 技术的历史背景,然后再想想USB解决了什么问题,就能理解USB架构为什么这样设计了

我一直认为:技术架构,从任何部分来看,都是很简单的
真正的困难在于,技术要求精确,所以会有大量细节性知识,精确描述性术语,把整体架构给掩盖住了

类似盲人摸象,这有俩洞,是啥玩意???摸了半天,发现是个鼻子,,,
再摸大象腿,最后耳朵,最后摸了一遍
然后在脑海里拼了半天,我擦,这玩意就是个大象

学技术也是类似的情况,先远观,掌握大致轮廓,然后慢慢细究,根本没有解决不了的技术问题

OK,回到USB的历史

几年前,电脑上有RJ45网口,DB9串口,视频输出口,打印机并口,还有光盘啥的,反正电脑上有各种形状的接口

后来消费者一看,妈蛋,这玩意不行啊,包里一堆线,不好插,体积也大,要搞死了
PC大厂一看,擦,这是个机会啊,我先推出小接口的电脑,就能搞死对手

然后,问题就来了

  1. 微软说了,你们随便搞,反正我要原来的电脑软件还要能用,驱动还能用,不然搞死你们
  2. 消费者说了,电脑上别有各种形状的接口,要简单,要速度快,不然买别家电脑去
  3. 工厂说了,线材制作要简单,线越少越好,不要良品率低,自己看着办

一帮IT大神,微微一笑,小case

硬件不够,软件来凑

然后就把这个问题轻轻松松搞定了

怎么解决的?明天继续

每日推荐

任何计算机问题,都能通过增加一个层来解决

CSAPP上看的,忘了谁说的了,反正是个牛逼的人物

CSAPP - Computer Systems: A Programmer Perspective

这是本神书,1300多页,CSAPP的介绍请百度或者google,据说看完的都成为大神了

国内有俩研究生,看完这本书的某几个章节,然后写了一本书《程序员的自我修养-编译,链接,库》

哦,我现在还没看完,,,

英文原版(299元)非常通俗易懂,千万不要买中译本,翻译的太垃圾,,,

2015-12-9

-----分割线-----
注意事项

  1. 本订阅号(微信搜 McuProgramming )主要发布一些嵌入式相关的知识和技巧,涉及到软件,硬件,射频,协议栈等;如果您有感兴趣的领域,请通过回复订阅号告诉我

  2. 本订阅号主要是简单文字为主,内含少量代码段,但绝不会发布大量的代码。
    因为根据自己的体会,在手机微信端看代码的体验非常糟糕,一方面屏幕比较小,显示效果不好;另一方面,玩手机时,精力不会集中,更不会有大量时间。
    cedar-renjun.github.io 个人博客会发一些技术细节的东西,感兴趣的,可以深入研究这里的博文

  3. 微信的编辑功能比较弱,不能贴链接,代码啥的,,,所有文章均发表在个人博客,可以通过点击原文来查看,原文有代码语法高亮,显示图片,带链接等效果