基于MPC8270的MCC驱动设计
MPC8270是广泛应用于通信和网络系统的一款通用处理器,具有强大的接口能力和多协议支持功能,非常适用于高端网络和通讯设备,如路由器、电信交换机和基站等。MPC8 270多信道控制器(MCC)支持的高级数据链路控制(HDLC)协议是重要的数据链路层协议,通过E1/T1中继传输HDLC数据包,是数据传输的重要方式。同时MCC还支持透传模式,用来实现话音等重要业务的通信。如在E1线路上,把整个E1通道分成32个时隙,每个时隙分配64 kbps的带宽,根据业务需要,可划分一部分时隙带宽做为数据业务通信,一部分做为话音业务通信。
本文引用地址:http://www.amcfsurvey.com/article/201609/303789.htm1 MPC8270的硬件体系
MPC8270硬件模块组成如图1所示,主要由嵌入式G2_LE Core(MPC603e内核)、系统接口单元(SIU)和通信处理模块CPM组成。G2_LE Core含16KB的指令缓存和16KB的数据缓存。系统接口单元(SIU)主要完成系统复位、启动和初始化、中断管理、时钟配置、外部总线接口控制等功能。通信处理模块CPM包括一个32位的RISC处理器(CP)、3个全双工的快速串行通信控制器(FCC)、1个多通道控制器(MCC)、4个全双工的串行通信控制器(SCC)、2个全双工的串行管理控制器(SMC)、1个系统外设控制口(SPI)、1个串行接口(SI)、I2C总线控制器等。时隙分配器(TSA)可将SCC、FCC、SMC、MCC的数据复用到4个时分复用接口(TDM)。
2 MCC工作原理
MPC8270含有一个多通道控制器MCC2(通道号128—255),最多可支持128路独立的HDLC或者透明传输通道,或者64路七号信令(SS7)通道,每一个通道都可独立配置为不同于其它通道的工作模式,可独立的发送和接收路由。MCC2与串行接口SI2相连接,通过配置SI2和SI2RAM路由表可以将TDM数据中的时隙任意的路由到特定的MCC2通道。
MPC8270的内核G2_LE和TDM的数据通信是通过通信处理器模块(CPM)来完成的。CPM根据控制寄存器的标志位来执行数据发送或接收操作,操作完成后再向G2_LE内核的中断寄存器写入中断值,G2_LE内核根据中断值调用相应的中断处理函数,由此完成数据交互过程。
驱动程序配置MCC2的相关寄存器后,CPM就将MCC2通道对应的发送缓冲区内的数据复制到发送FIFO内,然后SI按外部帧头和时钟将发送FIFO内数据发送到TDM接口上。或者将数据从TDM接口上接收下来并存入到MCC通道的接收FIFO内,然后CPM再将接收FIFO内的数据复制到MCC2通道对应的接收缓存区内。
3 MCC驱动的设计与实现
3.1 MCC初始化
下面对MCC模块初始化的具体步骤按顺序做了描述,并对每个步骤值得注意的地方进行了说明:
1)分配并初始化MCC操作所需的内存空间。
MCC分配内存之前必须先理解MCC的数据结构,这也是初始化工作的难点,如图2所示。
数据结构的存储区由MPC8270内部的DPRAM和外部的External Memory两部分组成,DPRAM主要存储参数,包括存储通道参数Channel Parameter(固定起始地址0x0000),全局参数Global MCC2 Parameters(固定起始地址0x8800),外部通道参数Channel Extra Parameters(可选取未使用的DPRAM一段区域来存放),超级通道表Super channel Table(可选取未使用的DPRAM一段区域来存放);外部存储区External主要存储各BD对应的数据Buffer,中断循环表RxIntCQ、TxIntCQ也存放在外部存储区,具体的区域需要根据使用的通道数、每个通道使用的BD的个数、每个BD对应的Buffer大小来确定。
熟悉了数据结构就可以来申请数据缓冲区、缓冲区描述符及循环中断表所需的存储空间;同时设置DB(缓冲器描述符)基地址,全局参数基地址,通道参数基地址,分配外部存储空间,收发BD的存储空间,收发中断向量表的存储空间。
2)关闭TDM通道。
在进行其它寄存器配置之前必须先关闭TDM通道。
3)启动CP初始化收发参数。
4)配置TDM使用的硬件接口和时钟管脚。
5)初始化循环中断表。
6)STOP CP收发。
7)初始化SIRAM。
Disable SI2GMR, 配置SI2AMR,SI2BMR,SI2CMR,SI2DMR,将所有路由表清0,最后配置路由表,注意:收发路由表空间各512字节,4个Bank,每个Bank分前32入口,后32入口(可不用),每个入口2个字节。
8)初始化收发BD的状态,设置BD状态,分配接收缓存区族。
设置收BD状态为空0x8000,设置中断BIT位0x1000,最后一个BD需设置Wrap位;发BD状态需设置Ready位0x8000:crc:0x0c00,Interrupt 0x1000,最后一个BD需设置Wrap位。
9)初始化MCC全局参数。
10)缓冲区描述符BD和数据缓冲区。
11)所使用通道的MCC参数。
通道参数的设置,需要清楚各个通道参数的地址范围,每个通道64字节。通道参数中可使能需要的中断,区分出通道的使用协议,比如是HDLC还TRAN等。
12)初始化所使用通道的MCC外部参数。
每个通道的外部参数8个字节,用于指向此通道各BD的地址对应的外部Buffer地址。
13)使能CP收发,使能TDM。
使能TDM是MCC正式工作的最后一步,如果工作需要重新配置MCC参数,也必须先停止TDM,完成参数修改后再启动TDM。
3.2 中断处理
中断程序收到一个MCC通道产生中断请求时,首先清除MCC中断,获取MCCE寄存器的中断标志,然后根据MCCE[RINTx]和MCCE[TINT]的值来处理循环中断表,中断信号流程如图3所示。
3.3 接收数据
MCC收到数据后将数据写入外部已分配好的缓冲区,然后通过中断程序通知接收程序去接收数据。数据接收程序根据中断带来的参数通道号(MCN)和BD偏移量去找到相应的缓冲区,并从缓冲区获取数据,接收信号流程如图4所示。
3.4 发送数据
数据发送函数首先判断发送通道的状态,若允许发送则将需发送BD基地址指向需发送的数据缓冲区的基地址,然后设置发送标志启动发送。通信协处理器(CPM)会自动完成数据从缓冲区到线路接口的发送。数据发送完成后通信协处理器会设置中断标志,并由中断处理程序通知数据发送完成,接收信号流程如图5所示。
评论