




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、在TMS320VC5402上實(shí)現(xiàn)的嵌入式TCP/IP協(xié)議棧 摘要:實(shí)現(xiàn)一個(gè)運(yùn)行在16位數(shù)字信號(hào)處理器TMS320VC5402上的小型嵌入式TCP/IP協(xié)議棧。對(duì)TCP/IP協(xié)議中的IP協(xié)議、ARP協(xié)議、UDP協(xié)議進(jìn)行分析,完成基于TCP/IP協(xié)議的嵌入式網(wǎng)絡(luò)系統(tǒng)。關(guān)鍵詞:DSP TMS320VC5402 TCP/IP協(xié)議棧 嵌入式系統(tǒng)引言隨著嵌入式系統(tǒng)應(yīng)用范圍的不斷擴(kuò)展及網(wǎng)絡(luò)應(yīng)用的日益普及,使得越來越多的嵌入式系統(tǒng)需要支持網(wǎng)絡(luò)功能。TCP/IP是目前一
2、種被廣泛采用的網(wǎng)絡(luò)協(xié)議。TCP/IP是一套把因特網(wǎng)上的各種系統(tǒng)互連起來的協(xié)議組,已成為事實(shí)上最常用的網(wǎng)絡(luò)標(biāo)準(zhǔn)之一。本文對(duì)TCP/IP協(xié)議中的IP協(xié)議、ARP協(xié)議和UDP協(xié)議進(jìn)行了分析,利用DSP的專用匯編語(yǔ)言實(shí)現(xiàn)了自己的通信協(xié)議。由此可使DSP直接對(duì)Ethernet發(fā)來的數(shù)據(jù)包解分析,并能按照TCP/IP協(xié)議正確打包和發(fā)送,最終實(shí)現(xiàn)DSP與PC機(jī)的數(shù)據(jù)通信,成功地完成了語(yǔ)音數(shù)據(jù)的采集和發(fā)送,實(shí)現(xiàn)了DSP與PC機(jī)的語(yǔ)音數(shù)據(jù)傳輸。1 TCP/IP協(xié)議分析一般在嵌入式系統(tǒng)中實(shí)現(xiàn)的TCP/IP協(xié)議都是面向數(shù)據(jù)采集和傳輸?shù)?,所以大部分?shí)現(xiàn)都是IP協(xié)議、ARP協(xié)議、UDP協(xié)議或者是TCP協(xié)議。本文完成的是
3、IP協(xié)議、ARP協(xié)議和UDP協(xié)議。一般認(rèn)為TCP/IP為四層協(xié)議,實(shí)現(xiàn)的協(xié)議棧結(jié)構(gòu)如圖1所示。DSP程序自下而上實(shí)現(xiàn)以下協(xié)議媒介訪問控制MAC(Media Access Control),向以太網(wǎng)收發(fā)數(shù)據(jù)。傳送的數(shù)據(jù)格式為Ethernet數(shù)據(jù)幀格式。Ethernet幀的長(zhǎng)度是可變的,但都大于64字節(jié),小于1518字節(jié)。它包括頭部、數(shù)據(jù)和尾部三部分。8字節(jié)的前導(dǎo)用于幀同步,CRC域用于幀校驗(yàn)。目的地址和源端地址是指網(wǎng)卡的物理地址(MAC地址),具有唯一性。地址解析協(xié)議ARP(Address Resolution Protocol),使得物理地址和IP地址可以對(duì)應(yīng)起來。在Ethernet上,使用地
4、址解析協(xié)議ARP協(xié)議來實(shí)現(xiàn)IP地址到MAC地址的動(dòng)態(tài)轉(zhuǎn)換。ARP Request(ARP請(qǐng)求)和ARP Response(ARP響應(yīng))類型都是0X0806。ARP報(bào)文格式包括硬件類型、協(xié)議類型、硬件地址長(zhǎng)度、協(xié)議地址長(zhǎng)度、操作字段、源端物理地址、源端IP地址、目的物理地址和目的IP地址。Internet網(wǎng)核心協(xié)議IP(Internet Protocol),實(shí)現(xiàn)IP網(wǎng)絡(luò)上的數(shù)據(jù)傳輸?shù)幕A(chǔ)。IP協(xié)議提供了一種高效、不可靠和無(wú)連接的傳輸方式。IP報(bào)文是IP協(xié)議的基本處理單元,是由報(bào)頭和數(shù)據(jù)兩部分組成的。IP報(bào)頭包括20字節(jié)的固定部分和變長(zhǎng)的選項(xiàng)部分。20字節(jié)的固定部分包括IP協(xié)議的版本號(hào)、IP首部長(zhǎng)
5、度、服務(wù)類型、報(bào)文總長(zhǎng)度、標(biāo)識(shí)符、片偏移、報(bào)文生存時(shí)間、首部校驗(yàn)和以及源端IP地址和目的端IP地址。用戶數(shù)據(jù)報(bào)協(xié)議UDP(User Datagram Protocol),提供不可靠的數(shù)據(jù)傳輸功能。它不對(duì)要發(fā)送的數(shù)據(jù)進(jìn)行緩沖,直接把從應(yīng)用層收到的數(shù)據(jù)加上UDP首部發(fā)送出去。UDP不會(huì)把應(yīng)用層多、次發(fā)送的數(shù)據(jù)合并成為一個(gè)包發(fā)送出去。這對(duì)于編寫簡(jiǎn)單的請(qǐng)求/響應(yīng)模式的應(yīng)用是很方便的,而且利用UDP協(xié)議對(duì)傳輸速率也沒有太大的影響。UDP協(xié)議的數(shù)據(jù)報(bào)格式包括源端口口、目的端口號(hào)、數(shù)據(jù)報(bào)長(zhǎng)度、UDP校驗(yàn)和以及UDP數(shù)據(jù)。上層應(yīng)用協(xié)議,對(duì)語(yǔ)音數(shù)據(jù)打包傳輸,實(shí)現(xiàn)DSP與PC機(jī)的語(yǔ)音數(shù)據(jù)傳輸。2 硬件接口電路硬件
6、接口電路如圖2所示。微處理器采用的是TI公司生產(chǎn)的TMS320VC5402數(shù)字信號(hào)處理器。它采用了改進(jìn)的哈佛結(jié)構(gòu),操作速率達(dá)到了100MIPS。以太網(wǎng)控制芯片采用RTL8019AS,是臺(tái)灣Realtek公司生產(chǎn)的一種高度集成的以太網(wǎng)控制器。它實(shí)現(xiàn)了以太網(wǎng)媒介訪問層(MAC)和物理層(PHY)的全部功能。譯碼、電平變換及向功能由XC95144xl完成。它是Xilinx公司生產(chǎn)的低功耗CPLD器件。HR61001G是中山漢仁電子有限公司生產(chǎn)的10BASE-T接口器件,起低通濾波和隔離變壓等作用。3 軟件設(shè)計(jì)31 DSP上嵌入式TCP/IP協(xié)議的匯編程序設(shè)計(jì)由于DSP的資源有限,所以網(wǎng)絡(luò)協(xié)議根據(jù)嵌入
7、式應(yīng)用進(jìn)行了裁減。本設(shè)計(jì)中完成了ARP、IP、UDP等部分協(xié)議,既能夠保證DSP接入以太網(wǎng),又使DSP資源能夠滿足嵌入式系統(tǒng)應(yīng)用的要求。首先介紹一下所設(shè)計(jì)的DSP接收和發(fā)送以太網(wǎng)數(shù)據(jù)包所使用的數(shù)據(jù)結(jié)構(gòu)。作者選擇了聯(lián)合體結(jié)構(gòu)作為DSP接收和發(fā)送以太網(wǎng)數(shù)據(jù)包的緩沖區(qū)。聯(lián)合體允許大小和類型不同的定義臨時(shí)存儲(chǔ)在同一存儲(chǔ)器空間。這樣的好處是各層協(xié)議之間數(shù)據(jù)的傳遞,實(shí)質(zhì)上是數(shù)據(jù)指針在傳遞,而不是數(shù)據(jù)拷貝傳遞。而且各層協(xié)議可以直接使用該緩沖區(qū),因?yàn)榫彌_區(qū)內(nèi)的結(jié)構(gòu)體完全是按照各個(gè)協(xié)議的幀格式設(shè)計(jì)的。在聯(lián)合體databuf中有四個(gè)結(jié)構(gòu)體成員ethernetpkt、ippkt、udppkt、arppkt,分別對(duì)應(yīng)
8、著以太網(wǎng)數(shù)據(jù)幀、IP協(xié)議、UDP協(xié)議、ARP協(xié)議的幀格式。這4個(gè)結(jié)構(gòu)體成員是按照它們各自協(xié)議的幀格式進(jìn)行定義的。值得注意的是,因?yàn)閐atabuf中存儲(chǔ)的是RTL8019AS發(fā)送的以太網(wǎng)數(shù)據(jù)幀,聯(lián)合體的成員共用databuf緩沖區(qū),所以在各個(gè)結(jié)構(gòu)體中要預(yù)留低層協(xié)議報(bào)頭存儲(chǔ)空間。例如,IP協(xié)議的結(jié)構(gòu)體ippkt就要在結(jié)構(gòu)體定義中留下ethernetpkt報(bào)頭的存儲(chǔ)空間,即ippkt定義中前9個(gè)整型空間不能使用,從第10個(gè)整型空間開始才是IP數(shù)據(jù)報(bào)的內(nèi)容。下面分4層介紹所完成的嵌入式TCP/IP協(xié)議。物理層:主要完成以太網(wǎng)控制器RTL8019AS的復(fù)位,寄存器的初始化,并設(shè)置RTL8019AS的工作
9、方式、中斷響應(yīng)、DMA通道接收緩沖區(qū)的地址設(shè)置等。初始化程序WRITE 0x21,CR /*設(shè)置命令寄存器,選中第0頁(yè)*/WRITE 0x4c,PSTART/*頁(yè)起始地址寄存器初始化,設(shè)定接收緩沖區(qū)起始頁(yè)地址*/WRITE 0x80,PSTOP /*頁(yè)停止地址寄存器初始化,設(shè)定接收緩沖區(qū)終止頁(yè)地址*/<P >WRITE 0x4c,BNRY/*頁(yè)邊界地址寄存器初始化,設(shè)定從接收緩沖區(qū)讀取數(shù)據(jù)的位置,讀指針*/WRITE 0x40,TPSR /*發(fā)送頁(yè)地址寄存器初始
10、化,設(shè)定發(fā)送緩沖區(qū)的起始頁(yè)地址*/WRITE 0xcc,RCR/*接收配置寄存器初始化,使用接收緩沖區(qū),僅接收自己地址的數(shù)據(jù)包、廣播地址數(shù)據(jù)包和多點(diǎn)播地址包,小于64字節(jié)的包丟棄,校驗(yàn)錯(cuò)的數(shù)據(jù)包不接收*/WRITE 0xe0,TCR/*傳輸配置寄存器初始化,啟用CRC自動(dòng)生成和自動(dòng)校驗(yàn),工作在正常模式*/WRITE 0xc9,DCR/*數(shù)據(jù)配置寄存器初始化,使用FIFO緩存,工作在正常模式,DMA傳輸數(shù)據(jù)16位寬*/WRITE 0x01,IMR /*中斷屏蔽寄存器初始化,使能數(shù)據(jù)包正確接收中斷*/WRITE 0xff,ISR /*復(fù)位中斷狀態(tài)寄存器*/WRITE 0x61,CR /*設(shè)置命令寄
11、存器,選中*/WRITE 0x4d,CURR/*當(dāng)前頁(yè)地址寄存器初始化,指向當(dāng)前正在寫的頁(yè)的,寫指針*/其中WRITE為宏指令,其定義WRITE .macrodata,regST data,*(net_reg)PORTW *(net_reg),regRPT #(20-1)NOP.endm網(wǎng)絡(luò)層:主要實(shí)現(xiàn)IP協(xié)議和ARP協(xié)議。當(dāng)DSP接收到正確的以太網(wǎng)數(shù)據(jù)包以后,調(diào)用check_packet函數(shù)處理。如果是ARP請(qǐng)求,則發(fā)送一個(gè)ARP應(yīng)答;如果是ARP應(yīng)答,則把對(duì)方的IP地址和以太網(wǎng)地址放到ARP緩存中;如果是IP包,則調(diào)用IP處理模塊處理,接收數(shù)據(jù)。check_packe函數(shù)arp: CMPM
12、 *(tocol),#0x0608;判斷協(xié)議類型是否為ARP協(xié)議BC ip,NTCCALL arp_process ;調(diào)用ARP協(xié)議處理模塊ST #taskfree,*(task);設(shè)置空閑任務(wù)指針B taskfree ;跳轉(zhuǎn)到空閑任務(wù)Ip: CMPM *(tocol),#0x0008;判斷協(xié)議類型是否為IP協(xié)議CC ip_process,TC ;若為IP協(xié)議,調(diào)用IP協(xié)議處理模塊ST #taskfree,*(task) ;設(shè)置空閑任務(wù)指針B taskfree ;跳轉(zhuǎn)到空閑任務(wù)arp_process:接收AR
13、P請(qǐng)求后,封裝好ARP數(shù)據(jù)報(bào),調(diào)用send_packet函數(shù)完成發(fā)送。在本設(shè)計(jì)中,DSP工作復(fù)位時(shí),ARP協(xié)議發(fā)送一個(gè)ARP請(qǐng)求,發(fā)送自己的IP地址和物理地址給PC機(jī)。ip_process:接收IP數(shù)據(jù)報(bào)后,判斷協(xié)議 ,協(xié)議如果為17,即是UDP協(xié)議,則調(diào)用函數(shù)udp_process,處理UDP數(shù)據(jù)報(bào),否則丟棄該數(shù)據(jù)報(bào)。在本設(shè)計(jì)中,正確接收一幀數(shù)據(jù)報(bào)后,會(huì)給PC機(jī)一個(gè)應(yīng)答信息,通知PC機(jī)已經(jīng)正確接收了數(shù)據(jù)報(bào),可以繼續(xù)發(fā)送數(shù)據(jù)。應(yīng)答信息的封裝首先調(diào)用create_udp_packet完成對(duì)應(yīng)答信息的UDP協(xié)議的封裝,然后調(diào)用create_ip_packet函數(shù),這個(gè)函數(shù)完成了把封裝好的UDP數(shù)據(jù)
14、報(bào)再封裝成IP數(shù)據(jù)報(bào)。最后調(diào)用send_packet函數(shù)完成發(fā)送。傳輸層:如果IP數(shù)據(jù)報(bào)中的協(xié)議類型為17,則為UDP數(shù)據(jù)報(bào),需要調(diào)用udp_process函數(shù)處理數(shù)據(jù)報(bào)。正確接收了數(shù)據(jù)后,給發(fā)送一個(gè)應(yīng)答信息,上面已經(jīng)提到了具體過程,這里不再?gòu)?fù)述了。這里介紹一下UDP協(xié)議的一個(gè)難點(diǎn)UDP數(shù)據(jù)的和校驗(yàn)。UDP和校驗(yàn)要求加上UDP偽首部以后再進(jìn)行校驗(yàn),偽首部格式包括32位源IP地址、32位目的IP地址、8位數(shù)據(jù)0、8位協(xié)議和16位UDP數(shù)據(jù)長(zhǎng)度。作者根據(jù)接收緩沖區(qū)的內(nèi)存管理特點(diǎn),即接收緩沖區(qū)的成員結(jié)構(gòu)共用同一塊數(shù)據(jù)存儲(chǔ)區(qū),所以將IP協(xié)議的幀頭從生存時(shí)間開始到幀頭結(jié)束封裝成UDP偽首部。其實(shí)這樣做,
15、只需將8位生存時(shí)間改為全0,16位首部和改為UDP數(shù)據(jù)長(zhǎng)度即可,8位的協(xié)議、32位源IP地址和32位的目的IP地址不用改動(dòng)。作UDP和校驗(yàn)的時(shí)候,從IP協(xié)議幀頭的報(bào)文生存時(shí)間開始到IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分結(jié)束作帶進(jìn)位的相加,最后比較對(duì)和校驗(yàn)就可以了。應(yīng)用層:由于傳輸?shù)氖钦Z(yǔ)音數(shù)據(jù),將采集的數(shù)據(jù)經(jīng)過A律壓縮放到DSP數(shù)據(jù)緩沖區(qū)databuf中,應(yīng)用TCP/IIP協(xié)議將其發(fā)送給PC機(jī)。將PC機(jī)發(fā)送來的語(yǔ)音數(shù)據(jù)A律壓縮通過DSP的多通道緩沖串行口發(fā)送給聲卡。對(duì)于語(yǔ)音數(shù)據(jù)的處理,交給PC機(jī)完成,這里只實(shí)現(xiàn)數(shù)據(jù)的傳輸。注:TCP/IP協(xié)議源碼見網(wǎng)站 。32 PC機(jī)上的應(yīng)用程序設(shè)計(jì)使用的VB編程,利用Winsock控件完成語(yǔ)音數(shù)據(jù)的接收。這方面有很多例子可以借鑒,所以就不作太多的介紹。結(jié)語(yǔ)目前,基于
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 保潔與員工合同范本
- 住宅加裝電梯工程合同范例
- 出售尼龍水箱合同范本
- 與政府合作合同范本
- 內(nèi)控合同范本
- 協(xié)商撤銷合同范例
- 勞動(dòng)合同范本 病假
- 單位租住房合同范本
- 個(gè)人蓋房合同范本
- 中醫(yī)醫(yī)聯(lián)體合同范本
- PPT用中國(guó)地圖(可編輯)
- 基于德育的農(nóng)村中小學(xué)校園欺凌現(xiàn)象的解決對(duì)策優(yōu)秀獲獎(jiǎng)科研論文
- 鐵路工程概預(yù)算-工程經(jīng)濟(jì)管理培訓(xùn)-課件
- 小學(xué)英語(yǔ)一般現(xiàn)在時(shí)-(演示)課件
- 面部激素依賴性皮炎的管理課件
- 盧卡奇教學(xué)講解課件
- 智慧環(huán)衛(wèi)項(xiàng)目建設(shè)方案
- 焊接作業(yè)現(xiàn)場(chǎng)環(huán)境溫度濕度記錄
- 長(zhǎng)期護(hù)理保險(xiǎn)待遇資格申請(qǐng)表
- 馬克思主義基本原理教案:第一章+教案
- 【腳手架計(jì)算書】 腳手架計(jì)算書詳細(xì)步驟
評(píng)論
0/150
提交評(píng)論