首页资源分类电源技术 > 基于PALMOS5的USB主机端协议栈的实现.pdf

基于PALMOS5的USB主机端协议栈的实现.pdf

已有 460221个资源

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人消费电子

文档信息举报收藏

标    签: 基于PALMOS5的USB主机端协议栈的实现

分    享:

文档简介

基于PALMOS5的USB主机端协议栈的实现.pdf

文档预览

基于 !"#$ %&’ 的 (&) 主机端协议栈的实现 王海东 & 夏雨人 ! 吴健渊 7 (& 上海交通大学软件学院,上海 !""!%") (! 上海交通大学计算机科学和工程系,上海 !"""7") (7 英特尔中国软件实验室,上海 !""778) 90:;<=:3>;34?@2ABC3D4E$>FE$GA 摘 要 针对目前 *,-. /(# 操作系统还不能支持 ’()01/(5 功能的问题,提出一种基于 *,-. /(# 的 ’() 主机端 协议栈的实现方案。该文首先讨论在 *+, 上开发 ’()01/(5 功能的必要性,并提出解决方案的总体架构。接着针对该总 体构架的每一个部分具体分析其实现 ,并 分 析 方 案 的 可 扩 展 能 力 ,最 后 通 过 实 现 对 ’() 存 储 设 备 的 支 持 来 验 证 方 案 的 可行性。 关键词 ’() 主机端 协议栈 *,-. /(# 文章编号 &""!0H77&0(!""#)"%0"&&I0"7 文献标识码 , 中图分类号 5*7&8 *+,-.+./01023/ 34 (&) 5360 &0178 3/ !"#$ %&’ 91/: 512;3/:< =21 >?@./A 9? B21/CD3?E (& (2J4@;K> (GL22=,(L;ABL;< M<;242AB ’AK3<4O,(L;ABL;< !""!%") (! +>P4$ 2J 62:PE4>K (G<>AG> ;AF 9AB>KK3<4O,(L;ABL;< !"""7") (7 QA4>= 6L -;R2K;42KO,(L;ABL;< !""778) "F60@170: 62A3K PK2R=>: 2J A24 3EPP2K4G4 <3 PE4 J2K@;KF, @LF 42 PK2N ; 32=E4<2A 2J 3EPP2K4 3;K J3 4L> A>G>3S 3<4O 2J >A;R= G2::EA4@>>A ’() F>N3 ;AF *+,$5L>A,4L> @L2=> ;KGL<4>G4EK> 2J 4L> PK2D>G4 <3 PK>S 3>A4>F ;AF >;GL P;K4 2J 4L> ;KGL<4>G4EK> <3 F<3GE33>F 4;<=3$,AF 4L> PK2D>G4T3 >UP;AF;R<=<4O <3 ;=32 ;A;=OV>F J2==2@ P;P>K$,4 =;34,; 3;:P=> ’() 1234 (4;GW @L F>N <3 <:P=>:>A4>F 42 3EPP2K4 4L> PK2D>G4$ G.HI3@;6:’() 1/(5,34;GW,*,-. /(# & 引言 随 着 ’() 的 不 断 自 我 完 善 ,’() 越 来 越 得 到 从 普 通 计 算 机 用 户 、计 算 机 工 程 师 ,到 硬 件 芯 片 生 产 厂 商 的 认 可 。厂 商 对 于 ’() 的硬件和软件支持也越来越完备,现在开发一 个 ’() 外 设 产 品 ,所 需 要 投 入 的 成 本 和 时 间 大 大 降 低 。 但 是 ,随 着 ’() 应用领域的逐渐扩大,人们对于 ’() 的期望也越来越高 ,希 望 ’() 能应用在各种计算机领域中,尤其是在移动数据领域中, 希望能通过 *+, 等移动设备直接和 ’() 外设通信。 *,-. /(# 是运行在 *+, 上的一款流行操作 系 统 , 以 其 简 单 易 用 的 特 性 闻 名 于 世 。但 到 目 前 为 止 该 操 作 系 统 还 不 能 支 持 与 ’() 设 备 的 互 联 互 通 。 基 于 ’() 发 展 的 总 体 趋 势 ,在 *,-. /(# 上实现 ’()01234 功能已成为急需解决的问题。 该 文 提 出 了 一 种 基 于 *,-. /(# 操 作 系 统 的 ’()01/(5 解决方案。该方案采用运行 *,-. /(# 操作系统的 *+, 实验 板 作 方 案 实 现 平 台 。 该 实 验 板 内 嵌 了 支 持 ’() 主 机 功 能 的 ’() 主机控制器,提供 ’() 总线的物理接口,用以与 ’() 设备 相连接。该方案可以完全兼容所有遵循 ’() 协议规 范 的 设 备 (’() 键盘、’() 鼠标、’() 移动存储器等),用户可以非常方便 地与 ’() 设备进行数据交换。 下面就方案的原理和结构作详细的介绍: ! 方案架构 ’() 技术规范中将使用 ’() 总线进行数据传 输 的 设 备 双 方 划 分 为 两 类 角 色 :主 机 和 客 户 。 同 时 规 定 数 据 传 输 只 能 发 生 在 主 机 和 客 户 之 间 ,并 且 所 有 的 数 据 传 输 都 由 主 机 发 起 ,交 由 客 户 处 理 后 将 处 理 结 果 返 回 给 主 机 。 目 前 ,绝 大 多 数 主 机 功 能 被集成在各种类型的 *6 机上,而各种各样的基于 ’() 技术的 移动设备,包括 ’() 移动存储器、带 ’() 接口的数码相机等都 集 成 ’() 客 户 功 能 。 几 乎 所 有 的 *+, 设 备 并 不 具 备 主 机 功 能 ,这 就 导 致 ’() 移 动 存 储 设 备 无 法 直 接 与 *+, 通 信 ,他 们 的通信过程必须借助于 *6 等具备 ’() 主机功能的设备作“中 转”。要使 ’() 存储设备能独立与 *+, 设备通信,根本解决方 案 就 是 在 *+, 系 统 中 集 成 ’()01/(5 功 能 模 块 ,使 之 具 有 与 ’() 设备进行数据传输的能力。 该 文 提 出 一 种 支 持 *+, 系 统 上 ’()01/(5 功 能 的 解 决 方案,方案的具体框架结构见图 &。 如图 & 所示整个 ’() 主机系统可以分为系 统 硬 件 和 系 统 软件两个部分。 !$& 系统硬件 如 图 & 所 示 ,’() 主 机 控 制 器 是 该 方 案 中 的 一 个 硬 件 部 件,是一个介于 ’() 设备和系统软件之间的一个关键 部 件 ,主 要负责执行硬件接口层发出的命令,实际完成 ’() 总 线 传 输 计算机工程与应用 !""#$% &&I 6$! 协议规范层 协议规范层负责支持 &’( 总线协议并具体实现 &’( 设备 逻 辑 功 能 。它 通 过 调 用 硬 件 接 口 层 提 供 的 接 口 来 传 输 数 据 和 命 图 ) 系统框图 任务。同时,&’( 系统可以通过主机控制器内置的根集线器来 扩展 &’( 接口,可以提供多达 )!* 个 &’( 设备的连接。目前被 广泛使用的主机控制器主要有 +,-、.,- 和 &,- 等几类。 !$! 系统软件 系 统 软 件 主 要 是 用 于 控 制 特 定 硬 件 设 备( 主 机 控 制 器 ),实 现 特 定 系 统 功 能 的 软 件 ,可 以 分 为 操 作 系 统 和 主 机 端 协 议 栈 两 个部分。 令 ,实 际 的 命 令 和 数 据 传 输 都 是 通 过 硬 件 接 口 层 传 送 到 主 机 控 制器完成的。该层按功能可以分为两个部分:&’( 总线驱动和 设备类驱动。 6$!$) &’( 总线驱动 &’( 总线驱动是对 &’( 总线协议的具体支持 , 负 责 管 理 设备,并在 &’( 设备接入时负责配置存储设备,建立 相 应 的 传 输 和 命 令 通 道 ,实 现 命 令 和 数 据 的 传 输 。同 时 ,提 供 给 设 备 类 驱 动访问和控制 &’( 设备一组接口。 &’( 总线驱动主要提供以下功能和接口: ())设 备 配 置 当 设 备 接 入 并 被 设 置 时 ,总 线 驱 动 负 责 寻 找 匹 配 该 设 备 的 类 驱 动 。驱 动 的 匹 配 可 分 为 设 备 级 和 接 口 级 两 类 匹 配 。无 论 是 设备级或是接口级的匹配,如匹配成功,&’( 总线驱动将获得 设 备 类 驱 动 传 来 的 配 置 请 求 。该 请 求 提 供 了 相 应 的 设 备 设 置 参 数 ,包 括 设 备 端 点 、端 点 的 传 送 类 型 、传 送 周 期 、数 据 长 度 等 。 &’( 总 线 驱 动 根 据 系 统 可 用 带 宽 的 大 小 以 及 总 线 是 否 与 请 求 的 类 型 兼 容 决 定 接 受 或 是 拒 绝 设 置 请 求 。 如 果 接 受 ,总 线 驱 动 该 方 案 中 ,主 机 端 协 议 栈 在 提 供 热 插 拔 、电 源 管 理 、数 据 传 输等 &’( 通用功能的同时,负责驱动 &’( 设备,支持操作系统 与 &’( 设备进行通信。 操 作 系 统 方 面 采 用 基 于 /01 架 构 的 2/31 .’# 操 作 系 统。按照 2/31 .’# 的特性和要求,要在 2/31 .’# 上支持 &’(4,.’5 功 能 , 相 应 的 &’( 主 机 端 协 议 栈 必 须 作 为 2/31 .’# 的信任组件被嵌入到 2/31 .’# 中。 6 &’( 主机端协议栈 如图 ) 所示,&’( 主机端协议栈总体上可以分为三层。最 高层主要是用来与 2/31 .’# 的 内 核 交 互 工 作 , 并 按 照 操 作 系统的接口要求实现相关接口,称为“.’ 接口层”。最低层是用 来 与 主 机 控 制 器 进 行 交 互 ,指 导 主 机 控 制 器 工 作 ,称 为“ 硬 件 接 口层”。中间一层是逻辑上的设备驱动,在这一层中提供对 &’( 的支持并实现 &’( 设备的逻辑功能,称为“协议规范层”。 6$) 硬件接口层 硬件接口层是 &’( 主机端协议栈中唯一直接 与 硬 件 接 触 的 一 层 ,主 要 是 负 责 将 协 议 规 范 层 的 操 作 命 令 和 数 据 传 输 转 换 为实际的硬件操作,交由主机控制器传输到 &’( 总 线 上 。 同 时 ,也 负 责 提 供 统 一 的 应 用 接 口 给 协 议 规 范 层 ,屏 蔽 硬 件 细 节 , 对主机控制器进行抽象。硬件接口层提供以下功能和接口: ())建 立 通 信 通 道 硬件接口层负责建立与 &’( 设备的通信通道 , 供 将 来 与 设备间传输数据和命令。 (!)抽 象 主 机 控 制 器 考 虑 到 主 机 控 制 器 的 不 同 种 类 ,硬 件 接 口 层 被 用 来 抽 象 主 机 控 制 器 ,屏 蔽 不 同 种 类 主 机 控 制 器 的 差 别 ,提 供 统 一 的 接 口 给 上 层 软 件 ,屏 蔽 实 际 的 硬 件 操 作 过 程 。 (6)抽 象 数 据 和 命 令 传 输 过 程 主要通过直接操作主机控制器内置的各种寄存器来传输 上层软件传送来的数据和命令。 则 为 请 求 者 建 立 一 个 相 应 类 型 的 通 道 ,通 道 的 两 端 分 别 为 主 机 端 的 缓 冲 区 和 设 备 端 的 端 点 。 设 置 完 成 后 ,每 次 通 信 的 数 据 流 都 必 须 从 主 机 软 件 出 发 、经 相 应 通 道 访 问 设 备 端 点 、并 最 终 由 端点将通信的结果状态传回主机软件。 当 设 备 被 拔 出 后 ,总 线 驱 动 负 责 释 放 设 备 占 用 的 系 统 资 源 。 (!)通 道 管 理 总 线 驱 动 向 设 备 类 驱 动 提 供 多 种 通 道 的 管 理 接 口 。其 中 包 括 配 置 设 备 时 的 建 立 通 道 功 能 、传 输 过 程 中 的 取 消 通 道 和 重 启 通道等功能。 (6)传 输 管 理 针对设备对系统资源需求的不同,在 &’( 规 范 中 规 定 了 四 种 不 同 的 数 据 传 输 方 式 :等 时 传 输 方 式(789:;<9=9>8)、中 断 传 输 方 式(7=?@<<>A?)、控 制 传 输 方 式(-9=?<9B)和 块 传 输 方 式 ((>BC)。于 是 总 线 驱 动 需 要 分 别 支 持 这 四 种 传 输 类 型 。等 时 传 输 主 要 用 来 传 输 需 连 续 传 输 的 数 据 。中 断 传 输 则 是 用 来 传 输 少 量 的 需 及 时 处 理 的 数 据 。 控 制 传 输 主 要 用 来 传 输 控 制 信 息 ,包 括 配 置 信 息 、命 令 信 息 和 状 态 信 息 。 块 传 输 则 是 用 来 传 输 实 际 的 大 量 数 据 。总 线 驱 动 层 通 过 调 用 硬 件 接 口 层 提 供 的 传 输 接 口 完成实际数据传输。 6$!$! 设备类驱动 &’( 协议规范将众多的 &’( 设备按其特性分 类 , 具 有 相 同 特 性 的 设 备 组 成 一 个 类 。 针 对 不 同 设 备 类 的 逻 辑 功 能 ,必 须 编 写 不 同 的 驱 动 程 序 ,设 备 类 驱 动 就 是 实 现 设 备 逻 辑 功 能 的 驱 动 程 序 。它 负 责 接 收 上 层 软 件 的 命 令 和 传 输 要 求 ,作 相 应 转 换 , 转换为设备所能理解的命令要求,最后交由 &’( 总 线 驱 动 程 序传送该请求。 6$6 .’ 接口层 &’( 主机端协议栈是在内核空间运行的程序,没有链接, 不 能 独 立 运 行 ,但 是 可 以 装 载 到 操 作 系 统 中 作 为 内 核 的 一 部 分 运行。该方案架构里的最高层,称为 .’ 接口层,就是为嵌入到 2/31 .’# 操作系统中而实现标准接口的一层。因为操作系统 )!" !""#$% 计算机工程与应用 中对于不同种类的设备都有不 同 的 接 口 要 求 ,于 是 &’ 层 必 须 因设备的不同而分别进行实现。 % 方案的可扩展性 (’) 系统是一个复杂的系统,在各种应用场合有着极大的 应 用 空 间 。各 个 应 用 场 合 的 软 硬 件 要 求 有 着 不 同 的 需 求 。硬 件 方 面 ,(’) *&’+ 接 口 的 主 机 控 制 器 有 很 多 种 类 , 包 括 ,*-, (*-,&*- 等 等 。 每 种 主 机 控 制 器 的 具 体 操 作 均 有 很 大 的 不 同,需要不同的驱动程序对其进行支持。软件方面,(’) 主机端 协议栈可能需要被移植到多种环境中。于是 (’) 主 机 端 协 议 栈可能需要面临与多种操作系统接口。 正因为上述软硬件方面的不同,要在不同的环境中对 (’) 存 储 设 备 进 行 支 持 ,可 能 需 要 编 写 不 同 的 驱 动 程 序 。 这 就 为 程 序的可移植性提供了障碍。 该 方 案 提 出 的 软 件 架 构 设 计 ,可 以 对 不 同 的 环 境 提 供 不 同 的 支 持 ,很 好 地 解 决 上 述 的 障 碍 。 该方案中的硬件接口层对上层软件提供了统一的软件接 口 并 抽 象 主 机 控 制 器 ,屏 蔽 硬 件 操 作 。 这 就 为 同 时 支 持 多 种 主 机 控 制 器 提 供 了 可 能 。当 该 驱 动 程 序 被 移 植 到 不 同 的 主 机 控 制 器 上 时 ,只 需 按 照 统 一 接 口 规 范 改 写 硬 件 接 口 层 实 现 对 该 主 机 控 制 器 的 支 持 而 不 需 改 动 其 他 部 分 的 程 序 ,使 得 工 作 量 大 大 降 低。同时,&’ 接口层可按照不同操作系统的不同要求改写接口 函 数 ,这 样 就 可 以 使 主 机 端 协 议 栈 程 序 能 够 适 应 不 同 的 操 作 系 统 ,满 足 移 植 协 议 栈 的 要 求 。 该方案的软件架构体系能够同时满足硬件和软件变化的 需 求 ,适 合 移 植 到 不 同 的 软 硬 件 平 台 ,特 别 是 广 泛 的 嵌 入 式 平 台 上 ,具 有 极 大 的 应 用 空 间 和 可 扩 展 性 。 # 实践应用 为了验证方案的可行性,笔者采用英特尔设计制造的 ./0 实验板作为实 验 平 台 , 设 计 主 机 端 协 议 栈 用 来 支 持 (’) 存储设备。该实验板采用基于 123456 架构的应用处理器,内置 支 持 (’) 协 议 7$7 的 主 机 控 制 器 &*-, 操 作 系 统 采 用 .089 &’#$"。 按照 .089 &’# 的扩展特性和要求,要在 .089 &’# 上 支持 (’) 存储设备,相应的 (’) 主机端协议栈(包括设备驱动 程 序 ) 必 须 作 为 .089 &’# 的 信 任 组 件 被 嵌 入 到 .089 &’# 中,并将 (’) 存储设备看作 .089 &’# 的扩展设备进行操作。 设备驱动方面,存储类驱动程序是用来驱 动 (’) 存 储 设 备 的 驱 动 程 序 。 在 设 备 接 入 并 被 配 置 阶 段 ,存 储 类 驱 动 提 出 设 备 配 置 的 请 求 ,并 负 责 提 供 配 置 设 备 所 需 的 设 置 参 数 。 在 数 据 传 输 阶 段 ,设 备 类 驱 动 负 责 接 收 上 层 软 件 的 操 作 请 求 ,并 按 给 定 的 命 令 集 将 每 个 请 求 转 换 为 设 备 所 能 识 别 的 命 令 ,按 约 定 好 的传输协议传递给 (’) 总线驱动处理,并将从 (’) 总线驱动 返回的命令处理结果报告给上层软件。实验中采用 ’-’:! 命令 集来转换 (’) 请求,采用 )(8;<&=8> 协议进行传输。 另外,为了使得设备驱动能成功被 (’) 总线驱动 所 匹 配 , 设备驱动必须预先在 (’) 总线驱动中进行注册。设 备 驱 动 的 注 册 信 息 相 应 的 包 括 设 备 和 接 口 两 级 。其 中 设 备 级 信 息 主 要 有 设 备 厂 商 、产 品 名 称 、设 备 所 属 类 、设 备 所 属 子 类 和 设 备 协 议 等 。 接 口 级 信 息 主 要 包 括 接 口 所 属 类 、接 口 所 属 子 类 及 接 口 协 议 等 。 设 备 枚 举 阶 段 ,需 要 以 这 些 信 息 为 依 据 匹 配 适 合 的 类 驱 动。 &’ 接 口 层 上 , 为 了 支 持 外 部 设 备 和 外 部 媒 介 的 接 入 , .089 &’# 提 供 了 一 种 称 为“扩 展 管 理 ”的 技 术 。 采 用 该 项 技 术,可以使运行 .089 &’# 的设备支持外部媒介的接入。其中 扩展管理器、 虚 拟 文 件 系 统 、25?@ 驱 动 库 和 文 件 系 统 库 这 四 个 模 块 是 整 个 扩 展 技 术 的 关 键 ,必 须 分 别 加 以 实 现 。 图 ! 是所有四个模块的概况和相互关系。已发布的 .089 &’# 操作系统本身已提供了对扩展管理器、虚拟文件系 统和 A0+ 文 件 系 统 库 的 支 持 。 该 实 验 于 是 只 需 按 照 25?@ 驱 动 库 的 规 范 实 现 &’ 接 口 层 ,提 供 相 应 接 口 给 操 作 系 统 ,并 将 整 个 (’) 主机端协议栈嵌入进 .089 &’# 中。当 .089 &’# 启 动后会检索到该协议栈并识别出所采用的文件系统,此后 .089 &’# 会 按 照 该 文 件 系 统 规 定 的 方 式 ,使 用 &’ 接 口 层 提 供的接口函数访问设备。 图 ! 扩展技术的模块概况 经 过 该 方 案 中 主 机 端 协 议 栈 各 层 的 分 工 和 合 作 ,该 实 验 成 功地在实验板上支持 (’) 存储设备,速率达 到 7!9 B ’,有 效 地 扩展了 ./0 的外围设备。 C 小结 该方案中的 (’) 主机端协议栈是一个层次 清 晰 的 系 统 软 件,接口符合 .089 &’# 的相关规定,作为 .089 &’# 信任的 组件工作于内核态。该 (’) 主机端协议栈遵 循 (’)7$7 标 准 , 可以连接所有遵循 (’) 接口协议标准的 (’) 设备((’) 键盘、 D 盘 、EFG 等 ),可 以 用 来 扩 展 ./0 系 统 的 外 围 设 备 ,有 较 大 的 应 用 空 间 。 同 时 该 方 案 具 有 极 大 的 可 扩 展 空 间 ,适 合 移 植 到 不 同的软硬件平台。(收稿日期:!""% 年 C 月) 参考文献 7$(HIJ6K245 ’6KI45 )D2 ’F63ILI34@I?H M6JI2I?H 7$7$N@@F:B B OOO$D2P$?KQ !$&F6H *?2@ -?H@K?556K :H@6KL436 ’F63ILI34@I?H L?K (’)$N@@F :B B OOO$ D2P$?KQ G $ (HIJ6K245 ’6KI45 )D2 9422 ’@?K4Q6 -5422 ’F63ILI34@I?H &J6KJI6O $ N@@F:B B OOO$D2P$?KQ %$(HIJ6K245 ’6KI45 )D2 9422 ’@?K4Q6 -5422 )D5R<&H5S +K4H2F?K@$N@@F: B B OOO$D2P$?KQ #$’-’: )5?3R -?EE4HT2

Top_arrow
回到顶部
EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。