Day 5 USB 软件?硬件?

上篇提到了USB协议出现之前的社会背景,人们希望PC外围设备的特点是

  1. 外设的接口都一样
  2. 安装新设备后,不要再重启电脑才能使用
  3. 速率更快
  4. 通信线材足够简单
  5. 要兼容旧驱动,软件

简单来说,就是在一个新的接口内包容所有的旧设备接口

软硬件不分家,随着技术的发展,工程师会把一些软件功能,用硬件实现,硬件加速器就是非常典型的例子;同时呢,对于需要更高灵活度的任务,硬件无法完美处理的,工程师会在软件层面来实现这些东西

原来的PC接口是:硬件复杂,软件简单
现在人们希望是:硬件简单,软件复杂
用户只想要简单的使用就好,用户不想关心技术,你们工程师搞定就好
从而导致设计重心偏向软件方向

更深层次的讲,导致这种变化的因素是:消费市场供应方的增加,供大于求,导致消费者话语权的增加,迫使厂商为了迎合消费者不得不推出新的技术方案,从而反向的推动技术发展

Repeat 核心思想:硬件简单,软件复杂

解决的方案就是增加两个层

  1. 往下增加一个层,最底层的硬件接口层(USB接口)
  2. 往上提高一个层,软件适配层(Warper)

标准的底层硬件接口层用于传输通信数据流,然后发送到上层Warper接口,Warper接口负责理解数据的含义,并分发到对应的上层驱动,从而保持原有驱动不变

这么说,可能不好理解,举个栗子

到政府办事的时候,经常要跑很多科室,盖很多章,这些科室有专门的职责;后来有一天,政府推出了一个网站,说,你们不用来回跑了,直接在网上提交材料就好,全程网上处理;对于我们来说,只需要登陆一个电脑网站就能办所有事

N个科室--进化-->网上虚拟科室

但办事流程还和原来的一样,我们依然很熟悉,不需要任何转换学习成本

科室从硬件实体,变成了虚拟的一个图标

USB的角色也是类似,将传统的硬件串口,硬件打印机接口等等,通通变成软件接口

或者理解为:肉体消失了,但灵魂从未消散

硬件下降一个层次,软件提高一个层次

当然,在增加层次的过程中,有几个关键技术细节要处理

  1. 如何实现热插拔?
  2. 为什么采用一个主机的总线架构?
  3. 如何提高传输速率?
  4. 如何兼容旧驱动架构?

明天聊一下:热插拔机理

PS:里面涉及到状态机和数据管理权下放的问题

每日推荐

  1. 状态机(FSM/HSM)
    如果一个嵌入式软件工程师,连状态机都没听过,说明他的Level连入门都没达到,请反思;
    更多资料,请自行搜索”有限状态机”,”层次状态机”

2015-12-11

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

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

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

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