APP下载

基于SpaceWire总线的网络图像传输演示系统的设计

2013-02-13宋光磊柳增运

电视技术 2013年17期
关键词:服务程序数传驱动程序

李 新,宋光磊,温 靖,柳增运

(1.北京化工大学 信息科学与技术学院,北京100029;2.中国空间技术研究院513所北京研发中心,北京100191)

责任编辑:任健男

近年来,随着空间探测技术的快速发展,星上空间探测载荷设备种类日益增多,使得星载设备产生和处理的数据量迅速增长,各载荷设备间差异很大,有必要采用统一标准规范载荷设备的对外接口,使新设备更快地融入到新型号任务中,因此对星载设备的数据传输总线提出了更高的要求。SpaceWire总线是一种更好满足现代星上设备间高速数据传输需求的传输标准,已成为欧美等发达国家星载高速通信的首选方案。目前在国内开展该技术研究较少,而且还没有星上应用实例。因此尽快大力研究此项技术,对于提升国防航天实力具有重要意义。

本文设计由模拟综管设备、模拟相机设备、模拟数传设备和SpaceWire路由器组成的基于SpaceWire总线网络图像传输演示系统,其中设备中采用FPGA和ARM处理器分别实现SpaceWire总线的底层协议和对系统的传输控制。经验证该演示系统可以进行稳定且高速的图像数据传输,并且具有良好的可扩展性,为下一步研制星载功能样机奠定了基础。

1 SpaceWire概述

SpaceWire总线是国际上迄今为止第一个专为航天任务设计的协议标准,由欧洲航天标准合作组织(ECSS)发布,该协议以IEEE1355—1995协议和LVDS标准为基础,提供通用接口标准,简化和规范了不同载荷设备的连接。SpaceWire总线的特点如下[1]:

1)全双工、串行、点对点的数据总线,速码率为2~400 Mbit/s,采用LVDS接口技术;

2)电缆最长为10 m,连接器采用专为航天应用开发设计的微型9针D型连接器;

3)节点内部编码方式采用数据—滤波(Data Strobe)编码;

4)网络通过SpaceWire路由器连接一定数量的SpaceWire结点,节点可以通过SpaceWire电缆直接相连或通过SpaceWire路由器与其他SpaceWire节点或路由器相连;

5)SpaceWire总线标准ECSS-E-50-ST-12C涉及物理层、信号层、字符层、交换层、数据包层、网络层共6层协议,对应OSI模型中的物理层和数据链路层。

2 演示系统组成及结构

2.1 系统组成

基于SpaceWire总线网络图像传输演示系统如图1所示,主要包括4个星上模拟设备、1个监控平台、1个数据显示平台。4个模拟设备分别是模拟综管设备、模拟相机设备、模拟数传设备、SpaceWire路由器;监控平台用于向模拟综管设备发送指令并接收模拟综管设备的响应数据;数据显示平台用于接收显示模拟数传设备发送的数据。

图1 系统总体组成

2.2 系统设备硬件结构

设备采用三星公司的ARM9内核处理器S3C2440[2],工作频率最高达到400 MHz,具有低功耗、高速的处理计算能力,根据演示系统功能配置以下外设资源,设备的基本硬件框图如图2所示。

图2 模拟设备硬件基本框图

FPGA采用Xilinx Spartan系列的XC3S1000芯片,封装支持SpaceWire总线的IP核,实现了SpaceWire总线的底层协议。

NAND Flash采用K9F2G08芯片,该存储芯片存储容量高达256 Mbyte,而且具有价格低、读写速度快及可靠的耐用性。主要存储u-boot引导代码、Linux内核以及文件系统。

SDRAM选用H57V2562GTR芯片,为内核运行提供运行空间。

以太网接口电路使用DM9000网络控制芯片,用于NFS服务和数据UDP协议传输。

在相机设备中的USB接口上外接ZC0301芯片的USB接口摄像头实现图像采集。

2.3 系统设备软件架构

系统软件在Linux操作系统基础上构建,系统软件架构如图3所示,从底向上依次为u-boot,Linux操作系统,设备驱动程序和SpaceWire网络服务程序。系统上电后,u-boot初始化硬件设备,加载Linux内核;SpaceWire网络服务程序可以实现采集的图像数据在SpaceWire网络各节点间的传输。

图3 系统软件架构

3 演示系统软件移植

3.1 Linux操作系统移植

Bootloader引导程序选取u-boot-2010.09版本,该版本能够很好地支持S3C2410处理器的架构。S3C2440和S3C2410具有的相似性简化了移植过程,提高了移植效率,在移植过程中添加了S3C2440配置、NAND Flash的启动支持和DM9000的支持[3]。

系统内核采用linux-2.6.33版本,支持V4L2驱动框架,集成USB和ZC0301摄像头驱动,方便了移植工作。通过给linux-2.6.33版本内核文件打补丁使其支持Yaffs2文件格式,在内核选项图像选单中,系统选择ARM920T,CPU类型选择S3C2440,驱动程序选中NAND Flash,DM9000,ZC0301P Camera。

文件系统采用Yaffs2文件系统,该系统是针对NAND Flash设计的嵌入式文件系统,适用于大容量存储设备,内存空间占用小、读/写速度快,性能优越且易于移植。

3.2 MJPG-streamer视频服务器的移植

MJPG-streamer是一款基于IP地址的视频流服务器,绑定了一个输入插件和多个输出插件,通过插件实现从网络摄像头获取JPEG格式的图像并传输至客户端[4]。系统移植MJPG-streamer视频流服务器主要调用了input_uvc输入组件和out_http输出组件,程序流程如图4所示。

4 Linux下FPGA设备驱动设计

4.1 Linux设备驱动工作原理

Linux 中设备被当作文件进行处理,应用层只需要获得设备的文件描述符,通过系统调用就可完成对硬件设备的操作。这些由驱动程序完成从而使应用程序不必关心过多的硬件细节。应用程序发出系统调用指令后,会从用户态转换到内核态,通过内核将系统调用转换为对物理设备的操作[5]。

图4 MJPG-streamer程序流程图

用户进程通过设备文件同硬件设备打交道,对设备文件的操作就是一些系统调用,对于FPGA驱动来说,需要一个非常重要的数据结构(file_operations)将系统调用与驱动程序关联起来。数据结构中包括了对FPGA进行各种操作的函数指针,如open(),read(),write(),ioctl()等。

4.2 系统FPGA设备驱动开发

在SpaceWire总线网络图像传输系统的各个设备设计中,采用S3C2440作为主处理器,使用Xilinx公司的XC3S1000对其进行FPGA扩展,使系统支持SpaceWire总线传输功能。FPGA与ARM连接如图5所示,S3C2440提供的主要连接有32位宽数据总线和27位宽地址总线,以及读、写、中断和片选控制线等。

图5 FPGA与ARM接口电路

1)设备驱动的初始化

初始化模块在内核启动时主要负责初始化FPGA,由函数module_init()和module_exit()两部分实现。系统中XC3S1000位于nGCS3上,对应的物理地址为0x18000000-0x20000000,共128 Mbyte静态地址空间。将FPGA主设备号定义为零,使操作系统随机为该设备分配主设备号。

2)设备驱动地址的映射

驱动程序不能直接通过物理地址访问FPGA的I/O内存资源,需将物理地址映射到虚拟地址空间进而实现访问这些I/O内存资源。FPGA初始化通过ioremap()完成物理地址到内核空间的映射。本系统FPGA的片选使能控制信号为nGCS3,对应的起始地址为0x18000000。

3)驱动程序控制接口函数

ioctl()用来设置FPGA内部参数,其中部分设置命令如表1所示,不同的命令对应不同的cmd参数,在ioctl()中采用switch(cmd)实现对FPGA参数的设置及状态的读取。

表1 ioctl命令字

5 SpaceWire网络服务程序设计

演示系统将模拟综管设备设计为主控设备,将模拟相机设备、模拟数传设备设计为从控设备。系统SpaceWire网络服务程序分为主控SpaceWire网络服务程序和从控SpaceWire网络服务程序两部分。

5.1 从控SpaceWire网络服务程序实现功能

1)通过移植MJPG-streamer视频服务器软件完成网络图像的采集并传输JPEG格式的图像至客户端程序,其中模拟相机设备调用input_uvc组件,模拟数传设备调用out_http输出组件。

2)完成从控设备间的信息交互以及SpaceWire网路各结点间的数据传输。

5.2 主控SpaceWire网络服务程序实现功能

1)通过收发线程完成主控设备与从控设备的信息交互。主控设备通过SpaceWire传输协议可以快速获取新接入设备的信息,完成对新接入设备的识别。同时从控设备也可以获取主控设备的相关设备参数。

2)接收UDP接口服务程序的转发命令[6],完成对SpaceWire网络中设备的数据传输控制。主控设备在对所有网络设备进行信息交互的基础上,为从控设备分配SpaceWire网络中的参数,包括网络地址、通信速率、发起数据传输等参数,从而控制从控设备的数据传输。程序流程如图6所示。

图6 主控SpaceWire网络服务程序流程

6 系统测试

将系统设备连接并上电(如图7所示),监控平台完成对插入设备的识别显示后,设置载荷数据传输路径配置指令,图像数据从端口1通过SpaceWire路由器发送到端口5,端口5上的模拟数传设备将接收到的模拟相机设备拍摄的图像转发至数传显示平台。在数传显示平台打开MJPG-streamer文件夹中的viewer软件,输入对应的IP地址和端口号,点击connect可以看到流畅的视频图像(如图8所示)。示波器在SpaceWire链路建立时采集的数据波形如图9所示,最小时宽为5 ns时,数据脉冲为200 MHz,即数据传输速率可达200 Mbit/s,高于1553B或CAN总线的传输速率(一般不超过2 Mbit/s)。

7 小结

目前,SpaceWire总线技术已被欧空局、美国航天局在多个航天任务中使用。文中搭建了一种基于SpaceWire总线网络图像传输系统,模拟了图像数据在SpaceWire网络高速可靠的传输,简化了设备的连接,并具有良好的可扩展性。

[1]European Cooperation for Space Standardization.(Standard ECSS-E-50-12A)SpaceWire,Links,Nodes,Routers and Networks(Issue 1)[S].2003.

[2]S3C2440X RISC MICROPROCESSOR date sheet[EB/OL].[2012-10-20].http://www.alldatasheet.com/datasheet-pdf/pdf/93102/SAMSUNG/S3C2440X.html.

[3]YAGHMOUR K.Building embedded Linux system[M].New York:O’Reilly & Associates,2003.

[4]陈书益,黄永慧.开源视频服务器软件MJPG-streamer的研究和应用[J].电子设计工程,2012,20(5):172-176.

[5]李俊.嵌入式Linux设备驱动开发详解[M].北京:人民邮电出版社,2008.

[6]刘畅,彭楚武.Linux下的UDP协议编程[J].仪表技术,2005(4):62-64.

猜你喜欢

服务程序数传驱动程序
基于数传电台的靶弹测控系统设计
SylixOS系统的中断嵌套机制研究与实现
基于C#的进程守护程序的设计
UDP穿透NAT技术实现数据唤醒车联网T-Box设备的方案
嫦娥卫星数传副瓣信号的干涉测量研究与精度验证
计算机硬件设备驱动程序分析
Arkbird 10通道跳频433高频头增程数传
水利工程施工监理服务程序及质量控制
频率偏置对Ka频段圆极化频率复用数传链路的影响
基于MPC8280的CPU单元与内部总线驱动程序设计