你的位置:大电流电感 > 交流中心

SHARC阵列板的VMEBus通信分析与应用

2020-09-21 08:12:22      点击:
上一篇:无线自组织应急通信网络的多信道介质访问控制

该嵌入式系统基于标准的VME总线结构,SHARC处理器为ADSP21060,其时钟频率为40MHz,晶体振荡器的频率为25.6MHz。每一个 SHARC处理器都支持高达240MB/s的高速通信。对SHARC的软件开发采用Apex(Advanced parallel excutive),即高级并行执行指令,由Signal Spectrum公司开发的SHARC指令高级开发语言。 Apex提供了性能优良的、灵活的并行处理器指令集,以及对DSP硬件的便捷访问功能。同时,Apex还提供了基于VME总线的通信机制,允许从主机下装 SHARC代码到客户机,并且具备在主机和客户机之间进行数据传输的功能。本文采用美国Motorola公司生产的单板机MVME2700,中央处理器 PowerPC MPC750作为Melbourne的前端通信控制器。MVME2700是一个高度集成计算机系统,适用于要求高度实时控制管理的系统环境。它所使用的操作系统就是嵌入式的实时操作系统中的佼佼者VxWorks。VxWorks是具有高性能的实时操作系统内核。该内核使用中断驱动、抢占优先级的任务调配机制,这种机制使得VxWorks具有高性能的实时特性。MVME2700的通信控制程序通过Tornado软件在Windows环境下进行程序开发。 2 SHARC的VME总线通信机制分析 如果要实现MVME2700对SHARC的实时控制,则必须了解SHARC是如何基于VME总线对外访问的。由于MVME2700对SHARC阵列板起着程序下载、引导和控制作用,在Apex开发环境下视其为主机,而SHARC阵列板则称为目标机。对于SHARC阵列板而言,一般只有根部SAHRC处理器参与VME总线通信。Apex支持两类主机与SHARC系统进行VME通信的方式:一类方式是在主机应用程序和SHARC阵列板根部处理之间进行的较低层的数据块拷贝,类似于简单的本地数据拷贝标准C程序当中的memcpy;另一类则以客户端/服务端交互的形式在主机与SHARC之间建立通信,利用中断实现同步,并且可以多路传输。下面对这两种方式加以分析。 2.1 同存块拷贝方式 Apex提供主机与SHARC目标机的任何内存地址拷贝数据的函数:cpy_to_SHARC()和cpy_from_SHARC()。给出SHARC阵列板上SHARC-0(根部处理器)的本地地址和主机上的本地址,即可进行内存块拷贝。本质上,这是一种基于VME总线的共享内存DMA方式,函数 cpy_to_SHARC()和cpy_from_SHARC()自动将主机与目标机的本地址释放成VME总线地址,通过共享内存进行数据传输,因此可以不必关心低层具体的VME总线映射关系,而将重点在上层数据传输。不过,某些情况下需要获得VME映射关系的时候,例如主机需要通过VME总线对 SHARC的控制寄存器进行操作,此时应当利用VxWorks的函数sysLocaltoBusAddr()来主动获得该寄存器的VME地址映射,对该 VME地址进行位操作。要做到这一点,在NT操作系统下则显得要麻烦得多。由于SHARC与MVME2700的数据拷贝通过VME总线传输,其数据传输速率是非常高的;同时,由于采取了DMA方式,几乎不需要CPU介入,从而可提高程序执行效率。 2.2 客户/服务的阻塞交互方式 该方式要求每次客户端申请获得服务的时候,向系统提供一个服务http://www.dgfpc.com/电感厂家请求。该请求包括标签和一同发送的数据包,其结构体数据格式如下: typedef struct{ INT32 tag; /*服务标签*/ INT32 param; /*客户服务程序参数*/ INT32 data; /*数据包指针*/ INT16 length; /*数据包长度*/ INT16 max_len; /*返回包的最大长度*/ } Server_packet 客户端提完申请之后就会进入阻塞状态等待服务端的回答。服务端截获该申请之后,根据服务标签启动相应的服务模块,完成相应的服务之后向客户端发送回复,此时客户端才能停止阻塞恢复运行,如图2所示。申请和回复这两种数据包具有同样的结构,每次最大数据传输量不能超过4KB。客户端与服务端之间的实时响应由系统发送中断自动完成,不需要人为干预,具有较高的实时性和安全性。 该方式实质是构架于VME总线中断之上的。在客户端发送申请包的时候包含了一个VME总线中断,由该中断驱动服务端的服务循环模块,然后服务循环模块再调用相应的客户服务程序,从而实现两路通信握手。该方式将底层的VME总线中断驱动机制封装起来,在上层建立了规范的服务循环模块并且允许添加个人服务程序,对于软件的规范与维护有利。当然,如果需要更高的实时性,可以不采用该方式,而是由客户端直接发送VME总线中断来实现握手,但必须对于底层的中断寄存器直接操作,不易维护。需要指出的是,对于具有拓扑结构的SHARC芯片组而言,只能由根端SHARC处理器作为客户端,内存拷贝也只能在根部 SHARC处理器与服务端处理机之间进行。