freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

基于單片機以太網(wǎng)通信模塊的軟件設計課題(文件)

2025-07-30 21:39 上一頁面

下一頁面
 

【正文】 重要特性,比如設定本地 IP 地址、網(wǎng)關地址、網(wǎng)絡掩碼,修改發(fā)送、接收數(shù)據(jù)緩沖區(qū)的大小,改變 協(xié)議棧各種定時器的定時間隔等。 ◆ 本地 IP地址: define MYIP_1 192 //Local IP Address define MYIP_2 168 define MYIP_3 0 define MYIP_4 1 第 25 頁 ◆ 子網(wǎng)掩碼: define SUBMASK_1 255 //sub mask define SUBMASK_2 255 define SUBMASK_3 255 define SUBMASK_4 0 ◆ 網(wǎng)關地址: define GWIP_1 192 //standard gateway define GWIP_2 168 //used if Remote IP define GWIP_3 0 //is no part of our define GWIP_4 100 //local sub ◆ 發(fā)送緩沖區(qū)的最大值: define MAX_TCP_TX_DATA_SIZE 512 ◆ 接收緩沖區(qū)的最大值: define MAX_TCP_RX_DATA_SIZE 256 ◆ 以太幀中的協(xié)議類型: define FRAME_ARP 0x0806 define FRAME_IP 0x0800 ◆ 全局 Socket 狀態(tài)變量 Socket Status: 這一個字節(jié)的全局狀態(tài)變量包含 4 個狀態(tài)位和 4 的錯誤標志位,分布如圖 所示: Bit7 SOCK _ERR Bit6 SOCK _ERR Bit5 SOCK _ERR Bit4 SOCK _ERR Bit3 SOCK_TX_BUF _RELEASED Bit2 SOCK_DATA AVAILABLE Bit1 SOCK _CONNECTED Bit0 SOCK _ACTIVE 圖 Socket Status 標志位分布圖 ARP 協(xié)議的實現(xiàn) ARP 協(xié)議功能是進行 IP 地址與以太網(wǎng)地址之間的轉換。如果沒有找到,則會調用 ARP 協(xié)議模塊以廣播的形式發(fā)送 ARP 即請求,同時打開一個ARP 定時器,如果在規(guī)定的時間內沒有響應的話,則將 IP 包以廣播的形式發(fā)送出去。 ARP 請求、應答包的頭部格式如下,其中 ETH_DATA_OFS 是以太幀的數(shù)據(jù)段相對偏移量。本系統(tǒng)的 ICMP 只要求實現(xiàn)很簡單的功能,所以編程很簡單。它主要由處理 IP輸入的 IP_Input 程序和處理 IP 輸出的 IP_Output兩部 分組成。這里說的 IP 選路是指主機選路而不是路由器的選路,發(fā)送 IP 包前查看發(fā)送的目的 IP 地址是否和本機處在同一個子網(wǎng)中,如果是則直接發(fā)送,否則需要將 IP 包發(fā)送到默認的路由器上。這里邊比較重要的一塊就是 UDP 校驗和的計算問題。 while(count1) //以 16bit 為單位求累加和 {sum += * (unsigned short) add++。 Oxffff)+(sum16)。 TCP 協(xié)議的實現(xiàn) TCP協(xié)議的實現(xiàn)是整個 TCP/IP協(xié)議中最復雜的一個。 TCP/IP 協(xié)議中 TCP 連接主動打開的函數(shù)是 TCP Active Open,說明如下: Void TCP Active Open (void) { if(TCP State Ma Chine==CLOSED) //如果是在 TCP 的關閉狀態(tài) { TCP Flags 1=TCP_ACTIVE_OPEN。 //廣播方式發(fā) A即請求 Last Frame Sent=ARP_REQUEST。由于網(wǎng)絡底層驅動在各層協(xié)議測試的過程中就可以檢測出底層協(xié)議是否有誤,因此,僅需對 ARP、 IP、ICMP、 UDP 進行測試。 圖 PC 端顯示響應 ARP 協(xié)議 由所輸入命令可以得到模塊系統(tǒng)的 IP 地址和硬件物理地址,顯示結果如圖 第 30 頁 所示。如果 Ping 命令有響應,則說明己收到了 ICMP 回送請求報文。 第 31 頁 圖 PC 機與開發(fā)板連接圖 連接成功后,在 Socket 調試工具界面上點擊“發(fā)送文件”下的“發(fā)送”命令,將準備好的測試文件發(fā)送到開發(fā)板,并利用 Sniffer 軟件進行監(jiān)控,監(jiān)測結果如圖 所示。 。繼續(xù)用 PING 命令給模塊系統(tǒng)發(fā)送 ICMP 的應答報文,結果顯示與模塊系統(tǒng)IP 連接正常,且數(shù)據(jù)沒有丟失, IP 和 ICMP 協(xié)議得以驗證。課題中 UDP 支持 TCP/UDP Socket 調試工具,在接收到 UDP數(shù)據(jù)報并判斷其正確之后,就將接到的數(shù)據(jù)原封不動按照 UDP 數(shù)據(jù)報格式打包,然后回送給原發(fā)送端。 圖 PC Ping 模塊系統(tǒng)的響應 由于 ICMP 是封裝在 IP 報文中作為 IP 數(shù)據(jù)發(fā)送的,因此向協(xié)議發(fā)送 ICMP查詢報文時,如果能成功收到 ICMP 的應答報文,則 IP 協(xié)議在功能上是正確的。最簡單的測試方法是發(fā)送一個 ICMP 報文,即在 Ping 試驗板上的 IP 地址,由于 ARP 協(xié)議是介于鏈路層與網(wǎng)絡層之間,更趨于底層,所以將先引起 ARP 報文。 //啟動超時重發(fā)定時器 Seoket status=SOCK_ACTIVE。=~IP_ADDR_RESOLVED。 TCP 采取了很多機制來保證它的可靠性,比如 TCP 連接 第 29 頁 的建立與關閉機制、超時重傳機制、數(shù)據(jù)包確認機制、流量控制機制等等。 //取反 } 需要說明的是該算法是以 UDP 的偽首部 (包括校驗和字段 )和數(shù)據(jù)區(qū)為對象進行的,這和 IP 的校驗不同。 } /*如果整個 UDP 首部為奇數(shù)字節(jié),則加上剩余的字節(jié) */ If’(count 0) Sum+=* (unsigned char*)add 。此算法適用于 Ipv ICMPv IMPV ICMPv UDP 和 TCP 校驗和,更詳細的信息可以參考 RFC1071。 UDP 協(xié)議模塊把上層應用程序傳來的數(shù)據(jù)包加上源端口和目的端口號,計算校驗和并填充,然后發(fā)給 IP 模塊即可。 NY收 到 I P 包驗 證 I P 包 正 確 性 ?是 否 U D P 包是 否 T C P 包是 否 I C M P 包 將 包 丟 棄退 出NNYYNY送 到 U D P 模 塊送 到 I C M P 模 塊送 到 T C P 模 塊 圖 IP_Input 的處理流程圖 IP_Input 中驗證 IP 包的正確性是要驗證 IP 的版本號是否為 IPv4 和 IP 包的長度是否不小于 IP 包的最小長度,如果不滿足則說明是無效數(shù)據(jù)包,應該丟棄。下面是ICMP 包的定義: //ICMP definitions define ICMP_TYPE_CODE_OFS IP_DATA_OFS+0 //type of message define ICMP_CHKSUM_OFS IP_DATA_OFS+2 //check sum define ICMP_DATA_OFS IP_DATA_OFS+4 //data define ICMP_HEADER_SIZE 4 IP 協(xié)議的實現(xiàn) 針對嵌入式應用的特點,本系統(tǒng)的 TCP/IP 協(xié)議棧的 IP 模塊不支持路由器對IP 模塊要求的功能,從而省去了 IP_Forward 程序的實現(xiàn)過程。在通用計算機系統(tǒng)中, ARP 高速緩存一般設計成雙向數(shù)據(jù)鏈的形式,這樣整個緩存可以方便的動態(tài)增減。同時還要把該 IP 地址、物理地址對添加到系統(tǒng) ARP 高速緩存中。 ARP 的具體工作包括發(fā)送 ARP 請求和響應對方的 ARP 請求,以及動態(tài)的維護一個 ARP 高速緩存。當然也可以靜態(tài)的進行設置,修改完后再重新編譯協(xié)議即可。下面我將以軟件流程圖的方式分別講述一下它們的工作過程。設計協(xié)議時,只需按照要求調用驅動程序提供的封裝好的標準接口函數(shù)即可,底層的細節(jié)問題這里無需考慮。 TCP 協(xié)議是 TCP/IP 協(xié)議棧中必不可少的,也是最為復雜的一種協(xié)議。在協(xié)議棧中實現(xiàn)這一功能主要是滿足我們的協(xié)議棧用在工業(yè)以太網(wǎng)時的需求。 IP 協(xié)議和 UDP 協(xié)議、 TCP 協(xié)議結合緊密,本協(xié)議的 IP 協(xié)議完成 IP 包的分解與復用,不支持 IP分包功能,支持主機路由選擇。下面就是我設計的 TCP/IP 協(xié)議所支持的協(xié)議及該協(xié)議棧的性能指標。 消 除 發(fā) 送 完 成標 志設 置 R S A R 0 , 1 為 發(fā) 送 緩沖 區(qū) 起 始 地 址 ,R B C R 0 , 1 為 遠 程 D A M 傳 送數(shù) 據(jù) 長 度置 C R 為 2 1 H 啟 動遠 程 D A M , 往 數(shù)據(jù) 口 發(fā) 送 數(shù) 據(jù)設 置 T R S R 發(fā) 送包 的 起 始 頁 地址設 置 T B C R 為 發(fā)送 數(shù) 據(jù) 包 長 度設 置 C R 為 2 6 H , 啟 動本 地 D A M 發(fā) 送 , 以 將數(shù) 據(jù) 包 發(fā) 出 去遠 程 D A M本 地 D A M 圖 數(shù)據(jù)包的發(fā)送流程 第 21 頁 第 4 章 精簡 TCP/IP 協(xié)議的設計與實現(xiàn) TCP/IP 協(xié)議的設計結構 TCP/IP 協(xié)議的設計是本課題的重點與難點所在。 RTL8019AS 的數(shù)據(jù)包發(fā)送程序的編寫 數(shù)據(jù)包的發(fā)送部分也提供兩個接口函數(shù),一個是 Send Packet Ready( )用來查詢 RTL8019AS 是否已將前面的數(shù)據(jù)包發(fā)送完,如果是則返回 1,否則返回 0 值。一 個是判斷有無數(shù)據(jù)包到達的函數(shù) B00L Packet Available( ),如果有包到達則返回 1,如果沒有則返回 0 值。后兩個字節(jié)表示數(shù)據(jù)包的大小。我們可以通過判斷 CURR 指針和 BNRY 指針的距離確定是否收到新數(shù)據(jù)包,當 CURR 和 BNRY 不等時說明收到新數(shù)據(jù)包。 圖 RTL8019AS 數(shù)據(jù)包接收緩沖示意圖 第 18 頁 RT18019AS 的 16k 的 RAM 中 哪些頁被用來做接收緩沖區(qū),哪些頁被用來做發(fā)送緩沖區(qū)由兩個寄存器決定: PSTART(page start register)頁起始寄存器 PSTOP(page stop register)頁終止寄存器 在設置了接收緩沖區(qū)之后,那么接收到的第一個數(shù)據(jù)包放在哪里呢 ?這是由 CURR寄存器決定的。 RTL8019AS 的數(shù)據(jù)包接收程序的編寫 RT18019AS 的 16k 字節(jié) RAM 地址范圍為 0x4000~ 0x7fff,一共有 64 頁,這 64頁 RAM 是被用來接收和發(fā)送數(shù)據(jù)包的。 13.設置中斷屏蔽寄存器 IMR(0FH)為 0FFH,即屏蔽掉所有的中斷。 9.設置當前頁面寄存器 CURR(07H)為 PSTART+1,即 4DH。 6.劃分緩沖區(qū)為接收緩沖區(qū)和發(fā)送緩沖區(qū),并建立接收緩沖環(huán)。 2.選擇寄存器頁面:向 命令寄存器 CR(00H)寫入 21H,選擇寄存器頁面 0,以進行后面的操作。 RTL8019AS 的 DMA 總線大概在 10Mhz,而單片機的總線大概 1Mhz,所以在Remote DMA 的過程中不需要特別的等待時序。 3.在 Remote DMA,也就是處理器對網(wǎng)卡 RAM 讀
點擊復制文檔內容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1