<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于MPC8270的MCC驅動設計

          基于MPC8270的MCC驅動設計

          作者: 時間:2016-09-12 來源:網絡 收藏

          MPC8270是廣泛應用于通信和網絡系統(tǒng)的一款通用處理器,具有強大的接口能力和多協(xié)議支持功能,非常適用于高端網絡和通訊設備,如路由器、電信交換機和基站等。MPC8 270多信道控制器(MCC)支持的(HDLC)協(xié)議是重要的數據鏈路層協(xié)議,通過E1/T1中繼傳輸HDLC數據包,是數據傳輸的重要方式。同時MCC還支持透傳模式,用來實現話音等重要業(yè)務的通信。如在E1線路上,把整個E1通道分成32個時隙,每個時隙分配64 kbps的帶寬,根據業(yè)務需要,可劃分一部分時隙帶寬做為數據業(yè)務通信,一部分做為話音業(yè)務通信。

          本文引用地址:http://www.ex-cimer.com/article/201609/303789.htm

          1 MPC8270的硬件體系

          MPC8270硬件模塊組成如圖1所示,主要由嵌入式G2_LE Core(MPC603e內核)、系統(tǒng)接口單元(SIU)和通信處理模塊CPM組成。G2_LE Core含16KB的指令緩存和16KB的數據緩存。系統(tǒng)接口單元(SIU)主要完成系統(tǒng)復位、啟動和初始化、中斷管理、時鐘配置、外部總線接口控制等功能。通信處理模塊CPM包括一個32位的RISC處理器(CP)、3個全雙工的快速串行通信控制器(FCC)、1個(MCC)、4個全雙工的串行通信控制器(SCC)、2個全雙工的串行管理控制器(SMC)、1個系統(tǒng)外設控制口(SPI)、1個串行接口(SI)、I2C總線控制器等。時隙分配器(TSA)可將SCC、FCC、SMC、MCC的數據復用到4個時分復用接口()。

          基于MPC8270的MCC驅動設計

          2 MCC工作原理

          MPC8270含有一個MCC2(通道號128—255),最多可支持128路獨立的HDLC或者透明傳輸通道,或者64路七號信令(SS7)通道,每一個通道都可獨立配置為不同于其它通道的工作模式,可獨立的發(fā)送和接收路由。MCC2與串行接口SI2相連接,通過配置SI2和SI2RAM路由表可以將數據中的時隙任意的路由到特定的MCC2通道。

          MPC8270的內核G2_LE和的數據通信是通過通信處理器模塊(CPM)來完成的。CPM根據控制寄存器的標志位來執(zhí)行數據發(fā)送或接收操作,操作完成后再向G2_LE內核的中斷寄存器寫入中斷值,G2_LE內核根據中斷值調用相應的中斷處理函數,由此完成數據交互過程。

          驅動程序配置MCC2的相關寄存器后,CPM就將MCC2通道對應的發(fā)送緩沖區(qū)內的數據復制到發(fā)送FIFO內,然后SI按外部幀頭和時鐘將發(fā)送FIFO內數據發(fā)送到TDM接口上?;蛘邔祿腡DM接口上接收下來并存入到MCC通道的接收FIFO內,然后CPM再將接收FIFO內的數據復制到MCC2通道對應的接收緩存區(qū)內。

          3 MCC驅動的設計與實現

          3.1 MCC初始化

          下面對MCC模塊初始化的具體步驟按順序做了描述,并對每個步驟值得注意的地方進行了說明:

          1)分配并初始化MCC操作所需的內存空間。

          MCC分配內存之前必須先理解MCC的數據結構,這也是初始化工作的難點,如圖2所示。

          基于MPC8270的MCC驅動設計

          數據結構的存儲區(qū)由MPC8270內部的DPRAM和外部的External Memory兩部分組成,DPRAM主要存儲參數,包括存儲通道參數Channel Parameter(固定起始地址0x0000),全局參數Global MCC2 Parameters(固定起始地址0x8800),外部通道參數Channel Extra Parameters(可選取未使用的DPRAM一段區(qū)域來存放),超級通道表Super channel Table(可選取未使用的DPRAM一段區(qū)域來存放);外部存儲區(qū)External主要存儲各BD對應的數據Buffer,中斷循環(huán)表RxIntCQ、TxIntCQ也存放在外部存儲區(qū),具體的區(qū)域需要根據使用的通道數、每個通道使用的BD的個數、每個BD對應的Buffer大小來確定。

          熟悉了數據結構就可以來申請數據緩沖區(qū)、緩沖區(qū)描述符及循環(huán)中斷表所需的存儲空間;同時設置DB(緩沖器描述符)基地址,全局參數基地址,通道參數基地址,分配外部存儲空間,收發(fā)BD的存儲空間,收發(fā)中斷向量表的存儲空間。

          2)關閉TDM通道。

          在進行其它寄存器配置之前必須先關閉TDM通道。

          3)啟動CP初始化收發(fā)參數。

          4)配置TDM使用的硬件接口和時鐘管腳。

          5)初始化循環(huán)中斷表。

          6)STOP CP收發(fā)。

          7)初始化SIRAM。

          Disable SI2GMR, 配置SI2AMR,SI2BMR,SI2CMR,SI2DMR,將所有路由表清0,最后配置路由表,注意:收發(fā)路由表空間各512字節(jié),4個Bank,每個Bank分前32入口,后32入口(可不用),每個入口2個字節(jié)。

          8)初始化收發(fā)BD的狀態(tài),設置BD狀態(tài),分配接收緩存區(qū)族。

          設置收BD狀態(tài)為空0x8000,設置中斷BIT位0x1000,最后一個BD需設置Wrap位;發(fā)BD狀態(tài)需設置Ready位0x8000:crc:0x0c00,Interrupt 0x1000,最后一個BD需設置Wrap位。

          9)初始化MCC全局參數。

          10)緩沖區(qū)描述符BD和數據緩沖區(qū)。

          11)所使用通道的MCC參數。

          通道參數的設置,需要清楚各個通道參數的地址范圍,每個通道64字節(jié)。通道參數中可使能需要的中斷,區(qū)分出通道的使用協(xié)議,比如是HDLC還TRAN等。

          12)初始化所使用通道的MCC外部參數。

          每個通道的外部參數8個字節(jié),用于指向此通道各BD的地址對應的外部Buffer地址。

          13)使能CP收發(fā),使能TDM。

          使能TDM是MCC正式工作的最后一步,如果工作需要重新配置MCC參數,也必須先停止TDM,完成參數修改后再啟動TDM。

          3.2 中斷處理

          中斷程序收到一個MCC通道產生中斷請求時,首先清除MCC中斷,獲取MCCE寄存器的中斷標志,然后根據MCCE[RINTx]和MCCE[TINT]的值來處理循環(huán)中斷表,中斷信號流程如圖3所示。

          基于MPC8270的MCC驅動設計

          3.3 接收數據

          MCC收到數據后將數據寫入外部已分配好的緩沖區(qū),然后通過中斷程序通知接收程序去接收數據。數據接收程序根據中斷帶來的參數通道號(MCN)和BD偏移量去找到相應的緩沖區(qū),并從緩沖區(qū)獲取數據,接收信號流程如圖4所示。

          3.4 發(fā)送數據

          數據發(fā)送函數首先判斷發(fā)送通道的狀態(tài),若允許發(fā)送則將需發(fā)送BD基地址指向需發(fā)送的數據緩沖區(qū)的基地址,然后設置發(fā)送標志啟動發(fā)送。通信協(xié)處理器(CPM)會自動完成數據從緩沖區(qū)到線路接口的發(fā)送。數據發(fā)送完成后通信協(xié)處理器會設置中斷標志,并由中斷處理程序通知數據發(fā)送完成,接收信號流程如圖5所示。


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();