VxWorks下多协议转换硬件电路及其驱动设计与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VxWorks下多协议转换硬件电路及其驱动设计与实现

方盈;翟正军;陈康

【摘要】针对嵌入式系统外部接口各异,无法直接支持SATA接口的问题,采用多款协议转换芯片,设计并实现了PCI接口转换为SATA接口的硬件电路及其在IDE模式下的驱动程序,成功将SATA固态盘应用于机载存储,提高了系统的存储容量和存储速度;测试结果表明工作在此硬件电路上的SATA盘,最高连续读速度为

65MB/s,最高连续写速度为45MB/s,完全满足航空项目中机载存储设备的要求.【期刊名称】《计算机测量与控制》

【年(卷),期】2013(021)005

【总页数】4页(P1314-1316,1329)

【关键词】VxWorks;IDE模式;DMA;接口转换;驱动程序;SATA接口

【作者】方盈;翟正军;陈康

【作者单位】西北工业大学计算机学院,西安 710072;西北工业大学计算机学院,西安 710072;西北工业大学计算机学院,西安 710072

【正文语种】中文

【中图分类】TP311

0 引言

大容量固态存储器是一种在嵌入式系统中大量使用的存储介质,目前的标准接口有SATA 和IDE两种,SATA 接口以其速度快、抗干扰能力强而成为主流接口。但由

于嵌入式系统的外部设备接口各异,无法直接使用SATA 设备,需要涉及到接口转换的问题。目前,PCI接口直接转换为SATA 接口的芯片大都为民用级别,难以在极端的环境下工作;而PCI接口到PCI-Express(以下简写为PCIe)接口的转换芯片以及PCIe接口到SATA 接口(以下简写为PCIe-SATA)的芯片都有相应的工业级别。基于工作环境的要求,接口转换电路采用了两款工业级转换芯片,实现了PCI协议转换为PCIe协议,并最终转换为SATA协议的功能。本文概要介绍了接口转换的硬件电路,详细给出了其驱动程序的设计和实现过程,同时对于VxWorks下SATA 设备的驱动[1]编写具有较大的参考价值。

1 硬件电路的设计与实现

硬件电路的设计主要分为两个部分,一部分为PCI接口到PCIe接口[2]的转换电路,采用PLX公司的PEX 8112芯片实现;另一部分为PCIe接口到SATA接口的转换电路,采用某款PCIe-SATA芯片实现,该芯片中的SATA控制器同时支持IDE和AHCI两者模式。整个系统的结构如图1所示。接口转换电路的电源由PCI 插槽提供,两个部分的同步通过共用同一个PCIe时钟发生器实现。

图1 系统结构图

PEX 8112支持前向桥和反向桥模式。在前向桥模式中,桥允许PCIe处理器使用PCI芯片及其适配器。而在反向桥模式中,桥允许传统的PCI处理器配置和控制PCIe交换器和端点。本硬件转换电路中PEX 8112采用了反向桥模式,不仅允许从PCI总线上完成下行PCIe系统的配置,并且可以处理PCIe的中断和电源管理事件。为了使PEX 8112工作在反向桥模式下,需要将其FORWARD (桥选择)引脚接高电平,表示选择反向桥模式;同时将EXTARB (外部仲裁器使能)引脚接高电平,表示PEX 8112向外部PCI仲裁器请求PCI总线。

PEX8112的上行端遵循严格的PCI协议,与主机的PCI接口相连;PEX 8112与PCIe-SATA转换芯片之间通过2对差分数据线,实现相互通信;同时通过一条复

位信号线,来实现PEX 8112对PCIe-SATA转换芯片的复位操作;PCIe-SATA转换芯片的下行端遵行严格的SATA协议,与22针的SATA母座相连,用于连接标准的SATA设备。

2 驱动程序的设计

2.1 驱动程序的原理

由于PEX 8112是一款透明桥[3]芯片,对于设备和设备驱动器透明,故硬件转换电路的驱动程序可以简化为两部分,一部分是对PCI[4]和PCIe总线的配置,主要包括对PEX 8112和PCIe-SATA芯片配置空间的操作;另一部分就是对

PCIe-SATA芯片的SATA控制器进行操作,也即实现SATA接口的驱动和管理。SATA盘是一种块设备[5]。这类设备在VxWorks下能够支持文件系统,具有

随机访问的能力,同时使用多字节的数据块传输数据。在VxWorks系统下,块设备的驱动结构不是直接挂接在VxWorks的I/O系统中,而是挂接在文件系统上,文件系统作为驱动程序挂接到I/O系统中,用户通过访问文件系统访问块设备。VxWorks支持这几种文件系统:dosFs,rawFs,cdromFs,tapeFs。其中dosFs文件系统适用于块设备,是块设备的上一层。它向下提供了标准的接口,可以挂接多种块设备驱动。Vxworks文件系统的组织结构以及dosFs、电子盘驱动

在文件系统中的位置,如图2所示。文件系统把自己作为一个驱动程序装载到I/

O系统中,并把请求转发给实际的设备驱动程序。块设备的驱动程序通过初始化

块设备描述结构BLK_DEV来实现驱动程序提供给文件系统的功能。此外,块设

备通过调用文件系统的设备初始化函数来安装驱动。文件系统在使用之前必须初始化。文件系统初始化的过程不仅是初始化自身数据结构,还要执行下面的操作:(1)创建一个文件系统驱动程序条目。

(2)创建一个指定设备名的设备。根据物理设备,调用sataDevCreate()函数,创建一个SATA逻辑设备。该函数根据物理设备的信息,生成一个块设备描述结

构BLK_DEV,该结构描述了设备的物理属性(例如SATA设备的磁头数、柱面数、扇区数),供上层软件调用。

(3)将块设备的驱动函数挂接到相应的数据结构中。这一步中主要涉及到SATA

盘的读写函数、控制函数和复位函数,把这些信息作为一个BLK_DEV返回。

图2 VxWorks文件系统组织结构

2.2 SATA接口驱动程序的设计

驱动程序的结构一般包括3个部分:初始化部分、函数功能部分和中断服务程序

部分。初始化部分初始化硬件,分配设备所需的资源,完成所有与系统相关的设置。函数功能部分主要实现读功能、写功能、控制功能以及复位功能。中断服务程序负责协同系统的数据读写任务。以下为SATA接口驱动程序中涉及到的主要函数:(1)sataDrv():初始化SATA设备。

(2)sataDriveInit():确认驱动类型,初始化驱动程序的数据结构。

(3)sataDevCreate():创建逻辑块设备,建立设备描述符。

(4)sataBlkDevFill():将驱动函数与相应的数据结构相关联。

(5)sataReset():复位SATA控制器。

(6)sataBlkRd():设备读操作。

(7)sataBlkWrt():设备写操作。

(8)sataIntr():中断服务程序。

3 驱动程序的实现

由透明桥的性质可知,完成相应的总线配置后不需要特定的驱动程序,本文主要介绍IDE模式下PCIe-SATA芯片的驱动。

3.1 总线配置

每个PCI设备有3种物理空间:配置空间、存储器空间和I/O空间。配置空间是PCI设备的硬件与其初始化软件信息交接的地方,软件可以通过它对设备进行识别

相关文档
最新文档