微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于MPC8270的MCC驱动设计

基于MPC8270的MCC驱动设计

时间:09-12 来源:互联网 点击:

MPC8270是广泛应用于通信和网络系统的一款通用处理器,具有强大的接口能力和多协议支持功能,非常适用于高端网络和通讯设备,如路由器、电信交换机和基站等。MPC8 270多信道控制器(MCC)支持的高级数据链路控制(HDLC)协议是重要的数据链路层协议,通过E1/T1中继传输HDLC数据包,是数据传输的重要方式。同时MCC还支持透传模式,用来实现话音等重要业务的通信。如在E1线路上,把整个E1通道分成32个时隙,每个时隙分配64 kbps的带宽,根据业务需要,可划分一部分时隙带宽做为数据业务通信,一部分做为话音业务通信。

1 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外部参数。

每个

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top