引言
新一代的智能电网继电保护装置软硬件平台研发设计中大都采用了多种类型的组件技术,根据功能可分解为环境建模、推理决策、系统监控、领域学习和领域知识库等各类逻辑实现组件,组件与外部或组件间都有大量的数据传递和处理,这些关键数据不仅需要高速稳定的存储系统来存储,还要存储系统能在恶劣电磁干扰环境下保证数据的正确完整性。针对这些要求,文中着重研究了在飞思卡尔P2020多核处理器下通过PCIe实现的嵌入式固态硬盘存储技术,就存储系统的硬件设计和软件驱动设计等方面进行了详细的阐述,并通过EMC专业测试和具体智能变电站工程进行了可靠性验证。
1 存储系统架构设计
根据存储系统的设计需求,要求该系统具有大容量数据存储、高速总线、热插拔等特点。按照模块化的设计思路,兼顾继电保护装置机箱插件式结构的特点,将存储设备设计为独立的插件模块,通过机箱背板的高速PCIE扩展总线与主控CPU模块插件相连。其组成结构如图1所示。
2 存储系统硬件设计
2.1 P2020处理器主控单元CPU模块设计
CPU模块采用飞思卡尔新推出的低功耗P2020多核微处理器, P2020处理器具有双E500v2内核,最高主频可达到1.2GHz,集成了PCIe、SGMI、SD/MMC等接口。包含P2020处理器的主控CPU主要由复位电路、时钟电路、时序逻辑控制电路、DDR内存电路和接口模块电路组成。为了节省硬件资源和降低功耗,P2020处理器外围接口电路采用了复用SerDes(串行器解串器)设计,通过处理器上电复位时初始化设备状态寄存器,将P2020的四个SerDes通道灵活配置成PCIE、SGMII等接口。两个E500内核可根据具体的软件设计非常方便地通过SerDes访问存储设备。PCIe接口的数据收发差分线和时钟线经过CPU插件上的高速连接器扩展到机箱背板。
2.2 固态硬盘存储模块设计
固态硬盘(SSD)是一种基于闪存的存储技术,具有能耗低、无机械活动部件、读写速度快、抗震动等优点。该存储模块使用工业级固态硬盘(>=120G)作为存储介质,解决了智能保护装置采用Flash或SD卡存储空间容量小、传输速率慢、不能脱机运行的劣势。
SATA控制器是固态硬盘控制的核心。系统选用Marvell 88SE9170作为SATA控制器,该芯片有两个支持SATA 3.0规范的SATA端口,一个lane PCIe2.0接口。6路可设置方向的GPIO,用于操作固态硬盘的数据指示灯闪烁指示等功能。88SE9170是Marvell新推出的一款工业级PCIE转SATA的控制芯片,兼容SATA3.0以下的SATA协议规范,支持SATA端口的FIS和COMMAND交换技术,支持SATA常见的硬盘NCQ(全速命令队列)、AHCI(高级主机控制器接口)接口模式等功能。
88SE9170自带一个支持SPI接口的512KB固件FLASH芯片,芯片上可由写片器写入BIOS和引导码,通过软件运行将FLASH内容映射到内存指定地址来加载或由88SE9170上电时自动加载,完成88SE9170片内寄存器的配置。另外一种方式不需要SPI flash,每次上电时由处理器通过PCIE接口对88SE9170进行寄存器配置,配置参数掉电丢失。缺点是该存储模块不能脱离CPU模块独立运行,通用性不好。
由88SE9170SATA控制器通过SATA协议实现处理器和固态硬盘之间的数据传输和管理。数据传输速率可达2.5Gbps或5Gbps。模块示意图如图2所示。
3 软件和驱动设计
嵌入式操作系统采用国外引进的嵌入式实时操作系统Nucleus Plus。Nucleus Plus具有实时的、抢先的、多任务的内核。95%的内核代码由C语言编写,开放性好,一些开源的驱动代码和应用代码能很容易地添加到操作系统中。在嵌入式操作系统下运行驱动软件可以分为三部分: P2020处理器PCIe设备初始化、88SE9170 SATA控制器驱动初始化和文件系统实现。存储系统的驱动软件框架结构如图3所示。
3.1 PCIe设备初始化
PCIe总线采用点对点的串行连接方式,每个PCIe设备都有独立的数据传输通道,该通道对其他设备来说是封闭的,可避免其他设备的干扰。能有效提高智能继电保护装置的产品可靠性。P2020处理器可提供3个工作在2.5/5 GHz频率下的串行PCIe控制器接口。本设计中P2020处理器的PCIe控制器初始化参考了UBOOT开源代码的相关部分。在Nucleus 嵌入式操作系统启动时, 根据硬件设计,对应设置P2020 处理器复用Serdes的配置。划分PCIe控制器地址空间。初始化PCIe控制器的配置寄存器和中断设置寄存器。PCIe控制器的初始化流程见图4。
3.2 88SE9170 SATA控制器驱动初始化
3.2.1 SATA控制器的PCIe设备注册
P2020处理器通过设置为RC模式的PCIe 控制器扫描PCIe总线上的设备,通过配置空间读取88SE9170的设备ID和厂商ID等属性,向PCIe控制器硬件驱动层注册。注册完成后,处理器即可通过PCIE总线,对88SE9170的SATA控制器进行初始化配置和固态硬盘访问。
3.2.2 SATA控制器的工作模式选择
88se9170 SATA控制器支持PCI-IDE模式和AHCI模式。IDE模式是为了兼容IDE硬盘。AHCI为SSD固态硬盘的首选模式。AHCI是由Inter指导下多家公司联合研发的接口标准。AHCI在PCIe和串行SATA设备内部逻辑间扮演标准接口的角色,通过PCI BAR5,实现原生的SATA功能,为设备制造商省去了单独开发接口的工作。C语言编写的开源AHCI接口驱动能非常容易添加进嵌入式Nucleus操作系统中。
3.2.3 SATA控制器AHCI接口初始化
在PCIE总线初始化完成后,可将AHCI的配置空间映射到BAR5寄存器指定的一段非缓存的内存空间,通过内存操作直接对AHCI的配置寄存器进行初始化操作。AHCI标准指定了寄存器的偏移地址,偏移地址小于100h的为通用控制寄存器空间,大于100h的为SATA端口寄存器空间。88se9170 的HBA Capability 支持64位寻址、NCQ、端口复用等常见SATA控制器特性。SATA控制器初始化完成后,扫描SATA端口,建立物理连接,通过AHCI驱动的读写函数完成对SATA接口固态硬盘的操作。AHCI初始化流程见图5。
3.3 文件系统实现
现有智能继电保护装置为节省硬件资源,大都采用嵌入式环境下对FLASH存储器支持较好的小巧精简的YAFFS或JFFS文件系统。这两种文件系统在目前主流的桌面系统中都不能直接兼容,不利于移动存储设备的脱机运行。为保证不同桌面系统下工具软件对存储设备能够直接操作和读写,进行数据分析,本设计选用了兼容性好的FAT文件系统,来有效管理写入固态硬盘内的数据。
FAT文件系统整体上可以划分为四个部分:保留区、 FAT 表区、数据区和剩余扇区, 这四部分在存储设备格式化时被创建,并且在数据存储期间不可被更改。FAT文件系统是完全免费开源的,具有高效和代码小的优点。在P2020处理器上移植时,根据处理器定义改动FAT文件系统的数据类型和文件系统的配置头文件ff.h,重新编写DISK I/O层的驱动函数。I/O函数主要有disk_initialize(),disk_read(),disk_status(),disk_write(),disk_ioctl(),get_fattime(),通过调用AHCI驱动函数,分别实现固态硬盘初始化、状态获取、读写、命令控制等功能。具体流程见图6。
4 测试验证
4.1 固态硬盘数据读写测试
选用固态硬盘支持的三种SATA命令:IDENTIFY、WRITE DMA EXT和READ DMA EXT来测试固态硬盘数据读写数据的可靠性。
(1) IDENTIFY测试
利用NUCLEUS 操作系统的测试代码,操作SATA控制器AHCI I/O接口函数ahci_device_data_io(u8 port, u8 *fis, int fis_len, u8 *buf,int buf_len, u8 is_write),下发IDENTIFY FIS命令,函数返回256字节buf数据区IDENTIFY命令响应数据,该数据根据硬盘生产厂商不同,数据内容也有差别,主要内容有制造厂商的名称、产品序列号、硬盘大小、支持的功能等参数。与选用的固态硬盘厂商提供的数据手册相关内容逐项核对后,内容一致,测试正常。
(2) 利用WRITE DMA EXT、READ DMA EXT命令循环测试读写固态硬盘数据,对写入和读取相同硬盘扇区的数据进行比较,判断数据读写的正确性。部分相关测试代码见如下:
u8 user_buffer_read [2048];
u8 user_buffer_write[2048];
int sata_ahci_sectortest_read_write(u8 ahci_port,u8 is_write,u64 lba_start,u16 block_count);
while(1)
{ …
count=4;
ata_ahci_sectortest_read_write(0,1,lba,count)//WRITE 2K 数据
ata_ahci_sectortest_read_write(0,0,lba,count)//READ 2K 数据
if(data_compare(&user_buffer_write,& user_buffer_read)!=0)
{ printf ("ahci: sata data error! Return!\r\n")
Break;}
lba=lba+4;
…
}
通过测试代码可对固态硬盘数据区进行全覆盖测试,根据1000次测试输出结果来看,数据读写正常。
随后用大数据文件(>5G)的读写进行测试,对读写时间进行了统计,计算下来,可以达到240MB/S的读取速度,180MB/S的写入速度,满足设计要求。
4.2 PCIE总线数据传输可靠性验证
智能继电保护装置为机箱插件式结构,本设计中固态硬盘插件和应用P2020处理器的CPU插件由PCIE总线经机箱PCB背板扩展后连接。PCIE的信号完整性和EMC耐受能力,将影响系统的稳定性和可靠性。为验证硬件设计的可靠性,对整装置进行了静电放电抗扰度、快速瞬变脉冲群抗扰度、浪涌抗扰度、阻尼震荡波等多项EMC试验。试验结果表明,PCIE总线物理连接可靠,存储系统无数据丢失和出错现象。
4.3 具体智能变电站工程现场运行验证
采用新一代智能变电站保护软硬件平台设计的继电保护和通信装置,在吉林500kV包家智能变电站、重庆500kV玉屏智能变电站等多个新建智能变电站挂网运行,现场运行状况良好。
5 结束语
本文介绍的基于PCIe实现固态硬盘存储系统的设计方案,采用了应用范围广泛和成熟的PCIe总线技术和基于SATA的AHCI驱动接口规范,有效提高了智能继电保护装置的数据存储性能。大容量存储系统的应用使智能继电保护装置集成大数据录波、PMU、在线监测等功能成为可能,特别是为站域和广域集中式软件功能复杂数据容量大的保护装置提供了硬件实现基础。此外,在PCIe总线硬件设计环节中,如何设计才能提高总线的抗电磁干扰能力也是值得研究的地方。
参考文献:
[1]刘振亚. 智能电网技术[M]. 中国电力出版社,2010
[2]王齐. PCI Express 体系结构导读[M]. 北京机械工业出版社,2010
[3]Serial ATA International Organization. Serial ATA Revision 3.0[S],2009
[4]PCISIG. PCI Express Base Specification Revision 2.0[S],2009
[5]Serial ATA AHCI 1.3specification [Z],2008,6
[6]Freescale Semiconductor Corp. Qor IQ TM P2020 Integrated Pr-ocessor Reference Manual[M].America: Freescale Semicon-ductor,2009
[7]Freescale Semiconductor Corp. Power PCTM e500 Core Family Reference Manual[[M]. America: Freescale Semiconductor,2005