• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 测试测量 > 技术文章 > 基于HPI的双处理器通信接口设计

基于HPI的双处理器通信接口设计

录入:edatop.com    点击:

  1引言

  许多嵌入式系统的设计不是靠单一的处理器完成所有的任务,而是采用ARM+DSP构成的双处理器结构。其中ARM作为主处理器完成整个系统的控制与网络数据的实时传输等功能;DSP作为协处理器,受ARM控制,完成媒体信号处理算法或自动控制算法等密集型计算的功能。ARM与DSP之间数据传输的速率与准确性决定整个嵌入式系统的性能。因此,双处理器之间的通信接口的设计是非常关键的问题。常用的接口主要有双端口RAM、基于FPGA的高速FIFO以及主机接口HPI。前两种接口都需要额外的硬件支持,占用了系统资源,而HPI是DSP芯片内部提供的主机接口,用以同主机构建主从式系统。主机通过HPI接口可以访问DSP的全部存储空间和地址空间映射的外设,从而减少了额外的硬件开销。

  2系统结构

  整个系统的基本单元为ARM处理器、DSP处理器以及外围的多媒体信号采集模块和网络接口模块,可作为视频监控系统和网络会议系统的平台。ARM芯片选用Intel公司的PXA255,该芯片适合处理控制代码,实现通话协议、网络数据交互等功能。DSP芯片选用TI公司的TMS320DM642,该芯片内部提供了32位并行主机接口HPI,具有高速实时数据处理的功能,适合于实现媒体信号处理的算法。系统结构图如图1。

  3 HPI硬件平台设计

  DSP芯片TMS320DM642的HPI接口信号线包括32位数据总线HD[31:0]、读写选择信号线HR/W、地址选通输入信号线HAS、就绪信号线HRDY、发送中断信号线HINT、2根访问模式选择信号线HCNTL[1:0]、3根片选信号线HCS、HDS[1:0]。硬件连接示意图如图2:

  址寄存器HPIA以及数据寄存器HPID的分别访问。HCS、HDS1、HDS2共同构成片选信号,最终的HPI使能信号是HDS1与HDS2异或后再与HCS进行与非运算的结果,因为HDS1与HDS2分别连接了ARM端的读使能与写使能,读操作和写操作不能同时进行,因此必须对两个信号进行异或运算,只能是其中之一有效,并且片选HCS有效时,HPI才能使能。

  4 ARM部分软件设计

  ARM芯片PXA255内部软件开发基于Linux操作系统(2.4.19版本)。首先要创建一个新的HPI软件模块,在操作系统内核中注册,这样才能被操作系统内核调用。执行函数pxa2xx_hpi_iNIt(),即可完成软件模块的注册与初始化,初始化主要的主要作用是为程序中的变量、结构体请求指定的I/O内存、对每个信号指定相应的GPIO管脚[2]。HPI驱动模型提供的接口函数如下:

  static struct file_operations hpi_fops =

  {

  owner: THIS_MODULE,

  read:pxa2xx_hpi_read, //读操作

  write :pxa2xx_hpi_write, //写操作

  open:pxa2xx_hpi_open, //打开设备

  release:pxa2xx_hpi_release, //关闭设备

  fasync:pxa2xx_hpi_fasync, //异步通知

  }; //接口函数

  其中pxa2xx_hpi_open()函数完成内存空间初始化、HPI中断使能、中断处理程序的初始化,将初始化的值传递给内核。相反pxa2xx_hpi_release()函数中释放内核中初始化的内容,关闭中断处理程序。下面将详细介绍异步通知模块pxa2xx_hpi_fasync()、接收模块pxa2xx_hpi_read()、发送模块pxa2xx_hpi_write()。

  4.1异步通知模块pxa2xx_hpi_fasync()

  异步通知机制用在数据接收的过程。当接收进程执行长的循环计算,但同时又需要尽可能快的处理输入数据,则应该在新数据可用时立即知晓并处理。通过异步通知,应用程序可

  以在数据可用时收到一个异步信号,而不需要不停的使用轮询方式。类似信号量的作用[2]。Linux对于异步通知有通用的方法,基于两个函数。函数原型如下:

  Int fasync_helper( int fd, struct file *filp, int mode, struct fasync_struct **fa );

  Void kill_fasync( struct fasync_struct **fa, int sig, int band );

  模块被OPEN时,file结构体中的FASYNC标志位默认是清空的,当该文件的FASYNC被修改时,调用fasync_helper函数便从相关的进程中增加该文件。接着,当数据输入时,使用kill_fasync函数通知相关的进程,完成接收操作。

  4.2 数据接收模块与发送模块

  数据接收和发送模块分别由函数pxa2xx_hpi_read()和pxa2xx_hpi_write()执行。

  数据接收模块负责响应DSP发给ARM的中断信号,接收DSP发送到ARM的数据。程序模块分为上半部和底半部,上半部为中断处理程序,以异步通知的方式响应HINT中断信号,同时激活底半部程序。底半部程序以Tasklet机制完成数据搬移的操作。将程序分为上半部和底半部,可以减小中断处理程序的工作量,将数据搬移这种耗时的操作交给底半部完成,保证中断处理程序尽可能快的返回,大大提高了程序运行效率。具体过程为首先接受数据包头并校验,如果校验有效则根据包头中的长度信息从HPIA的地址中读取相应长度的数据,同时清除标志位并清中断。

  数据发送模块负责将数据送入DSP,并向DSP发出中断信号。具体过程为首先判断标志位是否清空,若清空则向发送缓冲区写入数据,同时向DSP发送中断信号。

  5 DSP部分软件设计

  DSP芯片TMS320DM642内部软件开发基于DSP/BIOS操作系统,用于完成任务调度管理、硬件中断管理等功能。DSP的功能模块也分为数据接收和数据发送两个模块,两个模块以任务的方式运行,事先要在BIOS操作系统中注册,同时还要在BIOS中注册一段HPI中断服务程序ISR,用以触发数据接收模块[1]。

  5.1 HPI中断服务程序HWI_HPI()

  该模块用于响应ARM向DSP发送的中断信号DSPINT,在程序中释放信号量SEM_recv,以此来触发数据接收模块。程序代码如下:

  void HWI_HPI(Uint32 Data, Uint32 ID)

  {

  SEM_ipost(&SEM_recv); //释放信号量

  IRQ_clear(ID); //清空中断向量表中对应的标志位

  }

  5.2 数据接收模块与发送模块

  数据接收模块以任务的方式运行,由中断服务程序触发,负责接收ARM送往DSP的数据。首先判读信号量,如果大于0 ,则读取数据包头并进行包头校验;如果校验正确,说明是有效数据,从接收缓冲区读取相应长度的数据到接收缓冲区,同时清空接收缓冲区标志位,准备接收下一帧数据,清除中断位。

  数据发送模块也以任务的方式运行。首先读取发送缓冲区标志位;如果标志位为0,则说明ARM完成了上一帧数据的接收,可以发送新一帧数据;将有效数据打包,拷贝至发送缓冲区;向ARM发送中断信号HINT。

  6 测试结果与应用

  6.1 测试环境

  测试环境为虚拟机 Fedora 7和CCS2.20,分别运行ARM软件和DSP软件。

  双方同时运行接收与发送模块,每帧数据量为10KByte,同时向对方周期性的发送有规律的数据,并同时实时检测接收的数据,结果显示在在周期高于1ms的前提下,可以保证双方数据传输准确无误。

  根据以上测试结果,HPI接口的传输速率可达到10MByte/s。

  6.2 应用模型

  现有的多媒体系统中,语音信号的数据传输率在8K-48K之间不等,经过H.264或MPEG4等算法压缩过的视频信号传输率也只有1M左右。根据以上的测试结果,10MByte/s的数据率完全可以满足多媒体系统中的媒体信号传输指标。用PXA255完成网络数据传输、VOIP通话协议(如SIP)以及媒体数据实时传输协议等功能,DM642完成音频/视频采集和播放以及音频/视频的多媒体信号处理压缩算法的实现。这样的双处理器通信系统可以用于网络视频会议功能。

  定义数据帧结构体如下:

  typedef struct MSG_TYPE_Tag //消息结构体

  {

  Uint8 byType; //数据类型

  Uint8 byCh; // 通道号

  Uint8 byCmd; // 命令类型

  Uint8 byKey; // 按键键值

  Uint16 wLen; // 消息数据长度

  Uint8 byData[MSG_DATABUF_LEN]; // 消息数据

  }MSG_ TYPE, *pMSG_TYPE;

  数据帧结构体MSG_TYPE结构体表示了数据帧的信息,byType表示一帧数据的类型如音频、视频、控制信令等;byLen表示有效数据长度;byCh表示数据通道号,用以区分多方会议时不同参与方的媒体信号;byData[MSG_DATABUF_LEN]为有效的语音或视频信号;byCmd表示具体的命令,如振铃、来电显示、摘机、挂机、忙音、按键等,这样就可实现网络电话会议的各种信令。

  7 结束语

  ARM+DSP的双处理器结构已经广泛的应用到了通信终端、网络电话、视频传输、视频会议、高速图像采集与处理等领域中。双方之间通信机制的设计对传输效率有着至关重要的影响。HPI接口的并行性及其内部时序逻辑的严密性使得双处理器之间的通信可以在保证传

  输速率的前提下不影响传输的准确性。随着ARM处理器指令集的日益完善、控制功能的逐步增强以及DSP处理器指令周期的减小、密集型计算能力的增强,基于HPI的双处理器通信机制将得到更为广泛的应用。

 

点击浏览:矢量网络分析仪、频谱仪、示波器,使用操作培训教程

上一篇:特定人语音识别技术在汽车控制上的应用
下一篇:机器人遥操作网络通信平台的设计

微波射频测量操作培训课程详情>>
射频和天线工程师培训课程详情>>

  网站地图