下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 基于PowerPC的自環(huán)通信系統(tǒng)的BSP設(shè)計(jì) 常耀斌,鄧中亮 時(shí)間:2008年03月26日 字 體: 大 中 小 關(guān)鍵詞:<"cblue" " target='_blank'>描述符<"cblue" " target=
2、39;_blank'>串口通信<"cblue" " target='_blank'>接收數(shù)據(jù)<"cblue" " target='_blank'>設(shè)備上<"cblue" " target='_blank'>最大 摘要: 針對(duì)PowerPC在高速信號(hào)和大量數(shù)據(jù)處理中的應(yīng)用
3、優(yōu)勢(shì),在PowerPC860板的通信處理模塊CPM的SCC3<"cblue" " title="設(shè)備上">設(shè)備上開(kāi)發(fā)了板級(jí)支持包BSP,使<"cblue" " title="串口通信">串口通信通道SCC3端口實(shí)現(xiàn)了HDLC協(xié)議的自環(huán)方式通信,通過(guò)SCC3端口發(fā)送數(shù)據(jù)或文件,將接收到的數(shù)據(jù)通過(guò)串口發(fā)送到PC仿真終端顯示。關(guān)鍵詞: BSP設(shè)計(jì) 驅(qū)動(dòng)程序 緩存區(qū) 緩存區(qū)描述符?嵌入式系統(tǒng)是一種對(duì)可靠性和實(shí)時(shí)性要求較高的專(zhuān)用計(jì)算機(jī)系統(tǒng)。PowerPC860能夠提供良好的編程、編
4、譯、系統(tǒng)配置和調(diào)試環(huán)境,同時(shí)能在底層實(shí)現(xiàn)模塊化和屏蔽化。VxWorks是32位的實(shí)時(shí)操作系統(tǒng),支持32位以上的嵌入式處理器,如MIPS、ARM、PowerPC系列等。在VxWorks的開(kāi)發(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è)備上開(kāi)發(fā)了基于UART協(xié)議的板級(jí)支持BSP。但由于UART協(xié)議沒(méi)有數(shù)據(jù)差錯(cuò)校驗(yàn)處理,所以不能實(shí)現(xiàn)數(shù)據(jù)的可靠傳輸。本文基于HDLC協(xié)議,提出了通過(guò)SCC3端口發(fā)送和<"cblue" " title="
5、接收數(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)開(kāi)發(fā)及移植的重點(diǎn),BSP 主要完成VxWorks 對(duì)專(zhuān)用目標(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)
6、不同協(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)查詢(xún)、中斷和查詢(xún)方式下發(fā)送和接收數(shù)據(jù),從
7、而實(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.p
8、Scc->c_pres=CRC16_PRES;return (status);1.2 對(duì)初始化SCC3的軟件設(shè)計(jì)SCC3的初始化包括參數(shù)RAM和收發(fā)緩沖區(qū)<"cblue" " title="描述符">描述符BD的初始化。IMMR寄存器的值是內(nèi)存基址,其中內(nèi)存包括寄存器基址和收發(fā)緩沖區(qū)描述符BD等。設(shè)置Rx和TxBD表的基址相對(duì)于雙端口RAM的偏移量;設(shè)置Rx和Tx的函數(shù)代碼;在MRBLR中設(shè)置接收緩存的<"cblue" " title="最大">最大空間;設(shè)置收發(fā)緩
9、沖區(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初始化過(guò)程如下(其中MAX_RXBD_NUM為最大接收緩沖區(qū)描述符BD數(shù),MAX_BUF_SIZE為最大接收Buffer數(shù)目):static void InitBDs(void)int i=0;/*pRxBuffer是Buffer的首地址*/for (i=0;i<MAX_RXBD_NUM;I+)RecvBDi->statusMode=0x000
10、0;RecvBDi->statusMode|=(BD_RX_EMPTY_BIT);RecvBDi->dataLength=0;RecvBDi->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)程序需編寫(xiě)具有相應(yīng)特點(diǎn)的設(shè)備函數(shù)。(1)接收函數(shù)sccPollInput()的設(shè)計(jì)。正式讀入數(shù)據(jù)前,必須先檢測(cè)幀開(kāi)始標(biāo)志
11、,并匹配地址,然后決定是否進(jìn)入接收狀態(tài)。進(jìn)入接收狀態(tài)后,首先提取RxBD的狀態(tài)模式字節(jié),若接收未準(zhǔn)備好,則繼續(xù)等待;若已準(zhǔn)備好,則開(kāi)始接收。由于一個(gè)數(shù)據(jù)包可以放置于多個(gè)緩存,所以檢測(cè)RxBD狀態(tài)模式字節(jié)的L位,以判斷是否為本幀的最后一個(gè)緩存。如果不是,則關(guān)閉這個(gè)緩存,處理下一個(gè)緩存描述字;如果是,則接收完最后一個(gè)緩存的數(shù)據(jù)后結(jié)束接收過(guò)程。對(duì)于最后一個(gè)buffer,需要檢測(cè)是否有接收錯(cuò)誤。下面舉例說(shuō)明SCC3的一個(gè)接收緩沖區(qū)描述符BD所描述的5個(gè)Buffer的數(shù)據(jù)接收過(guò)程,如圖1所示。該例設(shè)節(jié)點(diǎn)地址STADDR為0x1999,最大Buffer接收數(shù)MAX_BUF_SIZE為5,接收緩存地址pRx
12、Buffer,連續(xù)接收發(fā)送緩存區(qū)數(shù)據(jù)66,XmitBD0->dataPointer為首地址pRxBuffer賦值。接收Buffer的數(shù)據(jù)結(jié)構(gòu)和實(shí)現(xiàn)接收數(shù)據(jù)的基本過(guò)程如下:#define MAX_BUF_SIZE 5#define STADDR 0x1999typedef structSCC_HDLC_BUF*pTxBuffer;SCC_HDLC_BUF*pRxBuffer;SCC_HDLC_DEV*pRxBuffer =XmitBD0->dataPointer;*pRxBuffer=(STADDR%256);*pRxBuffer=pRxBuffer +1;*pRxBuffer=(S
13、TADDR/256);pRxBuffer=pRxBuffer +1;for(index=2;index<MAX_BUF_SIZE;index+)<MAX_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ù)讀取。其中
14、包括工作模式、通信速率、節(jié)點(diǎn)地址、CRC模式、最長(zhǎng)幀等。輪詢(xún)模式下的收、發(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è)備上開(kāi)發(fā)支持標(biāo)準(zhǔn)HDLC點(diǎn)對(duì)點(diǎn)通信協(xié)議的BSP,它實(shí)現(xiàn)了數(shù)據(jù)的高可靠和實(shí)時(shí)性傳輸。基于Vxworks 操作系統(tǒng)的HDLC協(xié)議自環(huán)通信,按一定的步驟分階段編碼調(diào)試實(shí)現(xiàn)。開(kāi)發(fā)步驟包括:建立開(kāi)發(fā)環(huán)境、編寫(xiě)初始化代碼驅(qū)動(dòng)、調(diào)試BSP等。通過(guò)測(cè)試程序?qū)崿F(xiàn)了在查詢(xún)及中斷方式下發(fā)送和接收數(shù)據(jù),在超級(jí)終端設(shè)置和查看工作模式、通信速率、節(jié)點(diǎn)地址、CRC模式,最長(zhǎng)幀等,并設(shè)有收發(fā)是否正常及錯(cuò)誤類(lèi)型告警提示。通過(guò)硬件配置和程序調(diào)試,本文的BSP能在PowerPC860的其他SCC上移植。參考文獻(xiàn)1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【大學(xué)課件】GIS技術(shù)的發(fā)展現(xiàn)狀和趨勢(shì)
- 餐館食材供應(yīng)合同三篇
- 系統(tǒng)工程課件層次分析法案例
- 《數(shù)字證書(shū)CA培》課件
- 醫(yī)院人事管理課件
- 類(lèi)風(fēng)濕性關(guān)節(jié)炎護(hù)理查房
- 《數(shù)據(jù)化管理應(yīng)用》課件
- 《保額分紅優(yōu)勢(shì)》課件
- 《信息系統(tǒng)工程》課件
- 浙江省人教版歷史與社會(huì)八年級(jí)下冊(cè)6.2《沖破思想的牢籠》教學(xué)實(shí)錄2
- C#筆試題及答案
- python程序編寫(xiě)入門(mén)教案-完整版
- 供應(yīng)鏈數(shù)字化轉(zhuǎn)型
- 小學(xué)英語(yǔ)-What's he like Story time教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 第5章 自動(dòng)駕駛技術(shù)
- 國(guó)開(kāi)經(jīng)濟(jì)法律基礎(chǔ)形考任務(wù)國(guó)開(kāi)電大《經(jīng)濟(jì)法律基礎(chǔ)》形考任務(wù)3答案
- 水質(zhì)監(jiān)測(cè)運(yùn)維方案樣本
- 生命教育三年級(jí)下冊(cè)
- 高壓旋噴樁檢測(cè)方案
- Unit1 My classroom Part A Lets spell(說(shuō)課稿)-2022-2023學(xué)年英語(yǔ)四年級(jí)上冊(cè)
- 【要點(diǎn)解讀】《實(shí)踐是檢驗(yàn)真理的唯一標(biāo)準(zhǔn)》論證邏輯圖
評(píng)論
0/150
提交評(píng)論