《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 基于PowerPC的自環通信系統的BSP設計

基于PowerPC的自環通信系統的BSP設計

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

  摘 要: 針對PowerPC在高速信號和大量數據處理中的應用優勢,在PowerPC860板的通信處理模塊CPM的SCC3設備上" title="設備上">設備上開發了板級支持包BSP,使串口通信" title="串口通信">串口通信通道SCC3端口實現了HDLC協議的自環方式通信,通過SCC3端口發送數據或文件,將接收到的數據通過串口發送到PC仿真終端顯示。
  關鍵詞: BSP設計 驅動程序 緩存區 緩存區描述符

?

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


  接收Buffer的數據結構和實現接收數據的基本過程如下:
#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)發送函數sccPollInput( )的設計。
  設計方法同接收函數相似,但對于最后一個Buffer,需要檢測是否有發送錯誤,并以剩下的實際數據長度作為發送幀中數據段的長度發送。
  (3)設備控制函數sccIoctl()和數據發送函數sccStartup( )的設計。
  sccIoctl()函數用于設備工作模式配置和參數讀取。其中包括工作模式、通信速率、節點地址、CRC模式、最長幀等。輪詢模式下的收、發消息不需外部消息激勵,減少了任務的相互調度,可以用taskDelay實現 ,但是效率較低。sccStartup( )是中斷方式下的數據發送函數,設計要求在sysHwInit2( )函數中用接口inConnect( )實現關聯sccStartup( )和ISR。
  本文是在CS860板的SCC3設備上開發支持標準HDLC點對點通信協議的BSP,它實現了數據的高可靠和實時性傳輸。基于Vxworks 操作系統的HDLC協議自環通信,按一定的步驟分階段編碼調試實現。開發步驟包括:建立開發環境、編寫初始化代碼驅動、調試BSP等。通過測試程序實現了在查詢及中斷方式下發送和接收數據,在超級終端設置和查看工作模式、通信速率、節點地址、CRC模式,最長幀等,并設有收發是否正常及錯誤類型告警提示。通過硬件配置和程序調試,本文的BSP能在PowerPC860的其他SCC上移植。
參考文獻
1 Motorola Company.The MPC860 PowerQUICC TrainingCDROM [EB/OL].America,Motorola,2004
2 李方敏.VxWorks高級程序設計[M].北京:清華大學出版社,2004
3 周啟平.VxWorks下設備驅動程序BSP及開發指南[M].北京:中國電力出版社,2004
4 張昆藏.計算機組織與結構——性能設計(第五版)[M].北京:電子工業出版社,2004

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美成人一品| 国产精品系列在线| 亚洲欧美一区二区三区在线| 亚洲精品日产精品乱码不卡| 久久精品道一区二区三区| 亚洲综合99| 中文在线资源观看网站视频免费不卡| 亚洲国产综合91精品麻豆| 激情综合电影网| 狠狠色狠色综合曰曰| 国内精品美女av在线播放| 国产综合色产在线精品| 国产一区二区三区视频在线观看| 国产伦精品一区| 国产伦精品一区二区三区四区免费| 国产精品成人播放| 国产精品第一页第二页第三页| 欧美丝袜第一区| 欧美午夜宅男影院在线观看| 欧美视频一区二区三区四区| 国产精品电影网站| 国产欧美一区二区精品性| 国产亚洲一区二区三区在线观看| 国产视频精品网| 极品尤物久久久av免费看| 在线日韩欧美| 亚洲另类一区二区| 亚洲色图自拍| 午夜性色一区二区三区免费视频| 欧美在线视频一区二区三区| 亚洲成色999久久网站| 亚洲精品乱码久久久久久蜜桃91| 99pao成人国产永久免费视频| 99国产精品久久久久老师| 中文日韩在线| 欧美一区二区三区四区在线 | 国产精品日本| 国产性色一区二区| 亚洲国产高清一区二区三区| 亚洲精品视频在线看| 亚洲一区二区在线免费观看视频 | 一区二区三区欧美在线| 性色av香蕉一区二区| 久久久久久久性| 欧美国产日产韩国视频| 国产精品国产一区二区| 国产日韩av在线播放| 亚洲第一精品夜夜躁人人爽| 亚洲最黄网站| 欧美专区日韩专区| 日韩一区二区免费看| 午夜精品久久久久久久久久久久| 久久久91精品国产| 欧美日韩高清在线| 国产一区二区你懂的| 亚洲人成在线观看一区二区| 亚洲小视频在线| 久久精品视频免费播放| 亚洲视频1区2区| 久久精品国语| 欧美日韩免费观看中文| 国产色爱av资源综合区| 亚洲韩国青草视频| 欧美一级片一区| 一区二区毛片| 久久中文在线| 国产精品一区二区男女羞羞无遮挡| 精品999在线播放| 亚洲午夜精品网| 亚洲精品国产精品久久清纯直播 | 国产美女精品免费电影| 亚洲高清视频中文字幕| 亚洲主播在线观看| av成人手机在线| 久久久成人网| 国产精品久久二区| 亚洲欧洲日本国产| 久久精品99国产精品酒店日本| 亚洲一区二区三区视频| 蘑菇福利视频一区播放| 国产伦精品一区二区| 亚洲破处大片| 欧美在线观看www| 中文高清一区| 裸体丰满少妇做受久久99精品| 欧美午夜精品久久久久久孕妇| 精品动漫3d一区二区三区免费版| 亚洲天堂av图片| 亚洲精品专区| 久久蜜桃资源一区二区老牛 | 亚洲线精品一区二区三区八戒| 国产精品一区视频| 亚洲国产精品一区二区久| 午夜天堂精品久久久久 | 久久在线观看视频| 国产精品推荐精品| 亚洲精品在线二区| 亚洲黄一区二区| 久久久精品免费视频| 国产精品乱子乱xxxx| 亚洲美女视频网| 亚洲区免费影片| 久久综合久久综合久久| 国产色综合久久| 亚洲一区二区三| 亚洲一区欧美| 欧美日韩福利视频| 亚洲人成网站色ww在线| 亚洲经典自拍| 美女精品一区| 伊甸园精品99久久久久久| 久久精品99无色码中文字幕| 久久精品视频在线观看| 国产女优一区| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲精品日韩激情在线电影| 久久亚洲美女| 伊人色综合久久天天| 亚洲福利国产| 免费在线成人| 91久久精品国产91性色| 亚洲精品视频在线播放| 欧美成人国产一区二区| 亚洲成人在线网站| 亚洲美女免费精品视频在线观看| 欧美成人日本| 亚洲人成人一区二区三区| 一区二区成人精品| 欧美三级日本三级少妇99| 日韩亚洲成人av在线| 亚洲一区二区欧美| 国产精品福利在线| 亚洲欧美成人在线| 久久久久国产精品一区三寸| 韩国一区二区在线观看| 最新国产の精品合集bt伙计| 欧美高清在线一区| aa级大片欧美三级| 午夜精品福利电影| 国产午夜精品久久久| 亚洲第一在线综合网站| 欧美国产一区视频在线观看| 亚洲精选视频免费看| 亚洲欧美国产高清va在线播| 国产乱码精品一区二区三区不卡| 欧美在线视屏| 欧美福利网址| 一区二区三区产品免费精品久久75| 亚洲欧美综合一区| 国内一区二区三区| 夜夜嗨av一区二区三区四区| 欧美亚男人的天堂| 欧美怡红院视频一区二区三区| 老鸭窝91久久精品色噜噜导演| 亚洲激情av| 亚洲欧美中文字幕| 一区二区在线观看视频在线观看| 亚洲精品久久久久久久久久久久久 | 亚洲精品社区| 午夜综合激情| 一区二区三区在线看| 中文高清一区| 国产亚洲精品久久飘花 | 欧美日韩国产页| 亚洲欧美国产不卡| 欧美第一黄色网| 亚洲午夜av电影| 久久综合99re88久久爱| 99re6这里只有精品| 久久精品免费看| 亚洲肉体裸体xxxx137| 亚洲欧美日韩中文在线制服| 黄色成人精品网站| 亚洲网站视频| 狠狠88综合久久久久综合网| 一区二区三区精品视频在线观看| 国产欧美日韩在线播放| 亚洲精品美女久久久久| 国产精品美腿一区在线看 | 午夜久久美女| 激情亚洲一区二区三区四区| 亚洲一区二区三区三| 极品尤物一区二区三区| 亚洲欧美日韩精品在线| 亚洲大片在线| 久久不射中文字幕| 日韩视频一区二区| 久久午夜精品| 亚洲愉拍自拍另类高清精品| 免费一级欧美片在线播放| 亚洲免费在线看| 欧美激情亚洲| 久久精品国亚洲| 国产女优一区| 亚洲免费一级电影| 亚洲人成人77777线观看| 久久乐国产精品| 亚洲免费在线电影| 欧美日韩免费在线观看| 亚洲第一福利在线观看|