《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于PowerPC的自環(huán)通信系統(tǒng)的BSP設(shè)計(jì)

基于PowerPC的自環(huán)通信系統(tǒng)的BSP設(shè)計(jì)

2008-03-26
作者:常耀斌,鄧中亮

  摘 要: 針對(duì)PowerPC在高速信號(hào)和大量數(shù)據(jù)處理中的應(yīng)用優(yōu)勢(shì),在PowerPC860板的通信處理模塊CPM的SCC3設(shè)備上" title="設(shè)備上">設(shè)備上開發(fā)了板級(jí)支持包BSP,,使串口通信" title="串口通信">串口通信通道SCC3端口實(shí)現(xiàn)了HDLC協(xié)議的自環(huán)方式通信,,通過SCC3端口發(fā)送數(shù)據(jù)或文件,將接收到的數(shù)據(jù)通過串口發(fā)送到PC仿真終端顯示。
  關(guān)鍵詞: BSP設(shè)計(jì) 驅(qū)動(dòng)程序 緩存區(qū) 緩存區(qū)描述符

?

  嵌入式系統(tǒng)是一種對(duì)可靠性和實(shí)時(shí)性要求較高的專用計(jì)算機(jī)系統(tǒng)。PowerPC860能夠提供良好的編程、編譯,、系統(tǒng)配置和調(diào)試環(huán)境,同時(shí)能在底層實(shí)現(xiàn)模塊化和屏蔽化,。VxWorks是32位的實(shí)時(shí)操作系統(tǒng),,支持32位以上的嵌入式處理器,如MIPS,、ARM,、PowerPC系列等。在VxWorks的開發(fā)環(huán)境Tornado中已集成了很多基于ARM和PowerPC系列的驅(qū)動(dòng)模塊,,如網(wǎng)卡設(shè)備驅(qū)動(dòng),、串口通信驅(qū)動(dòng)、塊設(shè)備驅(qū)動(dòng)等,。在Tornado系統(tǒng)中,,已在串口通信通道SCC3設(shè)備上開發(fā)了基于UART協(xié)議的板級(jí)支持BSP。但由于UART協(xié)議沒有數(shù)據(jù)差錯(cuò)校驗(yàn)處理,,所以不能實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸,。本文基于HDLC協(xié)議,提出了通過SCC3端口發(fā)送和接收數(shù)據(jù)" title="接收數(shù)據(jù)">接收數(shù)據(jù),,其中SCC3的接收緩沖區(qū)不但包括發(fā)送緩沖區(qū)的數(shù)據(jù)內(nèi)容,,還包括16位或32位的CRC差錯(cuò)校驗(yàn),實(shí)現(xiàn)了數(shù)據(jù)的高可靠性和實(shí)時(shí)性傳輸。PowerPC860的板級(jí)支持包BSP的設(shè)計(jì)是實(shí)現(xiàn)SCC自環(huán)通信系統(tǒng)開發(fā)及移植的重點(diǎn),,BSP 主要完成VxWorks 對(duì)專用目標(biāo)板的支持,。由于對(duì)硬件系統(tǒng)緊湊性和操作系統(tǒng)處理性能的要求,本BSP設(shè)計(jì)是在SCC3端口上采用NMSI方式實(shí)現(xiàn)的自環(huán)通信。
1 系統(tǒng)的BSP初始化方法
  PowerPC860由其內(nèi)核,、系統(tǒng)接口單元和通信處理模塊CPM三部分組成。其中通信處理模塊可以在不同的設(shè)備上發(fā)送和接收信息,,還可以在CPM的串口通信通道SCC上實(shí)現(xiàn)不同協(xié)議的傳輸,。一個(gè)BSP 包括硬件初始化、中斷處理和產(chǎn)生,、硬件時(shí)鐘管理,、本地和總線內(nèi)存空間映射,同時(shí)也包含定制VxWorks 映像。目標(biāo)板初始化和驅(qū)動(dòng)程序設(shè)計(jì)是SCC3端口實(shí)現(xiàn)HDLC協(xié)議自環(huán)方式通信的關(guān)鍵和難點(diǎn),。通常,,BSP提供的功能有:初始化(CPU初始化、目標(biāo)板初始化,、內(nèi)核初始化)和驅(qū)動(dòng)程序支持,。驅(qū)動(dòng)程序負(fù)責(zé)硬件設(shè)備的初始化,并與設(shè)備交互實(shí)現(xiàn)系統(tǒng)對(duì)設(shè)備功能的調(diào)用,。本文提出的BSP設(shè)計(jì)特點(diǎn)是基于HDLC模式對(duì)SCC3通道初始化以及存儲(chǔ)區(qū)的初始化配置,,并采用中斷控制提高數(shù)據(jù)傳輸效率。該BSP能夠提供標(biāo)準(zhǔn)接口,,包括設(shè)備初始化,、設(shè)備的啟動(dòng)和停止、設(shè)備狀態(tài)查詢,、中斷和查詢方式下發(fā)送和接收數(shù)據(jù),,從而實(shí)現(xiàn)底層模塊化及提高數(shù)據(jù)處理效率。
1.1 對(duì)自環(huán)通信的SCC3初始化的硬件設(shè)計(jì)
  配置發(fā)送與接收所用的波特率發(fā)生器,,將SCC3的收發(fā)時(shí)鐘分別配置成內(nèi)部時(shí)鐘和外部時(shí)鐘,;將SCC3配置成NMSI模式,初始化SDCR寄存器,。在函數(shù)sccIoctl中,,模式為16位CRC寄存器的設(shè)置如下:
sccIoctl(SCC_CHAN*pChan,int com,,int arg)
{
if(arg==CRC16_MODE)
{ pChan->hdlc.pSccReg->psmr&=~0x0800,;
pChan->hdlc.pScc->c_mask=CRC16_MASK;
pChan->hdlc.pScc->c_pres=CRC16_PRES,;
}
return (status),;
}
1.2 對(duì)初始化SCC3的軟件設(shè)計(jì)
  SCC3的初始化包括參數(shù)RAM和收發(fā)緩沖區(qū)描述符" title="描述符">描述符BD的初始化。IMMR寄存器的值是內(nèi)存基址,,其中內(nèi)存包括寄存器基址和收發(fā)緩沖區(qū)描述符BD等,。設(shè)置Rx和TxBD表的基址相對(duì)于雙端口RAM的偏移量;設(shè)置Rx和Tx的函數(shù)代碼;在MRBLR中設(shè)置接收緩存的最大" title="最大">最大空間,;設(shè)置收發(fā)緩沖區(qū)描述符BD表基址相對(duì)于IMMR寄存器中值的偏移量,。收發(fā)緩沖區(qū)描述符BD對(duì)Buffer結(jié)構(gòu)進(jìn)行描述,包括對(duì)Buffer的狀態(tài)statusMode(即是否為空),、長(zhǎng)度dataLength和指針dataPointer的描述,。收發(fā)緩沖區(qū)描述符BD初始化過程如下(其中MAX_RXBD_
NUM為最大接收緩沖區(qū)描述符BD數(shù),MAX_BUF_SIZE為最大接收Buffer數(shù)目):
static void InitBDs(void)
{
int i=0,;/*pRxBuffer是Buffer的首地址*/
for (i=0,;i{
RecvBD[i]->statusMode=0x0000,;
RecvBD[i]->statusMode|=(BD_RX_EMPTY_BIT),;
RecvBD[i]->dataLength=0;
RecvBD[i]->dataPointer=(u_char*)(pRxBuffer+i*MAX_BUF_SIZE),;
}
}
2 自環(huán)方式通信系統(tǒng)的驅(qū)動(dòng)設(shè)計(jì)
  由于系統(tǒng)在自環(huán)通信方式下工作,,所以SCC3的參數(shù)RAM、收發(fā)緩存區(qū)描述符等的內(nèi)存地址設(shè)計(jì),、UART協(xié)議和HDLC協(xié)議的驅(qū)動(dòng)設(shè)計(jì)方法,、自環(huán)通信和多通道通信方式設(shè)計(jì)將發(fā)生根本變化。因此系統(tǒng)設(shè)備驅(qū)動(dòng)程序需編寫具有相應(yīng)特點(diǎn)的設(shè)備函數(shù),。
  (1)接收函數(shù)sccPollInput()的設(shè)計(jì),。
  正式讀入數(shù)據(jù)前,必須先檢測(cè)幀開始標(biāo)志,,并匹配地址,,然后決定是否進(jìn)入接收狀態(tài)。進(jìn)入接收狀態(tài)后,,首先提取RxBD的狀態(tài)模式字節(jié),,若接收未準(zhǔn)備好,則繼續(xù)等待,;若已準(zhǔn)備好,,則開始接收。由于一個(gè)數(shù)據(jù)包可以放置于多個(gè)緩存,,所以檢測(cè)RxBD狀態(tài)模式字節(jié)的L位,,以判斷是否為本幀的最后一個(gè)緩存。如果不是,,則關(guān)閉這個(gè)緩存,,處理下一個(gè)緩存描述字;如果是,,則接收完最后一個(gè)緩存的數(shù)據(jù)后結(jié)束接收過程,。對(duì)于最后一個(gè)buffer,,需要檢測(cè)是否有接收錯(cuò)誤。下面舉例說明SCC3的一個(gè)接收緩沖區(qū)描述符BD所描述的5個(gè)Buffer的數(shù)據(jù)接收過程,,如圖1所示,。該例設(shè)節(jié)點(diǎn)地址STADDR為0x1999,最大Buffer接收數(shù)MAX_BUF_SIZE為5,,接收緩存地址pRxBuffer,,連續(xù)接收發(fā)送緩存區(qū)數(shù)據(jù)66,XmitBD[0]->dataPointer為首地址pRxBuffer賦值,。


  接收Buffer的數(shù)據(jù)結(jié)構(gòu)和實(shí)現(xiàn)接收數(shù)據(jù)的基本過程如下:
#define MAX_BUF_SIZE 5
#define STADDR 0x1999
typedef struct
{
SCC_HDLC_BUF*pTxBuffer;
SCC_HDLC_BUF*pRxBuffer,;
}SCC_HDLC_DEV
*pRxBuffer =XmitBD[0]->dataPointer,;
*pRxBuffer=(STADDR%256);
*pRxBuffer=pRxBuffer +1,;
*pRxBuffer=(STADDR/256),;
pRxBuffer=pRxBuffer +1;
for(index=2,;index_BUF_SIZE,;index++)

  {*pRxBuffer=0x66,;pRxBuffer=pRxBuffer+1,;}
  (2)發(fā)送函數(shù)sccPollInput( )的設(shè)計(jì)。
  設(shè)計(jì)方法同接收函數(shù)相似,,但對(duì)于最后一個(gè)Buffer,,需要檢測(cè)是否有發(fā)送錯(cuò)誤,并以剩下的實(shí)際數(shù)據(jù)長(zhǎng)度作為發(fā)送幀中數(shù)據(jù)段的長(zhǎng)度發(fā)送,。
  (3)設(shè)備控制函數(shù)sccIoctl()和數(shù)據(jù)發(fā)送函數(shù)sccStartup( )的設(shè)計(jì),。
  sccIoctl()函數(shù)用于設(shè)備工作模式配置和參數(shù)讀取。其中包括工作模式,、通信速率,、節(jié)點(diǎn)地址、CRC模式,、最長(zhǎng)幀等,。輪詢模式下的收、發(fā)消息不需外部消息激勵(lì),,減少了任務(wù)的相互調(diào)度,,可以用taskDelay實(shí)現(xiàn) ,但是效率較低,。sccStartup( )是中斷方式下的數(shù)據(jù)發(fā)送函數(shù),,設(shè)計(jì)要求在sysHwInit2( )函數(shù)中用接口inConnect( )實(shí)現(xiàn)關(guān)聯(lián)sccStartup( )和ISR,。
  本文是在CS860板的SCC3設(shè)備上開發(fā)支持標(biāo)準(zhǔn)HDLC點(diǎn)對(duì)點(diǎn)通信協(xié)議的BSP,它實(shí)現(xiàn)了數(shù)據(jù)的高可靠和實(shí)時(shí)性傳輸,?;赩xworks 操作系統(tǒng)的HDLC協(xié)議自環(huán)通信,按一定的步驟分階段編碼調(diào)試實(shí)現(xiàn),。開發(fā)步驟包括:建立開發(fā)環(huán)境,、編寫初始化代碼驅(qū)動(dòng)、調(diào)試BSP等,。通過測(cè)試程序?qū)崿F(xiàn)了在查詢及中斷方式下發(fā)送和接收數(shù)據(jù),,在超級(jí)終端設(shè)置和查看工作模式、通信速率,、節(jié)點(diǎn)地址,、CRC模式,最長(zhǎng)幀等,,并設(shè)有收發(fā)是否正常及錯(cuò)誤類型告警提示,。通過硬件配置和程序調(diào)試,本文的BSP能在PowerPC860的其他SCC上移植,。
參考文獻(xiàn)
1 Motorola Company.The MPC860 PowerQUICC TrainingCDROM [EB/OL].America,,Motorola,2004
2 李方敏.VxWorks高級(jí)程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,,2004
3 周啟平.VxWorks下設(shè)備驅(qū)動(dòng)程序BSP及開發(fā)指南[M].北京:中國(guó)電力出版社,,2004
4 張昆藏.計(jì)算機(jī)組織與結(jié)構(gòu)——性能設(shè)計(jì)(第五版)[M].北京:電子工業(yè)出版社,2004

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。