RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于mega128芯片實(shí)現(xiàn)TCP/IP協(xié)議棧的設(shè)計(jì)

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì)應(yīng)用 ? 作者:項(xiàng)敏,王學(xué)軍 ? 2021-05-26 09:24 ? 次閱讀

對(duì)于嵌入式系統(tǒng)而言,考慮到TCP/IP協(xié)議的復(fù)雜性以及嵌入式系統(tǒng)自身資源的有限,對(duì)TCP/IP的實(shí)現(xiàn)并不是一件容易的事情。在一些特殊場(chǎng)合,比如要求實(shí)時(shí)性或者數(shù)據(jù)的安全性,實(shí)現(xiàn)TCP/IP協(xié)議時(shí)還需要特別加以考慮。下面以ATMEL公司的mega128芯片硬件平臺(tái),具體談?wù)凾CP/IP協(xié)議的實(shí)現(xiàn)。

ATmega128芯片的特點(diǎn)

Atmega128是ATMEL公司推出的一款基于AVR RISC結(jié)構(gòu)的低功耗、高性能的8位微控制器芯片。通過在一個(gè)時(shí)鐘周期內(nèi)執(zhí)行一條指令,Atmega128可以取得1MIPS/MHz的性能。此外,該芯片還具有比較豐富的片上資源。而最大可外擴(kuò)的64K數(shù)據(jù)存儲(chǔ)器可以使得有充裕的空間來處理以太數(shù)據(jù)包。

本方案只外擴(kuò)32K RAM,剩余的高地址空間留給網(wǎng)卡芯片。網(wǎng)卡芯片主要功能是在物理層進(jìn)行以太數(shù)據(jù)包的收發(fā),以及在鏈路層進(jìn)行信號(hào)的編/解碼。本方案網(wǎng)卡芯片選用RTL8019AS,它是針對(duì)PC機(jī)的ISA總線設(shè)計(jì)的。

pIYBAGCto-WAaFaXAADICuZh-z0445.png

硬件接口電路設(shè)計(jì)

數(shù)據(jù)線與地址線均采用總線方式:8位數(shù)據(jù)線和16位地址線。PA口8位端口為復(fù)用AD端口,需要接一個(gè)地址鎖存器。讀數(shù)據(jù)時(shí),D[0:7]數(shù)據(jù)直接送到Atmega128;寫數(shù)據(jù)時(shí),D[0:7]送到RTL8019AS。Atmega128與RTL8019AS同時(shí)復(fù)位,RESET端口經(jīng)74HC04反相后接RTL8019AS的RSTDRV引腳。IOCS16腳的電平一直為低。8019采用8位數(shù)據(jù)總線寬度(高電平時(shí)為16位總線方式)。INT0中斷腳經(jīng)電平轉(zhuǎn)換接到Atmega128的IRQ5。在程序中,以I/O方式訪問RTL8019AS。MEMR、MEMW接高電平時(shí)關(guān)閉其MEMORY方式。

Atmega128對(duì)8019AS的驅(qū)動(dòng)主要是通過操縱8019AS內(nèi)部寄存器來完成的,這些寄存器映射在Atmega128的I/O端口上。因此,對(duì)8019AS的操作也既是對(duì)Atmega128的I/O端口操作。設(shè)計(jì)時(shí)可以將這些I/O地址定位到300H“31FH。由于Atmega128外擴(kuò)了32K的RAM,所以這里存在片選的問題。考慮到網(wǎng)卡芯片8019AS地址線的高15位是固定不變的,可以利用Atmega128的地址線的最高位A15來進(jìn)行片選:當(dāng)A15=1時(shí),選中8019AS;當(dāng)A15=0時(shí),選中24C256。

8019AS網(wǎng)絡(luò)接口控制器提供了三種與系統(tǒng)主CPU的接口方式:跳線方式、PnP方式,以及RT方式。為了減少硬件資源,更直接地控制芯片,將8019AS的65腳“JP”接高電平,選擇跳線方式。

o4YBAGCto9qAAeo6AAEMj7u9JT4141.png

軟件模塊的設(shè)計(jì)

網(wǎng)卡芯片8019AS的驅(qū)動(dòng)

在具體設(shè)計(jì)實(shí)現(xiàn)TCP/IP協(xié)議棧之前,還要解決一個(gè)問題:對(duì)8019AS的驅(qū)動(dòng)。從程序員的角度看,8019AS工作流程并不復(fù)雜。簡(jiǎn)而言之就是8019AS完成數(shù)據(jù)包和電信號(hào)之間的相互轉(zhuǎn)換,以太網(wǎng)協(xié)議由芯片硬件自動(dòng)完成。因此,驅(qū)動(dòng)程序需要完成的任務(wù)主要是:芯片初始化、收包、發(fā)包。本方案在協(xié)議棧中通過設(shè)計(jì)三個(gè)子函數(shù)來分別完成上述三個(gè)任務(wù),8019Init (void)、8019SendProc (unsigned char TaskNo)、8019 ReceiveProc(void)。

如前所述,對(duì)8019AS的操作實(shí)際上是通過操縱其內(nèi)部寄存器以及DMA端口來實(shí)現(xiàn)的。因此在程序?qū)崿F(xiàn)中,大量地出現(xiàn)了對(duì)8019AS內(nèi)部寄存器的讀寫操作。所以可以定義2個(gè)帶參數(shù)的宏來簡(jiǎn)化對(duì)8019AS的操作。reg表示8019AS內(nèi)部寄存器的偏移量,date是將被寫入的數(shù)據(jù),如下所示:

#define? nic_read (reg)?????? *(base + (reg) )

#define? nic_write (reg, date)? *(base + (reg)) = date

TCP/IP協(xié)議棧的實(shí)現(xiàn)

TCP/IP協(xié)議族是一組不同層次上的多個(gè)協(xié)議的組合。根據(jù)協(xié)議的層次結(jié)構(gòu),本方案安排四個(gè)協(xié)議模塊來分別實(shí)現(xiàn)TCP/IP協(xié)議的不同功能。即除了數(shù)據(jù)鏈路層(物理層)的程序模塊,也即前面所述8019AS的驅(qū)動(dòng)模塊之外,還包括ARP層模塊、IP層模塊、ICMP層模塊以及TCP層模塊。當(dāng)然,還可以多增加一個(gè)應(yīng)用層的模塊,例如HTTP模塊。下面逐一介紹各個(gè)協(xié)議模塊的功能。

ARP模塊

ARP模塊完成的主要功能是將一個(gè)IP地址與其物理地址關(guān)聯(lián)起來。同時(shí),為了提高網(wǎng)絡(luò)傳輸速度和效率,避免在每次發(fā)送數(shù)據(jù)時(shí)都要發(fā)送ARP請(qǐng)求包來獲得目的MAC地址,還要維護(hù)一個(gè)常用的ARP高速緩存。這些功能可以由兩個(gè)函數(shù)來實(shí)現(xiàn)。ARPReceive Proc用于處理來自網(wǎng)絡(luò)的ARP請(qǐng)求和ARP響應(yīng);ARPSendProc用于發(fā)送ARP請(qǐng)求包來尋找對(duì)應(yīng)于IP地址的物理地址。

IP模塊

IP協(xié)議的主要功能是使數(shù)據(jù)包可以分片發(fā)往任何網(wǎng)絡(luò),而且也能正確接收。分別由兩個(gè)函數(shù)完成。IPReceiveProc負(fù)責(zé)處理收到的IP數(shù)據(jù)包,如果是一個(gè)分片的包,它還負(fù)責(zé)組裝,最后根據(jù)IP包頭字段的內(nèi)容,將IP數(shù)據(jù)傳遞到上層協(xié)議模塊;IPSendProc負(fù)責(zé)將上層送下來的、需要發(fā)送的數(shù)據(jù)包添加一個(gè)IP包頭,然后重新封裝起來發(fā)送下去。

ICMP模塊

由于IP協(xié)議沒有差錯(cuò)報(bào)告和差錯(cuò)糾正機(jī)制,ICMP協(xié)議與IP協(xié)議配合使用彌補(bǔ)了上述兩個(gè)缺點(diǎn)。為了使實(shí)現(xiàn)的TCP/IP協(xié)議棧具備一定的差錯(cuò)診斷功能,ICMP模塊實(shí)現(xiàn)了對(duì)回送請(qǐng)求消息產(chǎn)生一個(gè)回送應(yīng)答。通過調(diào)用Ping命令就可以簡(jiǎn)單測(cè)試主機(jī)的可靠性。上述功能分別由ICMPReceiveProc和ICMPSendProc函數(shù)完成。

TCP模塊

在本設(shè)計(jì)的協(xié)議棧中,通過一個(gè)有限狀態(tài)機(jī)來實(shí)現(xiàn)TCP協(xié)議,用一個(gè)任務(wù)控制塊(TCB)來記錄客戶和服務(wù)器的連接信息。雖然TCP協(xié)議是整個(gè)協(xié)議棧中最復(fù)雜的一個(gè)協(xié)議,但是對(duì)外面的接口還是只有兩個(gè):TCPReceiveProc和TCPSendProc函數(shù)。

TCP/IP協(xié)議棧的任務(wù)調(diào)度

通過對(duì)以上各層協(xié)議任務(wù)的分析,可以抽象出它們共同的特點(diǎn)。TCP/IP協(xié)議的每個(gè)模塊只完成相應(yīng)協(xié)議的任務(wù),而任務(wù)通常只有兩個(gè):對(duì)底層送上來的數(shù)據(jù)包進(jìn)行處理,以及將上層傳下來的數(shù)據(jù)包再進(jìn)行本層的封裝,然后繼續(xù)交下去。所以無(wú)論ARP、IP、ICMP、TCP哪一個(gè)協(xié)議,它們每一層對(duì)外都只有兩個(gè)接口:收數(shù)據(jù)包、發(fā)數(shù)據(jù)包。

為了最大限度的模塊化程序設(shè)計(jì),便于日后的移植,可以采用面向?qū)ο蟮某绦蛟O(shè)計(jì)思路來具體實(shí)現(xiàn)TCP/IP協(xié)議??紤]到支持多用戶以及多任務(wù),首先在Atmega128的外部32K RAM內(nèi)開辟若干個(gè)數(shù)據(jù)(任務(wù))緩沖區(qū),緩沖區(qū)的大小以能放入一個(gè)最大以太數(shù)據(jù)包為準(zhǔn),即1514個(gè)字節(jié)。以后需要處理的所有數(shù)據(jù)包都放在這些緩沖區(qū)內(nèi),各個(gè)緩沖區(qū)根據(jù)內(nèi)部存入的不同類型數(shù)據(jù)包來設(shè)置緩沖區(qū)的標(biāo)志。上面各協(xié)議層接口函數(shù)內(nèi)的參數(shù)TaskNo就表示當(dāng)前數(shù)據(jù)包所在的緩沖區(qū)號(hào)。

整個(gè)程序的處理流程如下:收數(shù)據(jù)時(shí),8019AS不斷將以太數(shù)據(jù)包從物理層收上來放入事先開辟好的任一個(gè)緩沖區(qū)內(nèi),作為一個(gè)待處理的任務(wù),并根據(jù)數(shù)據(jù)包的包頭信息標(biāo)志此任務(wù)為ARP收任務(wù)或IP收任務(wù)。主程序掃描各個(gè)緩沖區(qū),如發(fā)現(xiàn)有IP收數(shù)據(jù)包(任務(wù))需要處理,于是根據(jù)任務(wù)的類型(IP收)調(diào)用相應(yīng)處理進(jìn)程IPReceiveProc()。處理完成后,將此數(shù)據(jù)包或任務(wù)根據(jù)包頭信息重新標(biāo)志為ICMP收或TCP收。主程序繼續(xù)掃描,再次調(diào)用相應(yīng)協(xié)議模塊處理緩沖區(qū)內(nèi)的任務(wù)如TCPReceiveProc(),直至將數(shù)據(jù)交到最上層的應(yīng)用程序。發(fā)數(shù)據(jù)時(shí),流程與收數(shù)據(jù)過程相反。

由于整個(gè)協(xié)議棧采用了模塊化的設(shè)計(jì),在具體使用的時(shí)候可以根據(jù)需要,很容易地加載相應(yīng)的模塊,完成相應(yīng)的功能。比如可以按照同樣的結(jié)構(gòu),再加載HTTP模塊,在芯片內(nèi)實(shí)現(xiàn)WEB SERVER。同樣,在一些要求實(shí)時(shí)性的場(chǎng)合,由于發(fā)送的數(shù)據(jù)包是作為一個(gè)任務(wù)來管理的,因此可以很容易地給這些數(shù)據(jù)包(或任務(wù))賦予一個(gè)較高的優(yōu)先級(jí),在進(jìn)行任務(wù)調(diào)度時(shí),優(yōu)先處理這些任務(wù)。這樣,在多用戶情況下,對(duì)實(shí)時(shí)性也可以有一定改善。

結(jié)語(yǔ)

實(shí)現(xiàn)電子設(shè)備或者系統(tǒng)的網(wǎng)絡(luò)化,使之具備網(wǎng)絡(luò)功能,目前的解決方案通常有兩種。除了直接在系統(tǒng)內(nèi)部實(shí)現(xiàn)TCP/IP協(xié)議之外,還可以考慮使用專用芯片來完成單片機(jī)與網(wǎng)關(guān)間的協(xié)議轉(zhuǎn)換。比如武漢力源公司開發(fā)的Webchip網(wǎng)絡(luò)接口芯片PS-2000。但是專用芯片的使用,不但增加了系統(tǒng)的成本,而且不靈活。當(dāng)然,如果在系統(tǒng)內(nèi)部直接實(shí)現(xiàn)TCP/IP協(xié)議,也有自身的缺點(diǎn)。一是需要較大容量的程序存儲(chǔ)器。二是對(duì)應(yīng)用系統(tǒng)的設(shè)計(jì)工程師也具有更高的要求,如必須熟悉TCP/IP協(xié)議及其相關(guān)的接口。且軟件設(shè)計(jì)的工作量也較大。所以在實(shí)際應(yīng)用中,具體選擇哪一種方案還需要根據(jù)具體情況做出不同的選擇。

責(zé)任編輯:gt

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7542

    瀏覽量

    151311
  • 芯片
    +關(guān)注

    關(guān)注

    455

    文章

    50714

    瀏覽量

    423131
  • 嵌入式
    +關(guān)注

    關(guān)注

    5082

    文章

    19104

    瀏覽量

    304791
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    mega128 下載程序問題

    我用的是mega128的開發(fā)板,用PROGISP(1.6.7)向開發(fā)板燒寫程序時(shí)總是提示can't finish chip erase! 我熔絲位用的是默認(rèn)的,請(qǐng)高手幫忙解決。另外,開始時(shí)懷疑程序跑飛造成芯片鎖死,但是換了一塊新的芯片
    發(fā)表于 04-07 21:48

    基于mega128的智能小車

    本人是新手,要做一個(gè)基mega128的智能小車,現(xiàn)在在紅外壁障和超聲波測(cè)距上遇到了困難,各位大神們可以幫幫我嗎?我需要代碼研究一下,讓自己寫完全不知道該怎么寫。。拜托各位了。。。{:19:}
    發(fā)表于 01-06 20:01

    如何去簡(jiǎn)化Simplified TCP/IP協(xié)議?

    Simplified TCP/IP協(xié)議的特點(diǎn)是什么?如何去簡(jiǎn)化Simplified TCP/IP
    發(fā)表于 05-26 07:23

    基于ARM的TCP/IP協(xié)議LwlP是如何實(shí)現(xiàn)的?

    嵌入式網(wǎng)絡(luò)通信系統(tǒng)的硬件平臺(tái)由哪幾個(gè)部分組成?基于ARM的TCP/IP協(xié)議LwlP是如何實(shí)現(xiàn)的?
    發(fā)表于 06-04 06:37

    MEGA128系統(tǒng)板電路圖,原理圖(帶PCB文件)

    MEGA128系統(tǒng)板電路圖,MEGA128系統(tǒng)板原理圖,MEGA128系統(tǒng)板帶PCB文件。
    發(fā)表于 05-29 08:17 ?389次下載
    <b class='flag-5'>MEGA128</b>系統(tǒng)板電路圖,原理圖(帶PCB文件)

    AVR mega128開發(fā)板

    AVR mega128開發(fā)板 聯(lián)系  楊迪 15336417867  0531-55508458 QQ:1347978253  http://www.easyele.cn 產(chǎn)品概述:AVR mega128開發(fā)板是AVRVi開發(fā)的基于Atm
    發(fā)表于 07-14 10:52 ?84次下載

    AVR mega128學(xué)習(xí)板

    AVR mega128學(xué)習(xí)板 聯(lián)系  楊迪 15336417867  0531-55508458 QQ:1347978253  http://w
    發(fā)表于 07-14 10:53 ?85次下載

    Microchip TCP/IP協(xié)議

    的開發(fā)人員可以很容易找到許多Microchip產(chǎn)品的商業(yè)和非商業(yè)的TC P/IP實(shí)現(xiàn)方案。本應(yīng)用筆記詳細(xì)說明了Microchip公司自己免費(fèi)提供的TC P/IP協(xié)議
    發(fā)表于 04-20 16:04 ?4次下載
     Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>

    Microchip的TCPIP協(xié)議的詳細(xì)中文資料免費(fèi)下載

    。感興趣的開發(fā)人員可以很容易找到許多 Microchip 產(chǎn)品的商業(yè)和非商業(yè)的 TCP/IP 實(shí)現(xiàn)方案。本應(yīng)用筆記詳細(xì)說明了 Microchip 公司自己免費(fèi)提供的 TCP/
    發(fā)表于 06-15 08:27 ?35次下載
    Microchip的<b class='flag-5'>TCP</b>和<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>的詳細(xì)中文資料免費(fèi)下載

    Microchip TCP/IP精簡(jiǎn)協(xié)議

    本應(yīng)用筆記描述 Microchip 傳輸控制協(xié)議 / 互聯(lián)網(wǎng)協(xié)議TCP/IP)精簡(jiǎn)協(xié)議庫(kù)的結(jié)
    發(fā)表于 04-01 15:36 ?17次下載
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>精簡(jiǎn)<b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>

    Microchip TCP/IP協(xié)議

    。感興趣的開發(fā)人員可以很容易找到許多 Microchip 產(chǎn)品的商業(yè)和非商業(yè)的TCP/IP 實(shí)現(xiàn)方案。本應(yīng)用筆記詳細(xì)說明了 Microchip 公司自己免費(fèi)提供的 TCP/
    發(fā)表于 04-02 14:28 ?22次下載
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>

    到底什么是TCP/IP協(xié)議,看完這篇你就明白!

    一談到TCP/IP協(xié)議,相信不少小白都處于暴躁的邊緣,只懂其一不知其二。沒關(guān)系,看完這篇你就知道啦!我們先簡(jiǎn)單了解下TCP/
    的頭像 發(fā)表于 12-09 15:21 ?1431次閱讀
    到底什么是<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b>,看完這篇你就明白!

    基于PIC單片機(jī)的TCP/IP協(xié)議實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于PIC單片機(jī)的TCP/IP協(xié)議實(shí)現(xiàn).ppt》資料免費(fèi)下載
    發(fā)表于 10-20 10:03 ?2次下載
    基于PIC單片機(jī)的<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協(xié)議</b><b class='flag-5'>棧</b><b class='flag-5'>實(shí)現(xiàn)</b>

    TCP/IP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_中文

    電子發(fā)燒友網(wǎng)站提供《TCP/IP協(xié)議的設(shè)計(jì)與實(shí)現(xiàn)_中文.pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:28 ?4次下載

    LwIP協(xié)議源碼詳解—TCP/IP協(xié)議實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《LwIP協(xié)議源碼詳解—TCP/IP協(xié)議實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 07-03 11:22 ?3次下載
    RM新时代网站-首页