USB主机控制器接口规范之二:OHCI(USB1.1)

原创 嵌入式Lee 2025-05-17 07:00

PS 咸鱼中有很多全新,性价比高的开发板,感兴趣的可以去瞧一瞧。

图片

.前言

上一篇介绍了UHCI,这一篇继续来介绍OHCI, OHCIUHCI都是针对USB1.x, 但是其实现思路侧重点不一样。两个标准并存导致了一些兼容问题,所以在USB2.0之后就统一了,后续只使用Intel的实现。

OHCI (Open Host Controller Interface)Compaq,Microsoft,National Semiconductor开发,它将更多负担放在了硬件上,而软件更简单规格书见:http://www.o3one.org/hwdocs/usb/hcir1_0a.pdf

拓扑结构如下

OHCI驱动 <>          OHCI标准      <> OHCI 控制器 

              内存映射寄存器

              共享内存链表

OHCI控制器提供OHCi标准对应的内存映射寄存器,OHCI驱动配置对应的寄存器,并按照共享内存链表要求配置对应的链表,将链表的基地址配置到对应的寄存器中。

OHCI控制器就去遍历对应的链表根据描述符执行对应的动作,处理完后将链表放置到完成链表,驱动去判断完成链表状态即可。

从上可以看出软件的工作比较简单,只需要准备链表即可,硬件要完成链表遍历处理,处理完放置到完成链表等一系列工作,硬件的设计会更复杂。

整体框架如下

.内存映射寄存器Memory Mapped Registers:

一共21,通过PCI总线的BAR0暴露。

Offset (Hex)



Name



00



HcRevision



04



HcControl



08



HcCommandStatus



0c



HcInterruptStatus



10



HcInterruptEnable



14



HcInterruptDisable



18



HcHCCA



1c



HcPeriodCurrentED



20



HcControlHeadED



24



HcControlCurrentED



28



HcBulkHeadED



2c



HcBulkCurrentED



30



HcDoneHead



34



HcFmInterval



38



HcFmRemaining



3c



HcFmNumber



40



HcPeriodicStart



44



HcLSThreshold



48



HcRhDescriptorA



4c



HcRhDescriptorB



50



HcRhStatus



从偏移量54h开始,根集线器上的每个USB端口被分配一个HcRhPortStatus寄存器,该寄存器表示端口的当前状态。

上述寄存器在内存中的映射基地址不是固定的,可以位于任何32位地址,只需要按照上述排布即可怎么找到基地址PCI总线可以搜索特定的供应商/设备vendor/device id,或特定的Class ID来查找任何OHCI控制器,如下:

所有OHCI控制器的Class ID =0x0Ch, subclass = 0x03h, program interface=0x10hPCI设备配置区域包含指向内存映射寄存器块的单个基址。

.共享内存链表Shared Memory Linked Lists

所有给控制器命令和数据包,都通过包含表和链表的共享内存区域提供

USB协议定义了4种不同的消息类型:中断、同步、控制和批量。

每种消息类型都有自己的传出消息链表。

当控制器处理这些消息时,它们被移动到相应的完成列表中,同时还有关于控制器在传递消息时遇到的错误信息。

3.1控制消息

控制消息用于初始化和配置HUB检测到的设备。未初始化的设备将不响应任何控制消息。要初始化设备,必须复位设备所连接的HUB端口。复位后,设备将默认为地址0,并将开始响应发送到该地址的任何控制消息。确保一次只有一个设备被初始化,一旦设备的端口被复位,应该立即发送一个SetAddress命令来分配一个1到127之间未使用的地址给设备。一旦这个命令被发送,设备将开始响应它的新地址,不再响应地址0。

HcControlHead寄存器指向端点描述符链表中的第一个控制端点描述符(ED)。每个端点描述符描述USB总线上可以由操作系统通信的一个端点。为了从端点发送或接收数据,操作系统将传输描述符添加到端点描述符中。一旦数据传输完成,控制器将把传输描述符从端点描述符移动到完成队列。

每个端点描述符都有一个“头”传输描述符字段和一个“尾”传输描述符字段,以及一个“next”端点描述符字段。端点描述符链中的最后一个端点描述符的“next”端点描述符值将为零。当“头”传输描述符与“尾”传输描述符匹配时,端点描述符为空,不再发送数据。

HcControlHead列表中的端点描述符只能用于与控制端点通信。所有设备都有一个用于配置设备的控制端点0。

3.2批量消息


HcBulkHeadED寄存器指向批量端点描述符列表中的第一个批量端点描述符,用于发送和接收批量数据包。它在功能上与HcControlHead寄存器相同。

3.3端点描述Endpoint Descriptors(ED)


注意这里的端点描述符和传输描述符不是设备枚举过程中设备返回的描述符.

这里的描述符是内存中用于给控制器使用的信息。

端点描述符是一种内存结构,其中包含用于与特定设备地址上的特定端点通信的信息。

Offset (Hex)



Name



00



Control



04



Tail TD Address



08



Head TD Address



0c



Next ED Address



3.4传输描述符Transfer Descriptors(TD)


传输描述符,描述要发送到USB端点(非同步)要读出的缓冲区,或者从USB端点读到数据要存入的缓存区

同步端点使用不同的描述符结构。

Offset (Hex)



Name



00



Control



04



First Byte Address



08



Next TD Address



0c



Last Byte Address



EDTD的结构如下

ED组成链表,ED下可以挂多个TD

四. 总结


OHCI的特点是软件实现更简单,硬件更复杂,软件只需要准备ED,TD,大部分工作由硬件根据描述符自行去处理。


评论
  •   再次拆开来,干脆放上电池看看,呵呵,转呀!  嘀嗒嘀嗒声好听,小齿轮转啊转尊,挺有活力啊!  莫非是活动关节受阻?  仔细,用放大镜观察,真是的!轴承与转杆接触位有污垢。  拆解下来,用酒精仔细清洗干净,看看纸上是刷子擦下来的污迹。  顺便把PCB、其他可能的零部件,也用酒精擦一擦  清洗清洁后的的各个零部件。  再看看电极接触点,有磨损,露出了底下的铜金属。  想想,用焊锡填补吧!  金属表面不太接受,总算有了一点焊锡,试试看吧!  再组装回去,装上电池,不转动!  再拆开来,到底是那个零
    自做自受 2025-06-21 12:19 2337浏览
  • 当数千伏工业电机快速启停时、当高速充电桩断电恢复时、当光伏逆变器遭遇雷击时,高压侧电路可能会因电感电流突变或浪涌耦合,产生幅值达母线电压数倍的电压尖峰。而在缺乏有效电气隔离措施或在寄生电容耦合作用的情况下,这些电压尖峰会迅速传导至低压侧电路,瞬间击穿MCU、传感器等敏感元器件,严重时还会威胁到操作人员的生命安全。因此,在现代电力电子系统的高低压电路之间引入隔离芯片,建立安全可靠的电气隔离屏障,已成多项安全标准与通用规范中的明确要求与刚性规定。其不仅能防止高压浪涌、短路漏电等不良现象损坏敏感元器件
    华普微HOPERF 2025-06-18 15:52 4087浏览
  • 概述在工业自动化领域,PLC(可编程逻辑控制器)是生产过程的核心,其性能直接影响系统的稳定性和效率。然而,在多主站应用场景下,传统PLC往往面临诸多挑战,如协议兼容性不足、扩展性受限以及高昂的License费用,这些都增加了系统部署的复杂性和成本。宏集Berghof PLC基于CODESYS平台,凭借其强大的多主站支持能力和灵活的License选项,为工业控制提供了高效、灵活且经济的解决方案,助力企业优化自动化系统架构。传统PLC多主站应用的挑战在许多自动化应用中,设备需要同时支持多个通信主站,
    宏集科技 2025-06-19 10:58 3804浏览
  • 在RoCE v2协议中,RoCE v2队列是数据传输的最底层控制机制,其由工作队列(WQ)和完成队列(CQ)共同组成。其中工作队列采用双向通道设计,包含用于存储即将发送数据的发送队列(SQ)和用于存储已接收到的数据的接收队列(RQ),二者共同组成了端到端的数据传输管道(Pipeline)每一个SQ与RQ绑定起来称为队列对(QP),每个队列对中包含有若干个工作队列元素(WQE)和一些其他元素如本地接收队列指针、本地发送队列指针、远程接收队列指针、远程发送队列指针等。同样的,每一个CQ中也存在着若干
    zzbwx_326664406 2025-06-18 11:49 2422浏览
  • Micro-OLED显示技术具有高刷新率、高亮度低功耗、小体积等特点,是微显示领域的优选方案。针对Micro-OLED CVBS显示驱动需求,上海冠显(TDO)设计的驱动方案,实现CVBS信号到Micro-OLED显示屏的稳定转换和显示控制,将满足行业对高质量、高性能显示解决方案的迫切需求,为XR、军工、工业及医疗等应用领域提供更优质的视觉体验。方案架构 显示屏驱动板TV103F1CSFS01 是TDO自主开发的单目硅基 OLED 显示屏驱动板,以 SH1.0连接器为 CVB
    冠显光电MicroOLED代理视涯 2025-06-18 16:32 4035浏览
  • 中国汽车市场以年均超 3000 万辆的销量规模(占全球 1/3以上),正推动安全标准从被动防护向主动预防转型。2024 年 7 月实施的 C-NCAP ( China New Car Assessment Program)修订版首次将驾驶员监控系统(DMS)、道路特征识别(RFR)纳入评分体系,其中 DMS 占主动安全分值 40%(总分 2 分),检测准确率需≥90%。这一变革不仅响应工信部 GB/T 41796-2022 等三项国家标准要求,更标志着中国
    康谋 2025-06-18 10:25 2121浏览
  • 作为自然界最敏锐的“通用语言”之一,从破土而出的植物新芽到钢铁熔炉中的炽热火焰,温度一直都在无声地影响着万物运行的节奏,它不仅是农业播种与收获、牧业养殖与繁育、工业材料加工与产品制造等领域的关键生产因素之一,更是所有地球生物赖以生存的重要气候参数。因此,如何更好地“读懂”温度已成为各行各业实现提质增效的重要突破点之一,而数字温度传感器就是人类通过发展物联网技术让温度实现快速“说话”的重要途径。数字温度传感器是一种能直接输出数字信号的传感器,具有微型化、易集成、低功耗与高精度等优势,已被广泛应用于
    华普微HOPERF 2025-06-19 09:39 4662浏览
  • 文/Leon编辑/cc孙聪颖6月9日,美团在北京美团总部恒电大厦举行股东周年大会,美团创始人、CEO王兴携一众高管出席。在回答股东问题的环节,王兴谈及与京东、淘宝闪购的竞争时表示:“第一,我们非常欢迎更多参与者入场的;第二,再次重申美团是坚决反对内卷的;第三,我们对长期是很有信心的。”然而,据自媒体《划重点》公开报道称,有参会股东透露,疑似提前安排好的问题和管理层全程读稿式的回答令部分现场股东感到不满。在会议结束后,现场股东将负责市场和投资的副总裁徐思嘉围了起来,在小会议室继续沟通了半个小时。不
    华尔街科技眼 2025-06-17 19:11 1803浏览
  • 在竞争白热化的智能汽车赛道,深蓝汽车近期因一系列“迷之操作”,被舆论的熊熊烈火炙烤得焦头烂额。事情起因是,大量深蓝汽车老车主公开吐槽称,深蓝汽车在没经过车主同意的情况下在车机大屏幕投放广告。为此,深蓝汽车及其CEO邓承浩发文道歉,并表示:内部已进行了流程优化,未来将不再通过车机通道给用户推送权益提醒。不过,道歉后深蓝汽车对用户隐私条例进行了更新,主要新增了用户数据采集,如果用户不同意更新,则只能以游客身份访问App。所以又有网友辣评,“这是要强行让大家同意看广告?”对此,深蓝汽车法务部发文回应:
    用户1742991715177 2025-06-17 18:21 1580浏览
  • 随着智慧居家中与智能家电快速发展,各类产品纷纷透过无线技术和行动软件(APP)实现更智能的服务,让原本单一功能的产品,逐步进化变身为多功能且提供人性化功能的智能家电。本篇的主角-智慧居家门铃(Doorbell),正是其中具代表的应用之一。智能门铃整合了传统门铃与对讲机功能,再加上摄影机的功能,进而成为新世代的智能产品!用户可以透过镜头,立即看到来访者并进行对话。更进阶的应用则是结合高分辨率的摄影机、无线连线与APP整合,让用户不再经由传统有线线路,即可远程实时了解门外的一切状况。实测案例本次案例
    百佳泰测试实验室 2025-06-19 13:42 4150浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦