摘要:在嵌入式体系与VxWorks实时操作体系运用愈加广泛的布景下,结合嵌入式体系关于各类实时通讯办法的不同需求,提出依据操控运用的复合通讯形式;以Radstone公司的PPCx系列单板机为例,给出完结办法,并对数据通讯的产时性与安全性作了研讨。片关于各类嵌入式操作体系的数据检验具有很大的参考价值。
关键词:VxWorks 嵌入式体系 实时性 数据通讯
导言
跟着信息技术的不断发展和更新,嵌入式操作体系以其速率高、安稳、可装备内核的优势正得到越来越广泛的运用,包含医学、图画处理、军事、工业操控、电信等许多范畴。嵌入式体系有必要选用特别有用的实时操作体系,VxWorks正是一个具有高功用的实时操作体系,成为嵌入式体系操作内核的最佳挑选之一。跟着嵌入式体系在网络傍边的运用不断加强,具有多种数据通道的复合通讯形式显得列为必要。本文依据依据VxWorks的嵌入式体系关于数据通讯的不同要求,提出一个嵌入式体系复合通讯模型,研讨几种具有代表性的数据通讯办法,并论说在VxWorks下的完结办法及其一些关键技术。
1 嵌入式体系复合通讯模型的规划
嵌入式体系在操控范畴运用非常广泛,例如在工业操控傍边常常运用嵌入式体系作为中心操控机,完结信息收集、分体系监管、体系决议计划等等重要功用。硬件往往离不开软件的支撑。VxWorks操作体系是现在功用最全的、独立于处理器的嵌入式实时操作体系之一。考虑怎么依据VxWorks完结嵌入式体系的复合通讯办法是有意义的。因为此刻嵌放式体系现已不再是孤立体系,而是处于某种拓扑网络结构傍边,因而,有必采纳复合通讯形式以习惯体系扩展、集中操控和长途信息传输的需求。操控机应当具有优秀的体系总线、牢靠的操控网络、高速传输通道接口以及长途数据管道。归纳以上考虑,图1给出了一个操控机的复合通讯模型。
操控机本身选用VME总线规范,能够嵌入多块单板机,具有杰出的体系扩展性。为了习惯不同的通讯要求,外围有三种通讯接口。其间光纤通讯传输速率很高,合适作为大流量数据通道,例如信号处理机数据传输管道。串口通讯设备简略、本钱较低,传输速率适中且安全性高,能够作为长途数据通道。以太网则因为其极佳的增容性、安稳性,合适于局域网络操控体系。
2 复合通讯形式特色剖析
为了对以上复合通讯模型加以阐明,下面临片几种通讯形式的特色进行剖析。
(1)总线规范
现在常用的总线规范有多种,基中VME总线支撑多处理器体系,最多能够包容21块插件。地址总线32位,数据总线32位,数据传输速率能够到达80Mb/s。VME总线能处理7级中止,具有高速的实时呼应才能。VME总线选用主-从结构,主功用模块传输数据之间有必要先运用中心裁定器,也称为体系操控器,具有总线裁定功用。VME数据传输总线是高速异步并行的,模块间数据传输是经过连锁的握手信号完结的。具有高牢靠性,一起其模板结构具有杰出的抗震性,习惯较为恶劣的工作环境[1]。
(2)操控网络
操控网络一般选用局域网。因为TCP/IP协议是一个规范的企业网络协议,是比较完善的、公认的最有用的互联协议,因而现在盛行的操作体系都支撑TCP/IP协议,TCP/IP协议仍是个安稳的、对称的、支撑穿插渠道的Client/Server办法的结构,并为运用程序供给了规范接口,关于集中操控的嵌入式体系选用依据TCP/IP的网络通讯无疑是便利而且有用的。
(3)高速数据接口
现在来看,光纤通道作为高速数据通讯是最为有利的。它是一种运用光纤(苦口婆心铜缆)作为物理链路的高功用串行数据接口,支撑SCSI、IP等上层数据传输协议,具有牢靠性高、速度快和传输间隔的特色,可用来衔接大型机、服务器和存储设备以完结高速大容量的信息传输。关于别离的嵌入式硬件体系而言,选用光纤通道作为高速I/O数据接口无疑是一种很好的挑选。
(4)长途数据通道
因为操控机的长途数据传输需求较高的安全性,一起一般只需单路传输,假如运用光纤电缆显现本钱高而且不需求那么高传输的带宽,因而能够考虑运用串行口通讯。串行口在嵌入式体系傍边是一类重要的数据通讯接口。因为RS-422规范串行口通讯选用了双线传输,大大增加了抗共模搅扰的才能,最大数据传输速度能够到达10Mb/s,这关于长途数据交流具有极大的优势,因而可用于长途信息交流。
3 复合通讯办法的完结与关键技术
因为本文的评论与单板机出产商所供给的板级支撑包有关,而不同类型的单板机所供给的板级支撑包(BSP、ESP)也会略有不同,为了不失一般性一起具有必定先进性,本文选用英国Radstone公司出产的PPCx系列单板机作示例。PPCx系列单板机功用集成度高、扩展性强、功用安稳,能够增加多种外围存储设备、支撑高分辩显现,是一种抱负的单板机体系。
3.1 依据VME总线的DMA通讯办法
在VME总线上,每个单板机假如要拜访其它单板机的RAM,有必要通讯VME总线地址映射。因而,每块板上有两个地址译码器,一个用于VME总线地址→本地地址译码,而另一个用于本地地址→VME总线地址译码,这样就会存在多个不同的存储器地址映射。假如想要拜访某个单板机的RAM,需求知道该单板机的RAM本地址所映射成的VME总线地址,然后经过拜访VME总线地址映射到本身的本地地址而拜访到体系操控器,乃至能够将其当作本身的RAM地址。多处理器地址映射联系如图2所示。
综上所述,关于某一VME总线中的使命一块板而言,只需取得了它的本地地址到VME总线地址的映射联系,就能够从板外来拜访该板的RAM。VxWorks规范函数库sysLib傍边供给了函数sysLocaltoBusAddr(),能够直接取得本地地址的VME总线地址。这样,当时主机只需调用该函数取得本身RAM地址到VME地址映射,其它的主机就能够依据该映射得到的VME总线地址拜访该主机。因而,当需求关于外板的某些操控寄存器进行位元操作的进修,这种办法就显得特别重要:因为往往没有函数能够只是关于外板RAM的某个字节进行操作,更无法定位到位操作。
为了进一步进步数据传输速率,可运用PPC4A上的VME操控芯片Tundra中集成的DMA操控器。它支撑依据VME总线的DMA数据传输办法,而DMA是外存数据传输最有用的一种办法。具体步骤如下:
①装置DMA驱动程序,调用函数dmaDrv();
②树立DMA设备,调用函数dmaDevCreate();
③翻开DMA进行读写,调用函数open()、write()、read()。
DMA设备句柄便是一个相似于文件指针的数据类型,所以能够像一个规范数据操作来对待。敞开设备后即可调用文件读写规范函数进行读写操作。经过较为严厉的测验,DMA数据传输速率能够到达40Mb/s以上,而且不发生数据传输过错。
为了确保主机关于其它主机DMA传输数据的实时呼应,应当发生VME总线中止信号告诉该主机。当某个主机发送数据结束后,须调用VxWorks供给的函数sysBusIntGen ()t向VME总线发生一个等级为intLevel、中止号为intNum的中止信号。
接纳端主机事前树立一个与该等级中止信号对应的客户中止服务程序,并将该客户中止服务程序链接到所要求等级的中止号上,然后完结对其进行实时呼应。当主机接纳到归于自己的中止信号后,会马上主动调用该中止服务程序。这时可运用中止服务程序开释一个信号灯,经过该信号灯驱动相应的数据处理模块,然后完结实时操作。如下面的全程:
/*客户中止服务程序*/
void intHdlr(SEM_ID semId)
void intHdlr(SEM_ID semId)
{
/*开释信号灯*/
semGive(semId);
}
/*等候信号灯的处理模块*/
void processsModle(void)
{
/*等候信号灯*/
semTake(semld);
/*处理模块代码*/
…
}
VME总线共有7个中止等级,扫除体系运用的中止号,客户自定义中止号可从18设置到32。这样能够为足够多的主机设置中止服务程序,然后完结VxWorks操作体系下的多主机VME总线实时高速通讯。
3.2 串行口通讯
在VxWorks中,将I/O体系规划成为任何类型的设备供给一个简略、一致、独立于设备的接口,所以串行口通讯软件的规划和VME通讯具有相似之处。在VxWorks中,任何关于串行口的操作依然能够视为对一个文件的操作,而不用了解关于设备或程序驱动完结的细节。在串行口通讯软件的规划不中,运用RRCx的增强软件包ESP可对驱动成功后的串行口设备进行操作。体系首要调用ESP软件供给的esccDrv()装置串行驱动程序,随后调用esccDevCreate()将指定的串口设备增加到体系中,当串口初始化完结后,与DMA操作办法相似,在运用之前运用open()翻开相应串口,依据串口翻开时的读写标志,调用函数write()、read()对串口进行只读操作、只写操作或一起进行读写操作。
关于串口通讯,依然要关怀数据接纳的实时性。可选用中止办法,运用VxWorks供给的select函数的事情触发机制,将读串口的使命堵塞使其一向等候数据,当有数据来到的时分该使命会马上主动呼应,进步体系的实时性。
3.3 依据TCP/IP协议的网络通讯
网络通讯一般可经过套接口(socket)完结。VxWorks供给了规范的BSD socket调用,具有两种类型:Stream socket(全双工流类型)、Datagram sockets(数据摄类型)。前者支撑TCP协议,后者支撑UDP协议。任何一个使命都能够翻开一或多个socket,其它使命的socket可与之衔接。客户端程序首要调用socket()个函数发生用于与各分体系衔接的套接口,并为每个套接口回来一个ID号,然后初始化一个套接口结构体,为其赋上该ID号以及服务端的IP地址和端口号,并将具作为函数connect()的参数,调用connect()函数主动去衔接客户端。服务端则需调用bind()函数将本身IP和端口号绑定,以确保客户端正确辨认。为了确保服务器能够实时接纳客户端的数据,当服务端与客户端树立衔接之后,有必要嵌入循环,运用read()句子不断等候客户数据。一起客户端每次发送数据之后也应等候服务端回复,树立握手机制。一个完好的socket网络应该能够用图3来描绘。值得指出的是,read调用具有一个PEEK选项,即向接纳缓冲区勘探是否有数据而并不真实取出数据,依据它的回来值能够判别出网络的状况。这个功用适用于网络查错。
3.4 光纤通道
因为光纤通道(fibre channel)接口并非VxWorks本身具有的组件,因而,VxWorks内核上完结光纤通讯也需求加载相关的驱动程序;一起,主机也需装置光纤通讯适配器,然后经过光纤电缆衔接。下面仍以PPCx系列单板机为例来阐明。
这儿选用QLA2200作为光纤通道适栩器。QLA2200/66是Qlogic公司出产的、现在运用最为广泛的光纤通道适配器。它首要包含四个功用模块:高速RISC处理器,包含千兆位收发模块、通道操控、帧缓存等的FC接口,有三个通道PCI总线DMA操控器以及ISP2200A的外存储器。RRCx的ESP为该适配器QLA2200供给了驱动程序,支撑依据交流机、裁定环以及点对点等三种拓扑结构的SCSI、IP和低开支拜访(LLA)协议,其固件协议层结构如图4所示。
当VxWorks发动之后,需求调用QLA2200的初始化函数ql22Init(),该函数的功用是驱动PPCx主板上QLA2200的PCI板卡,包含SCSI、IP固件协议初始化。此刻,可在光纤通道上树立依据SCSI或IP协议的数据通讯形式;而LLA实践上一种不具有协议办理的点对点通讯形式,可节省很多体系开支,故称之为低开支办法。它能够树立一种相似于服务器/客户机的通讯机制,即服务端能够实时呼应客户端的数据恳求,但它相同缺少握手安全机制。因而,假如客户端接连发送两次大批量数据,将会因为服务器来不及接纳导致该两批数据首尾发生冲突,故需加以改进。LLA的服务器/客户机通讯机制是经过调用函数ql22laHookAttach()在服务端设备一个挂钩函数来完结的。每逢客户端向服务端发送数据,该挂钩函数将会马上主动呼应,因而,能够在挂钩函数当设置VxWorks音讯行列,将接纳帧缓存区中的数据取出。如下面的程序:
BOOL ql22LlaClientInputHook()
{…
/*将缓存区数据发送到服务端本地音讯行列傍边去*/
msgQsend(ServerQueue,ClientData,Length,NO_WAIT,0);
}
选用音讯行列接纳数据则是因为它具有音讯主动追加功用,能够确保数据在高速复制时不被掩盖。当传输结束后,服务端就能够将音讯行列傍边的数据取出来进一步处理。客户端则应当在每次发送数据结束之后等候服务端的答复,首到得到承认之后才能够进行下一步发送。因而,客户端有必要设备回复等候,这能够运用信号灯来完结。LLA具有很高的传输速率。依据测验,在施行了握手通讯机制后,传输速率可达50Mb/s以上,而且完结,体系开支很小,习惯于点对点的主机高速通讯。
4 定论
本嵌入式体系复合通讯形式具有多种通讯接口,可习惯不同的数据通讯需求。一起,因为VxWorks高效的实时性以及强壮的兼容性,使得复合通讯的完结变得愈加简单而且具有杰出的实时性和安全性。经过实践运转,体系内部各个模块运转安稳,软件的模块实时调度表明杰出,经长期的运转未发现通讯堵塞。该复合通讯形式可适用于工业操控、医疗等多方面,具有广泛的习惯性。