基于MPC8280的MCC驱动设计与实现
2013-08-27赵勇李鑫吴慧
赵勇李鑫吴慧
(1中国电子科技集团公司第五十四研究所河北石家庄050081)
(2石家庄职业技术学院电气与电子工程系河北石家庄050081)
(3石家庄信息工程职业学院河北石家庄050035)
1 引言
MPC8280是Freescale公司推出的应用于通信系统的嵌入式通信处理器,具有非常灵活的一体化单元系统和外围通信控制器。MPC8280每个MCC可支持HDLC和透明传输或者SS7等多种协议功能。本文就是在多通道控制器MCC工作在7号信令协议模式时,利用MPC8280处理器的MCC的中断,并操作MCC相应的寄存器,来实现No.7信令的信号单元SU的接收和发送功能。
2 MPC8280处理器及MCC概述
2.1 MPC8280处理器体系结构
MPC8280是一款高性能通信微处理器,内部集成了高性能精简指令集微处理器和许多外围通信组件,广泛应用于高端电信和网络产品的设计开发[1]。MPC8280的体系结构[2]如图1所示,主要包括3个功能模块:嵌入式PowerPC架构的内核G2_LE、系统接口单元(SIU)模块和通信处理模块(CPM)。
图1 MP C8280体系结构框图
G2_LE内核提供了独立的16 KB指令缓存和16 KB数据缓存,以及数据和指令存储管理单元MMU,用于执行高层代码,完成外设的控制管理。SIU主要完成系统启动和初始化、CPU复位、中断处理、时钟配置、控制操作及外部系统总线管理等功能。CPM主要完成底层的任务和DMA控制,包括一个32位的精简指令集处理器,2个多通道控制器MCC,3个快速通信控制器FCC,4个串行通信控制器SCC,2个串行管理控制器SMC,一个串行外围设备接口SPI,一个I2C总线控制器等[3]。时隙分配器TSA完成路由选择和时分复用,将MCC、FCC、SCC和SMC等连接到物理层的TDM引脚上,将数据复用到8个TDM接口。
2.2 MCC的基本工作原理
MPC8280具有2个多通道控制器MCC1和MCC2,每个MCC可以支持128路独立的时分复用通道。每个MCC仅与一个串行接口SI相对应,并通过相应的SI模块连接到TDM接口。MCC的数据流可以通过SI的4个时分复用接口TDM中的任何一个进行数据传输,MCC1的通道(0-127)只允许连接到 SI1,MCC2的通道(128-255)只允许连接到 SI2[4],MCC的每一个通道的工作模式均可独立设置,收发关系也可以独立映射。通过对SI和SIRAM的合理配置可以建立TDM数据中的时隙和特定的MCC通道的映射关系(如TDMA1的第2个时隙到MCC1的第3个通道,TDMB2的第1个时隙到MCC2的第5个通道等)。
MPC8280的内核G2_LE和外部的通信是由CPM来完成。CPM根据相应的接口控制寄存器配置来执行数据发送或接收操作,操作完成后再向G2_LE内核的中断寄存器写入中断值。G2_LE内核根据中断值调用相应的中断处理函数,由此完成数据交互过程。
当SI的某个TDM被配置成包含MCC通道的时隙且TDM被使能,CPM就将MCC通道发送缓冲区内的数据复制到各指定通信控制单元发送FIFO内,然后SI在时钟驱动下将各指定通信控制单元的FIFO内数据发送到TDM口,或将数据从TDM接口上接收下来并存入到MCC通道的接收FIFO内,然后CPM再将接收FIFO内的数据复制到MCC通道的接收缓存区内。
CPM通过一系列与MCC相关的数据结构来实现对MCC通道FIFO的管理,其中全局参数(Global MCC Parameters)对MCC模块的全面状态进行管理,配置通道所用到的接收门限参数和寄存器基址。通道专用参数(Channel-Specific Parameters)用于设置MCC通道工作在HDLC、透明传输或者SS7协议模式时的具体参数配置,对MCC通道的FIFO进行管理。通道附加参数 (Channel Extra Parameters)主要用于设置单个通道发送缓存描述符(TxBD)表、接收缓存描述符(RxBD)表的基地址和指针,用于缓存描述符BD表的索引。
3 MCC驱动程序的设计
MCC多通道控制器驱动主要完成MPC8280 MCC多通道控制器的初始化,并为上层软件访问、调用提供与底层硬件无关的应用程序接口。具体内容包括MCC控制数据结构所需内存空间的分配及初始化、MCC操作所需的相关控制寄存器的初始化、MCC中断处理及MCC数据接收和发送的实现等关键技术。
3.1 MCC的初始化实现
MCC的初始化流程如图2所示。
图2 MCC的初始化流程
①分配并初始化MCC所需的数据缓冲区、缓冲区描述符BD及MCC中断表所需的存储空间;
②调用函数tMCCIntTable()初始化MCC循环中断表;
③初始化缓冲区描述符BD和数据缓冲区。前一半BD用作发送BD,后一半BD用作接收BD;
④初始化SI寄存器和SIRAM,将TDM的16时隙通过SI送到MCC通道上;
⑤初始化MCC通道的全局参数,全局参数位于双端口随机存储器DPRAM中,MCC1的偏移地址为0x8700,MCC2的偏移地址为0x8800[5];
⑥初始化MCC的通道附加参数,指明了各通道所用的收/发BD相对于BD基址的BD偏移数;
⑦初始化MCC的通道为7号信令通道,该信令通道参数基址为DPRAM的起始地址[6],一个SS7信令通道参数要占用2个HDLC通道参数的存储空间,即128个字节;
⑧为MCC配置并行I/O口,对所需的接口设置时钟和同步;
⑨配置系统接口单元SIU,设置MCC所需的相关中断并将MCC中断和中断处理函数相关联;
⑩使能TDM。
3.2 MCC数据的收发处理
⑴MCC的数据接收
MCC的数据接收是通过一个消息队列和中断处理函数相配合来完成的。MCC的数据接收处理过程如下:
①当MCC的某个通道接收到数据后会将相应寄存器的接收中断比特位置位;
②中断处理程序将收到的中断信息进行封装后发送到消息队列;
③数据接收任务从消息队列接收数据,然后根据MCC通道号调用相应的由用户安装的数据接收回调函数,最后由回调函数完成数据的处理。
⑵MCC的数据发送
数据的发送过程由通信协处理器完成。MCC数据发送过程如下:
①数据发送函数将要发送的数据从内存写入TxBD中缓存指针所指向的缓冲区,并将寄存器TxBD的相关状态位置位;
②设置相应的控制寄存器,由通信协处理器完成数据从缓冲区到TDM接口的发送;
③数据发送完成后通信协处理器设置MCC事件中断寄存器MCCE相应的RINT比特位;
图3 MCC中断处理流程图
④由中断处理程序通知数据发送函数数据发送已完成。
3.3 MCC中断处理
MCC中断处理模块工作在No.7信令工作方式下,处理来自MPC8260 MCC的中断,并将接收到的信号单元SU以消息形式上报给No.7信令MTP2软件,MCC中断处理单元软件流程如图3所示。
MCC中断产生后,首先根据MCC的事件寄存器判断是否收到数据,如果收到数据,从MCCPkt_T中保存的BD号开始,读取数据并发送给No.7信令MTP2软件,直到没有数据可读为止;如果出现异常,进行异常处理并再次开启中断以保证MCC的正常接收。
4 测试及结果分析
设备通过E1接口与固定网STM交换机互连,工作在No.7信令方式下,通过呼叫模拟器Abacus5000对设备进行10,000次话音呼叫测试,呼损率小于万分之四,满足话音呼叫能力测试要求。通过测试,验证了No.7信令工作方式下,利用MCC中断接收和发送的信号单元的可行性,大量的呼叫测试,验证了MCC驱动程序的可靠性和稳定性。
5 结束语
MPC8280是一种功耗低、通信处理能力强的处理器,利用MPC8280内部的多通道控制器MCC的大容量通信能力,可以比较容易地设计出信令通道、数据通道、协议转换器等应用。本文介绍了MPC8280内部的多通道控制器MCC的通信原理及驱动程序设计方法,对MCC在其他工作方式下的设计应用有一定借鉴作用。
[1]MP C8280 Power Q U I CC?II F a m il y Re f erence Manual[R].F reescale Inc,2005.
[2]Power Q U I CC II?F a m il y Hardware S p eci f ications[R].F reescale Inc,2006.
[3]杨小冬,王俊芳.基于MP C8280的MCC驱动设计[J].无线电工程,2012,42(9):61-64.
[4]闫宇博,张磊,彭来献.基于MP C8280多通道控制器驱动的研究与实现[J].微计算机信息,2010,76(23):177-179.
[5]李朋铜.嵌入式设计及通信设备开发详解—基于MP C82XX处理器[M].北京:机械工业出版社,2009.
[6]赵宇浩.基于MP C8280的网络通信平台的实现[J].电子技术,2010,26(6):58-59.