基于Vxworks的嵌入式存储器设计

2014-10-21 20:04马天乙
电子世界 2014年6期

马天乙

【摘要】针对嵌入式设备中数据存储需求,本文给出了一个基于VxWorks操作系统和嵌入式SATA NANDrive存储器的设计方案,介绍了硬件构成,详细描述了在VxWorks操作系统中SATA设备驱动设计過程。

【关键词】VxWorks;SATA NANDrive;MPC8548E;驱动设计

1.引言

随着计算机技术的发展,嵌入式系统应用的领域越来越广泛,包括工业控制、军工、航空航天等等,同时数据存储的需求也无处不在,传统的机械硬盘HDD(Hard Disk Drive)由于可靠性等原因已不适合在上述特殊应用环境中使用。固态电子盘SSD(Solid State Disk)而以其读写速度快、防震性能优异、低功耗、工作温度范围大等优点,占据了在嵌入式系统中存储应用的主流地位。

本文针对某设备中的多路以太网数据存储需求,介绍了一个以MPC8548E为处理器,SATA NANDrive为存储芯片,在嵌入式实时系统Vxworks环境下实现的数据存储软硬件设计方案,试验证明,连续写入数据速率大于60MB/s,满足百兆以太网数据存储需求。

2.硬件设计

本设计是以MPC8548E为主处理器,通过MPC8548E PCIe接口外接Marvell 88SE9230芯片实现PCIe到SATA的接口协议转换,连接4片GLS85LS1032P SATA NANDrive实现128GB容量SSD存储。下面详细描述硬件设计方案。

(1)MPC8548概述

处理器是整个设计的核心器件,本设计以Freescale MPC8548E为主处理器。MPC8548E是基于PowerPC架构的PowerQuicc III处理器,它基于嵌入式e500内核,频率最高可达1.2GHz,集成4个三速以太网控制器(eTSECs),1路PCIe接口。设计中MPC8548E频率设为800Mhz,PCIe采用x1协议。

(2)存储器设计

MPC8548E不包含SATA接口,这就需要考虑如何通过现有接口扩展出利于数据存储使用的SATA控制器,SATA控制器用来完成SATA SSD的控制和数据的存取,设计中选用Marvell 88SE9230芯片,实现PCIe协议到SATA协议的转换。88SE9230拥有4个6G/s的高速SATA3.0接口,设计采用SATA 1.0,PCIe 1.0a x1方案,总线速率可达到1.5Gb/s。

本设计选用Greenliant公司生产的GLS85 LS1032P SATA NANDrive作为主存储芯片。GLS85LS1032P芯片是一个BGA封装的工业级SSD芯片,内部集成了SATA接口和32GB SLC NAND Flash,连续读写速率可达到120/80MB/s,内置微控制单元(MCU)把SATA指令转换为对Flash操作需要的数据和控制信号,支持数据缓冲区与Flash之间DMA方式读写,内置多任务接口提升多片Flash同时读写的性能。设计中选用4片SATA NANDrive接入88SE9230,实现128GB存储量。

3.软件设计

软件设计主要介绍在VxWorks系统中如何实现SATA NANDrive驱动。

(1)驱动设计原理

由于88SE9230是一款透明PCIe桥芯片,对于设备和设备驱动器透明,故驱动程序可以简化为实现SATA控制器的驱动和管理。

SATA SSD是一种块设备。在Vxworks系统下,块设备的驱动程序不直接与Vxworks的I/O系统连接,而是挂接在文件系统上,文件系统再与I/O系统连接,用户通过访问文件系统访问块设备。Vxworks中块设备一般采用dosFs文件系统。它向下提供了标准的接口,可以挂接多种块设备驱动。文件系统把自己作为一个驱动程序装载到I/O系统中,并把请求转发给实际的设备驱动程序,块设备通过调用文件系统的设备初始化函数来安装驱动。

(2)SATA驱动设计

本设计采用的是SATA NANDrive,故驱动程序设计参照VxWorks6.6下ATA的驱动程序框架,在原有BSP中添加SATA驱动程序。编写驱动函数如下:sataDrv:初始化SATA设备;sataDriveInit:初始化中断向量、内存映射、连接中断;sataDevCreate:创建块设备,初始化设备描述符;sataBlkDevFill:填写块设备数据结构;sataBlkWrt:SATA SSD数据块写入;sataBlkRd:SATA SSD数据块读取,sataReset:复位SATA SSD控制器。

系统boot时会首先在sysLib.c中sysHw-Init2中调用sataDriveInit函数来初始化中断向量、内存映射、连接中断等,接着在usrConfig.c中调用sataDrv驱动SATA控制器,完成SATA控制器的配置、SSD识别、SSD参数获取、中断函数挂接和块设备读写接口实现等内容。

驱动SATA控制器后,在SATA SSD上建立dosFs文件系统需要以下操作:首先调用iosDrvInstall初始化dosFs文件系统,调用sataDevCreate创建块设备,调用dcacheDev-Create、usrFdiskPartCreate创建磁盘高速缓冲区和磁盘分区,运行dosFsDevCreate创建dosFs文件系统,最后调用dosFsVolFoemat格式化分区。

格式化完成后系统就可以访问SSD分区和进行文件操作了,在Shell里运行“devs”命令所显示出的系统设备列表可以看到SATA设备。编写应用程序在SATA SSD上进行文件读写操作,测试结果为最高连续写速率大于60MB/s,连续读速率大于80MB/s,满足设计需求。 4.结论

本文给出了一个基于VxWorks操作系统的嵌入式SATA NANDrive存储器的设计方案,详细描述了硬件构成和软件驱动设计过程。与传统的机械硬盘和商用SSD相比较,SATA NANDrive不仅提供了通用的便于实现的SATA接口,还提供了更高的读写速度、更好的环境适用性,特别适合军工航电等行业对数据存储的技术需求,是嵌入式数据存储未来的一个重要发展方向。

参考文献

[1]Freescale Semiconductor.MPC8548E PowerQUICC IIIIntegrated Processor Hardware Specifications.http://www.Freescale.com.

[2]Marvell.Marvell-88SE92xx-Datasheet.http:/www.marvell.com.

[3]Greenliant.GLS85LS1016P/1032P Industrial Grade SATA NANDrive Datasheet.http:/www.greenliant.com.

[4]肖忠炳等.基于VxWorks的大容量SATA电子盘驱动实现[J].航空电子技术,2012.

[5]方盈,等.VxWorks下多协议转换硬件电路及其驱动设计与实现[J].计算机测量与控制,2013,21:5.