WinXP下USB驱动开发(三)

简介: 2.6.       端点、管道和接口 在USB开发当中这三个概念容易混淆,对于真实环境中的USB操作,端点、管道和接口更是不可忽略的,该三者关系如图2-6-1;   端点、在这里特指USB物理端点,在NXP LPC2478 USB中最多有32个物理端点,从0到31每一种端点都有其固定的传输方式(I/OUT),其中IN是指HUB向HOST发送数据,OUT是指HOST向HUB发送数据。

2.6.       端点、管道和接口

USB开发当中这三个概念容易混淆,对于真实环境中的USB操作,端点、管道和接口更是不可忽略的,该三者关系如图2-6-1

 

端点、在这里特指USB物理端点,在NXP LPC2478 USB中最多有32个物理端点,从031每一种端点都有其固定的传输方式(I/OUT),其中IN是指HUBHOST发送数据,OUT是指HOSTHUB发送数据。

管道、是一种端点的逻辑概念,说白了就是逻辑端点,是人性的为USB物理端点进行分组,两个为一组,其中一端点为IN类型,另一种为OUT类型。故NXP LPC2478中可以分为16组逻辑端点,从015

接口、是设备的一种描述符之一,同时也是端点的集合,用于开启且保存端点。

2.7.       信息流动

USB定义了四种数据传输方式(控制、批量、中断、等时)。它们的不同之处有:单个事务能携带的数据量(下一段将解释术语事务”transaction)、能否保证特定的周期或延迟,能否自动校正错误。每种传输方式对应特定类型的端点。实际上,给定类型的端点(控制、批量、中断、等时)总是使用对应类型的传输。

端点除了传输类型外还有其它几个属性。其中一个属性是单一事务中端点能够提供或消耗的最大数据量。控制和批量端点必须指定某个离散值,而中断和等时端点能指定少于或等于最大值的任何值。端点的另一个属性是传输方向,输入(数据从设备到主控制器)或输出(数据从主控制器到设备)。最后,每个端点都有一个端点号,其中包含输入输出方向,作为端点的地址使用。

当主控制器要求设备执行某些多少有些规则的功能时,USB使用一个轮检(polling)协议。当一个设备需要向主控制器发送数据时,主控制器必须注意到并且向要发送数据的设备发出一个请求使其发送数据。即USB设备不用传统方式中断主计算机,而是提供中断端点,主机周期轮检中断端点。

当客户程序通过USB管道发送或接收数据时,它首先调用Win32 API,调用最终将使function的驱动程序收到一个IRP。而驱动程序的工作就是把客户的请求引导到有正确端点的管道上。它把请求提交到总线驱动程序,总线驱动程序再把请求分解成多个事务(transaction),然后这些事务被送往总线。总线上的信息流以每毫秒一帧数据的形式流动。总线驱动程序必须安排好多个事务以使它们能被装入同一帧中,图2-6-1 显示了这个过程。

USB中,事务由一个或多个阶段(phase)组成。阶段有令牌(token)、数据(data)、握手(ack)三种类型。根据不同的类型,事务有一个令牌阶段、一个可选的数据阶段、和一个可选的握手阶段组成,如图2-6-2 所示。在令牌阶段,主控制器向所有已配置的设备广播该令牌包。令牌包中含有设备地址,通常还有端点号,仅有被寻址的设备才会处理事务;当事务寻址设备时,任何设备都不读写总线。在数据阶段,数据被放到总线上。对于输出事务,主机把数据放到总线上,而被寻址的设备消耗这些数据。对于输入事务,情况相反,设备把数据放到总线上由主机消耗。在握手阶段,由设备或主机把握手包放到总线上,包中含有状态信息。当设备发出握手包时,ACK包指出成功地接收了信息,NAK包指出忙并且不试图接收信息,STALL包指出事务被正确接收但在逻辑上无效。当主机发送握手包时,它仅能发送ACK包。

没有发出握手包的事务就代表在这个事务中出现了一个传输错误。正在等待握手包的一方应认为缺少握手包可能是发生了错误并重试刚才的事务。

目录
相关文章
|
2天前
|
弹性计算 运维 搜索推荐
三翼鸟携手阿里云ECS g9i:智慧家庭场景的效能革命与未来生活新范式
三翼鸟是海尔智家旗下全球首个智慧家庭场景品牌,致力于提供覆盖衣、食、住、娱的一站式全场景解决方案。截至2025年,服务近1亿家庭,连接设备超5000万台。面对高并发、低延迟与稳定性挑战,全面升级为阿里云ECS g9i实例,实现连接能力提升40%、故障率下降90%、响应速度提升至120ms以内,成本降低20%,推动智慧家庭体验全面跃迁。
|
3天前
|
数据采集 人工智能 自然语言处理
3分钟采集134篇AI文章!深度解析如何通过云无影AgentBay实现25倍并发 + LlamaIndex智能推荐
结合阿里云无影 AgentBay 云端并发采集与 LlamaIndex 智能分析,3分钟高效抓取134篇 AI Agent 文章,实现 AI 推荐、智能问答与知识沉淀,打造从数据获取到价值提炼的完整闭环。
351 91
|
10天前
|
人工智能 自然语言处理 前端开发
Qoder全栈开发实战指南:开启AI驱动的下一代编程范式
Qoder是阿里巴巴于2025年发布的AI编程平台,首创“智能代理式编程”,支持自然语言驱动的全栈开发。通过仓库级理解、多智能体协同与云端沙箱执行,实现从需求到上线的端到端自动化,大幅提升研发效率,重塑程序员角色,引领AI原生开发新范式。
850 156
|
3天前
|
数据采集 缓存 数据可视化
Android 无侵入式数据采集:从手动埋点到字节码插桩的演进之路
本文深入探讨Android无侵入式埋点技术,通过AOP与字节码插桩(如ASM)实现数据采集自动化,彻底解耦业务代码与埋点逻辑。涵盖页面浏览、点击事件自动追踪及注解驱动的半自动化方案,提升数据质量与研发效率,助力团队迈向高效、稳定的智能化埋点体系。(238字)
257 156
|
4天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
11天前
|
机器人 API 调度
基于 DMS Dify+Notebook+Airflow 实现 Agent 的一站式开发
本文提出“DMS Dify + Notebook + Airflow”三位一体架构,解决 Dify 在代码执行与定时调度上的局限。通过 Notebook 扩展 Python 环境,Airflow实现任务调度,构建可扩展、可运维的企业级智能 Agent 系统,提升大模型应用的工程化能力。
|
人工智能 前端开发 API
前端接入通义千问(Qwen)API:5 分钟实现你的 AI 问答助手
本文介绍如何在5分钟内通过前端接入通义千问(Qwen)API,快速打造一个AI问答助手。涵盖API配置、界面设计、流式响应、历史管理、错误重试等核心功能,并提供安全与性能优化建议,助你轻松集成智能对话能力到前端应用中。
816 154