女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于mega128芯片實現TCP/IP協議棧的設計

電子設計 ? 來源:電子設計應用 ? 作者:項敏,王學軍 ? 2021-05-26 09:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

對于嵌入式系統而言,考慮到TCP/IP協議的復雜性以及嵌入式系統自身資源的有限,對TCP/IP的實現并不是一件容易的事情。在一些特殊場合,比如要求實時性或者數據的安全性,實現TCP/IP協議時還需要特別加以考慮。下面以ATMEL公司的mega128芯片為硬件平臺,具體談談TCP/IP協議的實現。

ATmega128芯片的特點

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

本方案只外擴32K RAM,剩余的高地址空間留給網卡芯片。網卡芯片主要功能是在物理層進行以太數據包的收發,以及在鏈路層進行信號的編/解碼。本方案網卡芯片選用RTL8019AS,它是針對PC機的ISA總線設計的。

pIYBAGCto-WAaFaXAADICuZh-z0445.png

硬件接口電路設計

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

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

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

o4YBAGCto9qAAeo6AAEMj7u9JT4141.png

軟件模塊的設計

網卡芯片8019AS的驅動

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

如前所述,對8019AS的操作實際上是通過操縱其內部寄存器以及DMA端口來實現的。因此在程序實現中,大量地出現了對8019AS內部寄存器的讀寫操作。所以可以定義2個帶參數的宏來簡化對8019AS的操作。reg表示8019AS內部寄存器的偏移量,date是將被寫入的數據,如下所示:

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

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

TCP/IP協議棧的實現

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

ARP模塊

ARP模塊完成的主要功能是將一個IP地址與其物理地址關聯起來。同時,為了提高網絡傳輸速度和效率,避免在每次發送數據時都要發送ARP請求包來獲得目的MAC地址,還要維護一個常用的ARP高速緩存。這些功能可以由兩個函數來實現。ARPReceive Proc用于處理來自網絡的ARP請求和ARP響應;ARPSendProc用于發送ARP請求包來尋找對應于IP地址的物理地址。

IP模塊

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

ICMP模塊

由于IP協議沒有差錯報告和差錯糾正機制,ICMP協議與IP協議配合使用彌補了上述兩個缺點。為了使實現的TCP/IP協議棧具備一定的差錯診斷功能,ICMP模塊實現了對回送請求消息產生一個回送應答。通過調用Ping命令就可以簡單測試主機的可靠性。上述功能分別由ICMPReceiveProc和ICMPSendProc函數完成。

TCP模塊

在本設計的協議棧中,通過一個有限狀態機來實現TCP協議,用一個任務控制塊(TCB)來記錄客戶和服務器的連接信息。雖然TCP協議是整個協議棧中最復雜的一個協議,但是對外面的接口還是只有兩個:TCPReceiveProc和TCPSendProc函數。

TCP/IP協議棧的任務調度

通過對以上各層協議任務的分析,可以抽象出它們共同的特點。TCP/IP協議的每個模塊只完成相應協議的任務,而任務通常只有兩個:對底層送上來的數據包進行處理,以及將上層傳下來的數據包再進行本層的封裝,然后繼續交下去。所以無論ARP、IP、ICMP、TCP哪一個協議,它們每一層對外都只有兩個接口:收數據包、發數據包。

為了最大限度的模塊化程序設計,便于日后的移植,可以采用面向對象的程序設計思路來具體實現TCP/IP協議。考慮到支持多用戶以及多任務,首先在Atmega128的外部32K RAM內開辟若干個數據(任務)緩沖區,緩沖區的大小以能放入一個最大以太數據包為準,即1514個字節。以后需要處理的所有數據包都放在這些緩沖區內,各個緩沖區根據內部存入的不同類型數據包來設置緩沖區的標志。上面各協議層接口函數內的參數TaskNo就表示當前數據包所在的緩沖區號。

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

由于整個協議棧采用了模塊化的設計,在具體使用的時候可以根據需要,很容易地加載相應的模塊,完成相應的功能。比如可以按照同樣的結構,再加載HTTP模塊,在芯片內實現WEB SERVER。同樣,在一些要求實時性的場合,由于發送的數據包是作為一個任務來管理的,因此可以很容易地給這些數據包(或任務)賦予一個較高的優先級,在進行任務調度時,優先處理這些任務。這樣,在多用戶情況下,對實時性也可以有一定改善。

結語

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

責任編輯:gt

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微控制器
    +關注

    關注

    48

    文章

    7933

    瀏覽量

    154080
  • 芯片
    +關注

    關注

    459

    文章

    52351

    瀏覽量

    438681
  • 嵌入式
    +關注

    關注

    5146

    文章

    19597

    瀏覽量

    316218
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    mega128 下載程序問題

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

    基于mega128的智能小車

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

    如何去簡化Simplified TCP/IP協議

    Simplified TCP/IP協議的特點是什么?如何去簡化Simplified TCP/IP
    發表于 05-26 07:23

    基于ARM的TCP/IP協議LwlP是如何實現的?

    嵌入式網絡通信系統的硬件平臺由哪幾個部分組成?基于ARM的TCP/IP協議LwlP是如何實現的?
    發表于 06-04 06:37

    TCP/IP協議有何功能

    TCP/IP協議是什么?TCP/IP協議
    發表于 10-14 06:39

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

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

    AVR mega128開發板

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

    AVR mega128學習板

    AVR mega128學習板 聯系  楊迪 15336417867  0531-55508458 QQ:1347978253  http://w
    發表于 07-14 10:53 ?85次下載

    Microchip TCP/IP協議

    的開發人員可以很容易找到許多Microchip產品的商業和非商業的TC P/IP實現方案。本應用筆記詳細說明了Microchip公司自己免費提供的TC P/IP協議
    發表于 04-20 16:04 ?5次下載
     Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協議</b><b class='flag-5'>棧</b>

    Microchip TCP/IP精簡協議

    本應用筆記描述 Microchip 傳輸控制協議 / 互聯網協議TCP/IP)精簡協議庫的結
    發表于 04-01 15:36 ?18次下載
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b>精簡<b class='flag-5'>協議</b><b class='flag-5'>棧</b>

    Microchip TCP/IP協議

    。感興趣的開發人員可以很容易找到許多 Microchip 產品的商業和非商業的TCP/IP 實現方案。本應用筆記詳細說明了 Microchip 公司自己免費提供的 TCP/
    發表于 04-02 14:28 ?22次下載
    Microchip <b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協議</b><b class='flag-5'>棧</b>

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

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

    基于PIC單片機的TCP/IP協議實現

    電子發燒友網站提供《基于PIC單片機的TCP/IP協議實現.ppt》資料免費下載
    發表于 10-20 10:03 ?2次下載
    基于PIC單片機的<b class='flag-5'>TCP</b>/<b class='flag-5'>IP</b><b class='flag-5'>協議</b><b class='flag-5'>棧</b><b class='flag-5'>實現</b>

    TCP/IP協議的設計與實現_中文

    電子發燒友網站提供《TCP/IP協議的設計與實現_中文.pdf》資料免費下載
    發表于 07-03 11:28 ?4次下載

    LwIP協議源碼詳解—TCP/IP協議實現

    電子發燒友網站提供《LwIP協議源碼詳解—TCP/IP協議實現.pdf》資料免費下載
    發表于 07-03 11:22 ?3次下載
    主站蜘蛛池模板: 芦山县| 彭阳县| 金沙县| 蓝田县| 新乡县| 苏尼特右旗| 镇平县| 马龙县| 崇文区| 镶黄旗| 民县| 汉阴县| 翼城县| 淮阳县| 布拖县| 平顺县| 垦利县| 五莲县| 桃江县| 丰原市| 大兴区| 鲁山县| 理塘县| 山阴县| 黎城县| 沁水县| 子洲县| 曲水县| 云龙县| 奉节县| 昌宁县| 大余县| 开远市| 威海市| 巨鹿县| 侯马市| 乌鲁木齐县| 阜新市| 高清| 德昌县| 苍南县|