屈丹
(中國電子科技集團(tuán)公司第三十研究所 四川 成都610041)
MPC8270是廣泛應(yīng)用于通信和網(wǎng)絡(luò)系統(tǒng)的一款通用處理器,具有強(qiáng)大的接口能力和多協(xié)議支持功能,非常適用于高端網(wǎng)絡(luò)和通訊設(shè)備,如路由器、電信交換機(jī)和基站等[1]。MPC8270多信道控制器 (MCC)支持的高級數(shù)據(jù)鏈路控制(HDLC)協(xié)議是重要的數(shù)據(jù)鏈路層協(xié)議,通過E1/T1中繼傳輸HDLC數(shù)據(jù)包,是數(shù)據(jù)傳輸?shù)闹匾绞絒2]。同時(shí)MCC還支持透傳模式,用來實(shí)現(xiàn)話音等重要業(yè)務(wù)的通信。如在E1線路上,把整個(gè)E1通道分成32個(gè)時(shí)隙,每個(gè)時(shí)隙分配64 kbps的帶寬,根據(jù)業(yè)務(wù)需要,可劃分一部分時(shí)隙帶寬做為數(shù)據(jù)業(yè)務(wù)通信,一部分做為話音業(yè)務(wù)通信。
MPC8270硬件模塊組成[3]如圖1所示,主要由嵌入式G2_LE Core(MPC603e內(nèi)核)、系統(tǒng)接口單元(SIU)和通信處理模塊CPM組成。G2_LE Core含16KB的指令緩存和16KB的數(shù)據(jù)緩存。系統(tǒng)接口單元(SIU)主要完成系統(tǒng)復(fù)位、啟動(dòng)和初始化、中斷管理、時(shí)鐘配置、外部總線接口控制等功能。通信處理模塊CPM包括一個(gè)32位的RISC處理器(CP)、3個(gè)全雙工的快速串行通信控制器 (FCC)、1個(gè)多通道控制器(MCC)、4個(gè)全雙工的串行通信控制器(SCC)、2個(gè)全雙工的串行管理控制器(SMC)、1 個(gè)系統(tǒng)外設(shè)控制口(SPI)、1 個(gè)串行接口(SI)、I2C總線控制器等。 時(shí)隙分配器(TSA)可將 SCC、FCC、SMC、MCC的數(shù)據(jù)復(fù)用到4個(gè)時(shí)分復(fù)用接口(TDM)。
圖1 MPC8270模塊結(jié)構(gòu)圖Fig.1 The architecture of MPC8270
MPC8270含有一個(gè)多通道控制器MCC2(通道號(hào)128-255),最多可支持128路獨(dú)立的HDLC或者透明傳輸通道,或者64路七號(hào)信令(SS7)[4]通道,每一個(gè)通道都可獨(dú)立配置為不同于其它通道的工作模式,可獨(dú)立的發(fā)送和接收路由。MCC2與串行接口SI2相連接,通過配置SI2和SI2RAM路由表可以將TDM數(shù)據(jù)中的時(shí)隙任意的路由到特定的MCC2通道。
MPC8270的內(nèi)核G2_LE和TDM的數(shù)據(jù)通信是通過通信處理器模塊(CPM)來完成的[5]。CPM根據(jù)控制寄存器的標(biāo)志位來執(zhí)行數(shù)據(jù)發(fā)送或接收操作,操作完成后再向G2_LE內(nèi)核的中斷寄存器寫入中斷值,G2_LE內(nèi)核根據(jù)中斷值調(diào)用相應(yīng)的中斷處理函數(shù),由此完成數(shù)據(jù)交互過程。
驅(qū)動(dòng)程序配置MCC2的相關(guān)寄存器后,CPM就將MCC2通道對應(yīng)的發(fā)送緩沖區(qū)內(nèi)的數(shù)據(jù)復(fù)制到發(fā)送FIFO內(nèi),然后SI按外部幀頭和時(shí)鐘將發(fā)送FIFO內(nèi)數(shù)據(jù)發(fā)送到TDM接口上。或者將數(shù)據(jù)從TDM接口上接收下來并存入到MCC通道的接收FIFO內(nèi),然后CPM再將接收FIFO內(nèi)的數(shù)據(jù)復(fù)制到MCC2通道對應(yīng)的接收緩存區(qū)內(nèi)[6]。
下面對MCC模塊初始化的具體步驟按順序做了描述,并對每個(gè)步驟值得注意的地方進(jìn)行了說明:
1)分配并初始化MCC操作所需的內(nèi)存空間。
MCC分配內(nèi)存之前必須先理解MCC的數(shù)據(jù)結(jié)構(gòu),這也是初始化工作的難點(diǎn),如圖2所示。
圖2 MPC8270 MCC2數(shù)據(jù)結(jié)構(gòu)圖Fig.2 The data structure of MCC2
數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)區(qū)由MPC8270內(nèi)部的DPRAM和外部的External Memory兩部分組成,DPRAM主要存儲(chǔ)參數(shù),包括存儲(chǔ)通道參數(shù)Channel Parameter(固定起始地址0x0000),全局參數(shù)Global MCC2 Parameters(固定起始地址0x8800),外部通道參數(shù)Channel Extra Parameters(可選取未使用的DPRAM一段區(qū)域來存放),超級通道表 Super channel Table(可選取未使用的DPRAM一段區(qū)域來存放);外部存儲(chǔ)區(qū)External主要存儲(chǔ)各BD對應(yīng)的數(shù)據(jù)Buffer,中斷循環(huán)表RxIntCQ、TxIntCQ也存放在外部存儲(chǔ)區(qū),具體的區(qū)域需要根據(jù)使用的通道數(shù)、每個(gè)通道使用的BD的個(gè)數(shù)、每個(gè)BD對應(yīng)的Buffer大小來確定。
熟悉了數(shù)據(jù)結(jié)構(gòu)就可以來申請數(shù)據(jù)緩沖區(qū)、緩沖區(qū)描述符及循環(huán)中斷表所需的存儲(chǔ)空間;同時(shí)設(shè)置DB(緩沖器描述符)基地址,全局參數(shù)基地址,通道參數(shù)基地址,分配外部存儲(chǔ)空間,收發(fā)BD的存儲(chǔ)空間,收發(fā)中斷向量表的存儲(chǔ)空間。
2)關(guān)閉TDM通道。
在進(jìn)行其它寄存器配置之前必須先關(guān)閉TDM通道。
3)啟動(dòng)CP初始化收發(fā)參數(shù)。
4)配置TDM使用的硬件接口和時(shí)鐘管腳。
5)初始化循環(huán)中斷表。
6)STOP CP 收發(fā)。
7)初始化SIRAM。
DisableSI2GMR, 配 置 SI2AMR,SI2BMR,SI2CMR,SI2DMR,將所有路由表清0,最后配置路由表,注意:收發(fā)路由表空間各512字節(jié),4個(gè)Bank,每個(gè)Bank分前32入口,后32入口(可不用),每個(gè)入口2個(gè)字節(jié)。
8)初始化收發(fā)BD的狀態(tài),設(shè)置BD狀態(tài),分配接收緩存區(qū)族。
設(shè)置收BD狀態(tài)為空0x8000,設(shè)置中斷BIT位 0x1000,最后一個(gè)BD需設(shè)置Wrap位;發(fā)BD狀態(tài)需設(shè)置Ready位0x8000:crc:0x0c00,Interrupt 0x1000,最后一個(gè)BD需設(shè)置Wrap位。
9)初始化MCC全局參數(shù)。
10)緩沖區(qū)描述符BD和數(shù)據(jù)緩沖區(qū)。
11)所使用通道的MCC參數(shù)。
通道參數(shù)的設(shè)置,需要清楚各個(gè)通道參數(shù)的地址范圍,每個(gè)通道64字節(jié)。通道參數(shù)中可使能需要的中斷,區(qū)分出通道的使用協(xié)議,比如是HDLC還TRAN等。
12)初始化所使用通道的MCC外部參數(shù)。
每個(gè)通道的外部參數(shù)8個(gè)字節(jié),用于指向此通道各BD的地址對應(yīng)的外部Buffer地址。
13)使能CP收發(fā),使能TDM。
使能TDM是MCC正式工作的最后一步,如果工作需要重新配置MCC參數(shù),也必須先停止TDM,完成參數(shù)修改后再啟動(dòng)TDM。
中斷程序收到一個(gè)MCC通道產(chǎn)生中斷請求時(shí)[7],首先清除MCC中斷,獲取MCCE寄存器的中斷標(biāo)志,然后根據(jù)MCCE[RINTx]和MCCE[TINT]的值來處理循環(huán)中斷表,中斷信號(hào)流程如圖3所示。
MCC收到數(shù)據(jù)后將數(shù)據(jù)寫入外部已分配好的緩沖區(qū),然后通過中斷程序通知接收程序去接收數(shù)據(jù)。數(shù)據(jù)接收程序根據(jù)中斷帶來的參數(shù)通道號(hào)(MCN)和BD偏移量去找到相應(yīng)的緩沖區(qū)[8],并從緩沖區(qū)獲取數(shù)據(jù),接收信號(hào)流程如圖4所示。
圖3 MCC2中斷信號(hào)流程圖Fig.3 The interrupt signal flow chart of MCC2
圖4 MCC2接收信號(hào)流程圖Fig.4 The receiving signal flow chart of MCC2
數(shù)據(jù)發(fā)送函數(shù)首先判斷發(fā)送通道的狀態(tài),若允許發(fā)送則將需發(fā)送BD基地址指向需發(fā)送的數(shù)據(jù)緩沖區(qū)的基地址,然后設(shè)置發(fā)送標(biāo)志啟動(dòng)發(fā)送。通信協(xié)處理器(CPM)會(huì)自動(dòng)完成數(shù)據(jù)從緩沖區(qū)到線路接口的發(fā)送。數(shù)據(jù)發(fā)送完成后通信協(xié)處理器會(huì)設(shè)置中斷標(biāo)志,并由中斷處理程序通知數(shù)據(jù)發(fā)送完成,接收信號(hào)流程如圖5所示。
圖5 MCC2發(fā)送信號(hào)流程圖Fig.5 The sending signal flow chart of MCC2
該驅(qū)動(dòng)程序運(yùn)行的操作系統(tǒng)是VxWorks5.5,開發(fā)環(huán)境為Tornado2.2.1,MCC通道工作模式可配置為 HDLC或者Transparent模式。
所設(shè)計(jì)的MCC驅(qū)動(dòng)程序已應(yīng)用于通信設(shè)備上,該設(shè)備可通過標(biāo)準(zhǔn)的E1口與路由器連接,鏈路層協(xié)議采用HDLC,在幀結(jié)構(gòu)配置為結(jié)構(gòu)化和非結(jié)構(gòu)化模式下均通信正常。該設(shè)備還通過E1口與其它通信設(shè)備進(jìn)行通信,數(shù)據(jù)時(shí)隙采用HDLC協(xié)議,話音時(shí)隙采用透傳模式協(xié)議。
經(jīng)過長時(shí)間的驗(yàn)證,該設(shè)備的數(shù)據(jù)和話音通信功能正常,運(yùn)行穩(wěn)定可靠。
[1]Freescale.MPC8280Power QUICCII Family Reference Manual[EB/OL].[2013-03-18].http://www.freescale.com.
[2]王煉,劉喜古,徐子平,等.基于MPC8270的MCC接口HDLC驅(qū)動(dòng)程序開發(fā)[J].軍事通信技術(shù),2009,30(2):48-51.WANG Lian,LIU Xi-gu,XU Zi-ping,et al.Development of MCC driver for HDLC based on MPC8270[J].Journal of Military Communications Technology,2009,30(2):48-51.
[3]Freescale.PowerQUICCII Family Hardware Specifications[EB/OL].[2013-03-25].http://www.freescale.com.
[4]閆宇博,張磊,彭來獻(xiàn).基于MPC8280多通道控制器驅(qū)動(dòng)的研究與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2010,26(23):174-176.YAN Yu-bo,ZHANG Lei,PENG Lai-xian.Research and realization of MCC driver based on MPC8280[J].Microcomputer Information,2010,26(23):174-176.
[5]ic37.基于MPC8280多通道控制器驅(qū)動(dòng)的研究與實(shí)現(xiàn)[EB/OL].[2013-07-08].http://www.ic37.com/htm_tech/2010-12/71 12_509386.htm.
[6]楊小冬,王俊芳.基于MPC8280的MCC驅(qū)動(dòng)設(shè)計(jì)[J].無線電工程,2012,42(9):61-64.YANG Xiao-dong,WANG Jun-fang.Design of MCC driver based on MPC8280[J].Radio Engineering,2012,42(9):61-64.
[7]施先旺,劉婷婷,李國良.采用有限狀態(tài)機(jī)實(shí)現(xiàn)控制指令的可靠檢測[J].火箭推進(jìn) ,2011(5):63-68.SHI Xian-wang,LIU Ting-ting,LI Guo-liang.Control instruction detection realized by finite state machine[J].Journal of Rocket Propulsion,2011(5):63-68.
[8]熊來紅,高健,汪皓鈺.COM技術(shù)和遺傳算法在無功優(yōu)化軟件開發(fā)中的應(yīng)用[J].陜西電力,2011(12):22-26,75.XIONG Lai-hong,GAO Jian,WANG Hao-yu.Application of com technology and genetic algorithms in power reactive optimization software design[J].Shaanxi Electric Power,2011(12):22-26,75.