当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于MPC8280 多通道控制器驱动的研究与实现

      摘要:介绍了嵌入式PowerPC 处理器MPC8280 和多通道控制器的主要特征。MPC8280 具有8 个TDM 接口,每个TDM 均支持E1/T1 接口。多通道控制器可以使MPC8280 最多支持256路独立的HDLC 或者透明传输通道。通过多通道控制器可以方便地实现时分复用数据的复用和解复用。本文重点研究了多通道控制器的数据结构组织方式及驱动程序的实现过程,给出了主要功能函数的设计流程,并在VxWorks5.5 操作系统上进行了综合测试。

1 MPC8280 处理器特性及MCC 概述

MPC8280 是一款集成了高性能的PowerPC? RISC 微处理器和诸多外围通信控制器的多用途通信处理器,在通信和网络系统有较为广泛的应用。

MPC8280 模块组成如图1 所示。其中,G2_LE 内核是MPC603e 微处理器的嵌入式版本,具有16KB 的指令缓存和16KB 的数据缓存;系统接口单元SIU 主要完成系统复位、中断管理、时钟配置、总线接口及内存控制等功能;通信处理模块CPM 包括一个32 位的RISC 处理器CP,三个全双工的快速串行通信控制器FCC,两个多通道控制器MCC,四个全双工的串行通信控制器SCC,两个全双工的串行管理控制器SMC,SPI 接口,I2C 总线控制器等。时隙分配器可将SCC、FCC、SMC、MCC 的数据复用到八个时分复用接口TDM。


图1 MPC8280 模块结构图

MPC8280 有两个具有时隙分配器的串行接口,分别为SI1 和SI2。每个SI 有四个时分复用接口。SI1 和SI2 分别对应为TDMa1,TDMb1,TDMc1,TDMd1 和TDMa2,TDMb2,TDMc2,TDMd2。SI 可以根据SIRAM 的配置将TDM 的某一时隙路由到特定的接口(如TDMa1 的第2个时隙到MCC1 的第3 个通道,TDMb2 的第1 个时隙到FCC1 等)。
[!--empirenews.page--]
一个MCC 可以支持最多128 路独立的时分串行通道。MPC8280 具有两个MCC,每个MCC连接到一个SI。MCC 的数据流可以通过SI 的四个时分复用接口TDM 中的任何一个进行数据传输。

一个MCC 中的128 个通道以32 个为一组连接到某一个TDM 接口上。MCC1 的通道(0-127)只能连接到SI1 上,MCC2 的通道(128-255)只能连接到SI2 上。MCC 的每一个通道都可独立配置为不同于其它通道的工作模式。通过配置SI 和SIRAM 可以将TDM 数据中的时隙路由到特定的MCC 通道。

每个MCC 都具有以下特性:最多达128 路独立的HDLC 或者透明传输通道,或者64 路SS7 通道;独立的发送和接收路由;每一通道都可支持HDLC、透明传输或者SS7 协议。

2 MCC 操作概述

MPC8280 的内核G2_LE 和外部的通信是由CPM 来完成。CP 根据相应的接口控制寄存器配置来执行数据发送或接收操作,操作完成后再向G2_LE 内核的中断寄存器写入中断值。

G2_LE 内核根据中断值调用相应的中断处理函数,由此完成数据交互过程。

每一个MCC 能通过相应的SI 连接到TDM 接口上。一旦SI 的某个TDM 被配置为包含有MCC 通道的时隙并且TDM 开始工作,CP 就将MCC 通道发送缓冲区内的数据复制到发送FIFO内,然后SI 在时钟驱动下将MCC 通道的发送FIFO 内数据发送到TDM 接口上,或者将数据从TDM 接口上接收下来并存入到MCC 通道的接收FIFO 内,然后CP 再将接收FIFO 内的数据复制到MCC 通道的接收缓存区内。

CP 通过一系列与MCC 相关的数据结构来实现对MCC 通道FIFO 的管理。MCC Globalparameters 管理着MCC 模块的各个通道,以及操作这些通道所用到的门限参数和基址指针的配置。每个通道还有一组channel-specific parameters 和channel-extra parameters,包含了该通道的协议状态信息和指向该通道的接收及发送缓存描述符的指针。

Channel-specific parameters 会因该通道所工作的协议不同而作不同的解释。如果TDM的配置含有MCC 超通道(super-channel)时隙的话还要用到超通道表(Super-channelTable)。

● global Parameters MCC1 的global parameters 适用于通道0—127,MCC2 的global parameters 适用于通道128—255,分别位于相对于DPRAM 基址偏移0x8700 和0x8800 处。

●Channel-specific Parameters 这些参数仅局限于相应的MCC 通道,位于相对于DPRAM 基址偏移64×CH_NUM 处。

● Channel Extra Parameters 包含相应通道缓存描述符的基址和指针。位于相于对DPRAM 基址偏移XTRABASE+8×CH_NUM 处。其中XTRABASE 是MCC Global Parameters 之一。

● Super-channel Table 仅当在SIRAM 中配置了超通道时使用。位于相对于DPRAM基址偏移SCTPBASE 处。其中SCTPBASE 是MCC Global Parameters 之一。由于我们的应用场合未使用到超通道,所以未对该参数进行配置。

● BD Tables 位于外部存储器。接收通道的缓存描述符表位于相对于DPRAM 基址偏移MCCBASE+8×RBASE 处。发送通道的缓存描述符表位于相对于DPRAM 基址偏移MCCBASE+8×TBASE 处。MCCBASE 是Global Parameters 之一,RBASE/TBASE 是Channel Extra Parameters之一。

● Interrupt Queues 位于外部存储器。共有一个发送中断表和一至四个接收中断表。TINTBASE 指向发送中断表,RINTBASE指向接收中断表。TINTBASE 和RINTBASE均为Global Parameters。

3 MCC 驱动的设计与实现

该驱动运行在嵌入式操作系统VxWorks5.5 之上,开发环境为Tornado 2.2.1 for PPC。[!--empirenews.page--]

MCC 驱动主要分为以下几部分:

3.1 MCC 驱动初始化

主要完成 MCC 模块的初始化,具体内容包括:为MCC 控制数据结构分配内存,并根据初始化参数初始化数据结构的相关内容;初始化MCC 相关的控制寄存器;创建接收消息队列以及相应接收处理任务;最后启动MCC 进行数据收发。

(1) 分配并初始化MCC 操作所需的内存空间。

申请数据缓冲区、缓冲区描述符及循环中断表所需的存储空间。由于MCC 通过DMA 与主存进行发送数据和接收数据的交换,所以内存分配时必须要考虑缓存一致性问题,否则程序运行时可能出现较为严重的错误。VxWorks 提供了一个函数cacheDmaMalloc,可以为DMA 设备或者驱动程序分配缓存安全的内存空间。

(2) 初始化循环中断表。

将循环中断表中的条目初始化为 0x00000000,并将最后一个条目初始化为0x40000000以标记结束位置。

(3) 配置SI 寄存器和SIRAM。

设置每组MCC 通道所使用的TDM,并且配置SIRAM 以建立TDM 时隙和MCC 通道的对应关系。

(4) 初始化MCC Global Parameters。主要包括:

● MCCBASE MCC 基址指针,指向位于外部存储器的缓冲区描述符表,为最大512KB 的连续空间。

● MRBLR 最大接收缓冲区长度。必须是8 整数倍。

●GRFTHR 全局接收帧门限。用于减少由于频繁产生中断而造成的开销。

● GRFCNT 全局接收帧计数。初始化为GRFTHR。

● TINTBASE 多通道发送循环中断表基址指针。

● TINTPTR 指向可用的发送循环中断表条目。初始化为TINTBASE。

● SCTPBASE 指向超通道表。

● RINTBASE 多通道接收循环中断表基址指针。

(5) 初始化缓冲区描述符BD 和数据缓冲区。

BD 表位于外部存储器,其组织结构如图2 所示。


图 2 MCC 缓冲区描述符结构组织图

(6) 安装数据接收回调函数。

(7) 初始化所使用通道的MCC Channel-specific Parameters。

(8) 初始化所使用通道的MCC Channel-extra Parameters。

(9) 如使用了超通道则初始化Super-channel Table。

(10) 配置系统接口单元SIU,根据需要设置与MCC 相关的中断并安装中断处理函数。

(11) 配置TDM 所用到的并行接口和时钟信号。

(12) 执行MCC INIT 命令。

(13) 使能TDM。
[!--empirenews.page--]
3.2 中断处理

当一个MCC 通道产生中断请求时,CP 将中断信息写入循环中断表,然后修改T/RINTPTRR并设置MCCM 寄存器中相应的TINT 或者RINTx 比特。当MCC 中断到达内核后由内核调用中断处理函数。中断处理函数首先清除中断,然后根据MCCE[RINTx]和MCCE[TINT]的值来处理相应的循环中断表。

3.3 接收数据

数据接收程序通过一个先进先出的消息队列和中断处理程序相配合来完成数据的接收。当MCC 的某个通道接收到数据后会设置相应的中断事件比特位。之后中断处理函数将收到的数据进行封装后发送到消息队列。数据接收任务从消息队列接收数据,然后根据 MCC 通道号调用相应的由用户安装的数据接收回调函数。最后由回调函数完成数据的处理。

3.4 发送数据

数据的发送过程由通信协处理器完成。数据发送函数将所发送的数据复制到所使用通道的缓冲区,然后设置相应的控制寄存器,由通信协处理器完成数据从缓冲区到线路接口的发送。数据发送完成后通信协处理器设置中断寄存器MCCE 相应的RINT 比特位。并由中断处理程序通知数据发送函数数据发送已完成。

4 结束语

该驱动程序在基于MPC8280 处理器的VxWorks5.5 操作系统上进行了测试。MCC 通道工作在Transparent 模式下,对多种数据模式进行长时间的数据收发表明该驱动能较稳定地运行。

由于该驱动的中断处理函数检查所有循环中断表的条目并将收到的数据从 MCC 通道的数据缓存发送到消息队列,由此引入了较大的处理延迟,在数据量较大时甚至有可能会造成数据丢失。改进的关键在于中断处理函数和数据接收函数的配合。作为一种改进方法可考虑在中断处理函数内仅执行那些必须的操作,如清除中断,重新设置相关寄存器参数等。将数据处理放在另外一个单独的任务中去执行,并尽量减少数据搬移次数,优化所执行的操作等。最终在程序运行的速度和所完成的功能之间作合适的折中,从而获得所需的性能。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

雀巢公司(Nestle)表示,已经同意从星巴克(Starbucks Corp)手中收购Seattle's Best Coffee品牌,以加强该公司在美国的咖啡业务。雀巢公司是雀巢咖啡(Nescafe)和Nespresso...

关键字: TTL ST SE AFE

南京2022年10月19日 /美通社/ -- 10月16日是第42个世界粮食日,今年世界粮食日的主题是"不让任何人掉队,更好生产、更好营养、更好环境、更好生活",向全社会倡导爱惜粮食,拒绝浪...

关键字: 西门子 SE OS 可持续发展

强生公司(Johnson & Johnson)公布最近结束的季度销售额和利润实现增长,即使美元走强和劳动力成本上升削弱了业绩。这家保健用品公司周二下调了全年销售指引,因美元相对于全球其他货币的上涨带来的持续影响。...

关键字: JOHNSON SE OS

为增进大家对控制器的认识,本文将对影响控制器可靠性的因素以及控制器的常见故障和维修方法予以介绍。

关键字: 控制器 指数 集成电路

为增进大家对控制器的认识,本文将对温度控制器的分类以及温度控制器的功能予以介绍。

关键字: 温度控制器 指数 控制器

为增进大家对控制器的认识,本文将对控制器结构类异常以及常见的几种电机控制器予以介绍。

关键字: 控制器 指数 电机

据业内信息,近日ADM的一份内部报告显示,ADM正在计划降低其锐龙 7000 CPU的生产计划。现阶段全球市场PC的低迷和销量下滑,再加上AM5平台整体反响不佳等等一系列原因导致ADM采取这一行动计划。

关键字: PC ADM 锐龙 7000 CPU

阿布扎比和沙特正在权衡,是否在瑞信(Credit Suisse)股价低迷之际,对该行的投资银行和其他业务进行投资。阿联酋和沙特在分别探索通过各自的主权基金,例如阿布扎比穆巴达拉发展公司和沙特公共投资基金(PIF)进行潜在...

关键字: MICHAEL UI SE PI

摩根大通(JPMorgan Chase)首席执行官戴蒙(Jamie Dimon)预测,美国经济可能在明年陷入衰退。他警告称,经济低迷可能在信贷市场引发“恐慌”,令美国股市价值再蒸发20%。花旗集团(Citigroup)首...

关键字: CE SE MORGAN GROUP

据全球最大石油生产商沙特阿美(Saudi Aramco)称,全球石油市场依然紧张。对于一个仍然严重依赖化石燃料的世界来说,这不是一个好兆头。沙特阿美CEO Amin Nasser表示,如今闲置产能非常低。如果亚洲重新开放...

关键字: NAS RAM SE CE

嵌入式软件

15715 篇文章

关注

发布文章

编辑精选

技术子站

关闭