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

正文內(nèi)容

嵌入式以太網(wǎng)測試論文(doc畢業(yè)設計論文)-資料下載頁

2025-06-25 21:20本頁面
  

【正文】 塊的設計本嵌入式系統(tǒng)所實現(xiàn)的PING命令、TRACEROUTE命令等兩個以太網(wǎng)測試功能是直接以TCP/IP協(xié)議為基礎的,而IP地址自動獲取則是建立在應用層的DHCP協(xié)議之上的。本文將它們?nèi)繗w屬到應用層模塊中。下面來分析研究這些應用層模塊的概要設計。首先,分析研究各個應用程序的特點。1. PING命令模塊PING命令模塊主要完成PING請求的啟動、PING請求的應答、PING命令的發(fā)送、PING請求的接收等任務。2. TRACEROUTE命令模塊TRACEROUTE命令主要完成TRACEROUTE命令的啟動、TRACEROUTE結果顯示等工作。3. IP地址自動獲取模塊IP地址自動獲取模塊以應用層DHCP協(xié)議為基礎,主要完成IP地址自動獲取的命令啟動、獲取的IP地址保存與更新處理等任務。經(jīng)過上面的分析研究,可以總結出應用層模塊的設計圖如圖37所示。圖37 應用層模塊結構圖 串行通信模塊的設計本節(jié)主要討論串行通信模塊的設計問題。該模塊包括串行口初始化模塊,串行數(shù)據(jù)發(fā)送模塊和串行數(shù)據(jù)接收模塊等三個子模塊。其中,串行數(shù)據(jù)發(fā)送模塊又包含字節(jié)發(fā)送模塊,字發(fā)送模塊,十進制數(shù)發(fā)送模塊,十六進制數(shù)發(fā)送模塊和字符串發(fā)送模塊等五個子模塊,用于發(fā)送不同類型的數(shù)據(jù)。其設計結構圖如圖38所示。圖38 串行通信模塊結構圖 本章小結本章主要詳細討論了嵌入式以太網(wǎng)測試功能主要模塊的設計問題。在分析每個模塊的具體設計時采用了技術成熟的結構化設計方法。在設計過程中,突出了模塊內(nèi)部子模塊之間的調(diào)用關系以及模塊之間的聯(lián)系。第四章 嵌入式以太網(wǎng)測試的實現(xiàn)在完成嵌入式以太網(wǎng)測試功能的設計之后,本章將探討嵌入式以太網(wǎng)測試功能的實現(xiàn)以及對其實驗驗證的問題。在考慮嵌入式以太網(wǎng)測試功能的實現(xiàn)時,所采用的實現(xiàn)語言將采用技術成熟、應用廣泛、開發(fā)效率較高、可讀性與可移植性都非常好的嵌入式C語言。不使用匯編語言主要是由于其開發(fā)效率較低而且可讀性與可移植性也不好。在對嵌入式以太網(wǎng)測試功能的實現(xiàn)進行實驗驗證時,所使用的硬件環(huán)境是一臺PC計算機和一塊MLCP2200DK/F340DK開發(fā)板。實驗軟件環(huán)境是在Windows XP 操作系統(tǒng)下進行,其軟件開發(fā)調(diào)試環(huán)境是Keil uVision [59]。 嵌入式以太網(wǎng)測試的實現(xiàn)本系統(tǒng)實現(xiàn)的所有源程序都是在Keil uVision 集成開放環(huán)境下完成的。該嵌入式開發(fā)系統(tǒng)是一個功能比較全面的開發(fā)環(huán)境。嵌入式以太網(wǎng)測試功能的實現(xiàn)分以下七個部分進行介紹:系統(tǒng)主控模塊、系統(tǒng)初始化模塊、定時中斷模塊、以太網(wǎng)控制器驅動模塊、TCP/IP 協(xié)議族模塊、應用層模塊、串行通信模塊等。源程序全部采用 C51 編寫[5961],具有較好的可讀性和可移植性。整個嵌入式軟件系統(tǒng)的源程序由一系列的 C 語言源程序文件組成,在表41中對每個文件進行了簡要的功能說明。表41主要C 源程序文件及其功能序號源文件功能備注1文件中包含了主函數(shù) main(),調(diào)用系統(tǒng)初始化程序,然后進入主循環(huán)。主程序2完成一些必要參數(shù)初始化,包括以太網(wǎng)控制器初始化、RAM 的初始化、定時器的初始化、串行口的初始化、外部中斷的初始化,從 FLASH 存儲器 中讀取參數(shù)。初始化程序3完成以太網(wǎng)控制器的驅動,包括接收從網(wǎng)絡中數(shù)據(jù)、向網(wǎng)絡發(fā)送數(shù)據(jù)。CP2200驅動4完成以太網(wǎng)幀的向上分用以及對從上層收到的數(shù)據(jù)報進行封裝。以太網(wǎng)驅動5完成 ARP 協(xié)議的處理。包括 ARP 解析,ARP 數(shù)據(jù)報接收、ARP數(shù)據(jù)報發(fā)送、ARP 數(shù)據(jù)報重傳、更新 ARP 高速緩存。TCP/IP協(xié)議6完成 IP 協(xié)議的處理。包括 IP 數(shù)據(jù)報接收、IP 數(shù)據(jù)報發(fā)送。TCP/IP協(xié)議7完成 ICMP 協(xié)議的處理。包括 ICMP 數(shù)據(jù)報接收和發(fā)送。主要是對 PING 命令的響應。TCP/IP協(xié)議,應用程序8完成 UDP 協(xié)議的處理。包括 UDP 數(shù)據(jù)報接收和發(fā)送。TCP/IP協(xié)議9實現(xiàn)TRACEROUTE 功能。應用程序10實現(xiàn) dhcp 協(xié)議的客戶端功能,使網(wǎng)絡客戶端能夠從網(wǎng)絡中的DHCP服務器上自動獲取 IP 地址。應用程序11實現(xiàn)校驗和的計算。校驗和程序12完成定時器的中斷處理。定時程序13串行中斷服務程序。串行通信 系統(tǒng)主控模塊的實現(xiàn)整個嵌入式軟件系統(tǒng)應用程序采用結構化與模塊化的設計。在主函數(shù) main()中,程序分兩大部分?! 〉谝徊糠质窍到y(tǒng)初始化部分,包括系統(tǒng)時鐘初始化、定時器初始化、系統(tǒng)端口初始化、串行口初始化、系統(tǒng)變量初始化、TCP/IP變量初始化、以太網(wǎng)控制器的初始化,從 Flash 存儲器中讀取初始工作參數(shù)?! 〉诙糠质窍到y(tǒng)主循環(huán)體。程序循環(huán)接收網(wǎng)絡數(shù)據(jù)報,收到數(shù)據(jù)報后轉到相應的協(xié)議處理模塊。此外,程序還循環(huán)查詢?nèi)中缘臉酥咀兞?,處?ARP 重發(fā)請求,定時更新 ARP 的高速緩存表。在整個程序流程中,程序除接收定時器中斷外,還接收串行中斷和外部中斷。串行中斷服務程序從 PC 機讀取數(shù)據(jù)。如果是 PC 機發(fā)送過來的系統(tǒng)配置數(shù)據(jù),那么程序將根據(jù)要求完成相應配置,并把配置數(shù)據(jù)存儲在 Flash存儲器中,若不是配置數(shù)據(jù),則將數(shù)據(jù)存儲在數(shù)據(jù)緩沖區(qū)內(nèi)。外部中斷可以用來處理一些外部事件。在本系統(tǒng)中,使用一個按鍵來產(chǎn)生外部中斷,此中斷服務程序的作用是將網(wǎng)絡參數(shù)恢復為默認設置(類似于 BIOS 的恢復默認設置)。方便使用者在忘記網(wǎng)絡參數(shù)的修改值或者參數(shù)修改不正確,不能通過網(wǎng)絡訪問的情況下,迅速恢復參數(shù)的默認值。參照系統(tǒng)主控模塊的設計,可以將嵌入式系統(tǒng)主控模塊的流程圖繪制出來。如圖41所示。圖41嵌入式系統(tǒng)主控模塊的流程圖 系統(tǒng)初始化模塊的實現(xiàn) 系統(tǒng)初始化模塊的實現(xiàn)分為下面六步:1.C8051F340微控制器端口的初始化 對 C8051F340微控制器的相關端口進行設置,使其能夠正常進入所期望的工作狀態(tài)。2.定時器初始化定時器初始化主要對C8051F340微控制器的兩個定時器T0和T2進行設置:其中,定時器 T0 用于定時,其定時間隔分別為 1毫秒、10毫秒、1秒、1分鐘;定時器 T2也用于定時,其定時間隔為 25毫秒。3.串行口 UART0 的初始化對串行口 UART0 的初始化主要設置其波特率為 38400波特,其數(shù)據(jù)格式為 8 位數(shù)據(jù)位,1 位停止位,但無奇偶校驗位。4.外部中斷初始化本文只使用外部中斷0,不使用外部中斷1。因此,只需要對外部中斷 0進行初始化操作,其優(yōu)先級設置為低級。5.以太網(wǎng)控制器的初始化在CP2200 以太網(wǎng)控制器上電后,必須先對其復位之后,才能進行初始化操作。對CP2200 以太網(wǎng)控制器復位主要有兩種方式:一種是熱復位,給該 RESET 引腳施加一個 1ms 以上的高電平就可以復位。施加一個高電平之后,然后施加一個低電平。由于 RESET 引腳是與MCU的 I/O 口 相連的,所以只需要對該 I/O 口操作。另一種是冷復位。對該端口地址的讀出或者寫入數(shù)據(jù)操作,都會引起芯片的復位。在本設計中,我們將采用熱復位方式對CP2200 以太網(wǎng)控制器進行復位。復位之后,要對 CP2200 以太網(wǎng)控制器的工作參數(shù)進行設置,以使該芯片能夠開始正常地工作。在參考系統(tǒng)初始化模塊的設計,其實現(xiàn)流程圖如圖42所示。圖 42系統(tǒng)初始化流程圖 定時中斷模塊的實現(xiàn)本系統(tǒng)利用了MCU的定時器 T0 中斷,定時間隔是 20 毫秒。定時器的功能主要集中在以下幾個方面:1. ARP 緩存的超時設置。物理(MAC)地址和 IP 地址的映射關系是靠 ARP 緩存表來實現(xiàn)的。因為 IP 地址和物理(MAC)地址的映射關系有可能發(fā)生變化,所以,要定義 ARP 的超時。在這里,定義超時時間為 20分鐘。如果時間到,就刪除此映射關系。  2. ARP 地址解析超時的定時,如果 2秒鐘內(nèi),未獲得 ARP 響應,則重發(fā) ARP 請求數(shù)據(jù)報,若重復三次后,都未獲得 ARP 響應,則表示此 IP 地址無法解析,這個 IP 地址在網(wǎng)絡中不存在?! ?. UDP 發(fā)送數(shù)據(jù)報的重傳和超時設置。由于 UDP 提供不可靠的傳輸,所以數(shù)據(jù)報傳輸?shù)目煽啃砸缮蠈討贸绦騺韺崿F(xiàn)。發(fā)送 UDP 數(shù)據(jù)報后,啟動定時,若 2秒鐘內(nèi),仍未收到對方的確認信息,則重傳數(shù)據(jù)報。重傳最多進行三次。如果仍然不行,那么就自動放棄重傳。 以太網(wǎng)控制器驅動模塊的實現(xiàn)CP2200以太網(wǎng)控制器的驅動程序的實現(xiàn)包括初始化以太網(wǎng)控制器、以太網(wǎng)控制器從以太網(wǎng)接收數(shù)據(jù)和向以太網(wǎng)發(fā)送數(shù)據(jù),采用了查詢方式。1. 以太網(wǎng)控制器的初始化以太網(wǎng)控制器的初始化的流程如圖43所示。圖43以太網(wǎng)控制器初始化處理流程圖2. 以太網(wǎng)控制器從以太網(wǎng)接收數(shù)據(jù)CP2200以太網(wǎng)控制器接收到新的數(shù)據(jù)報后,MCU主機通過主機接口從 RAM 中讀出數(shù)據(jù)報。驅動程序讀取數(shù)據(jù)報后,將數(shù)據(jù)報存儲在數(shù)據(jù)存儲器中,再根據(jù)數(shù)據(jù)報類型,向上分用。3. 以太網(wǎng)控制器向以太網(wǎng)發(fā)送數(shù)據(jù)CP2200以太網(wǎng)控制器收到MCU主機發(fā)送來的數(shù)據(jù)報后,經(jīng)過相應的自動處理后,再發(fā)送到以太網(wǎng)中。 TCP/IP 協(xié)議模塊的實現(xiàn)TCP/IP 協(xié)議的嵌入實現(xiàn)是本系統(tǒng)軟件部分的重點和難點。需要嵌入的協(xié)議包括 IP 協(xié)議、ARP 協(xié)議、ICMP 協(xié)議和UDP 協(xié)議等。在主函數(shù)中,程序循環(huán)查詢 CP2200 以太網(wǎng)控制器接收緩沖區(qū)的讀寫指針,根據(jù)讀寫指針的關系判斷是否從網(wǎng)絡上收到新的數(shù)據(jù)報。如果從網(wǎng)絡中收到新數(shù)據(jù)報,則進入驅動程序的接收模塊,在這個模塊中,程序檢驗網(wǎng)絡包的合法性,包括檢驗數(shù)據(jù)報的長度是否小于 1520,若不是,則將數(shù)據(jù)報丟棄。如果正確,根據(jù)以太網(wǎng)幀首部的協(xié)議字段,將數(shù)據(jù)報向上分用。如果協(xié)議字段的值是 0x0806,表示收到的是 ARP 數(shù)據(jù)報,則調(diào)用 ARP 接收模塊。如果協(xié)議字段的值是 0x0800,表示收到的是 IP 數(shù)據(jù)報,則調(diào)用 IP 接收模塊。IP 接收模塊再繼續(xù)將數(shù)據(jù)報向上分用到TCP接收模塊、UDP 接收模塊或ICMP 接收模塊。傳送到 TCP 接收模塊的數(shù)據(jù)報有可能是 HTTP 數(shù)據(jù)報,也可能是發(fā)送到應用端口。當數(shù)據(jù)報被正確分用后,就由應用程序進行響應處理。如果有數(shù)據(jù)要發(fā)送,則調(diào)用 UDP 發(fā)送模塊、ICMP 發(fā)送模塊、IP 發(fā)送模塊或ARP 發(fā)送模塊等中的相應模塊,它們的作用是逐層給數(shù)據(jù)報添加本層的首部信息,往下傳遞,直到發(fā)送到以太網(wǎng)上。源代碼中使用的數(shù)據(jù)類型定義如下:typedef unsigned char ui08。 // 8 位無符號整數(shù)typedef unsigned short ui16。 // 16 位無符號整數(shù)typedef unsigned long ui32。 // 32 位無符號整數(shù)在TCP/IP協(xié)議族中所用的幾個主要數(shù)據(jù)結構定義如下:以太網(wǎng)幀頭部的數(shù)據(jù)結構定義如下:typedef struct _ETH_HEADER { ui08 dest_mac[6]。 // 目的MAC地址 ui08 source_mac[6]。 // 源MAC地址 ui16 frame_type。 // 數(shù)據(jù)幀類型} ETH_HEADER。ARP頭部的數(shù)據(jù)結構定義如下:typedef struct _ARP_HEADER { ui16 hardware_type。 // 硬件類型 ui16 protocol_type。 // 協(xié)議類型 ui08 mac_length。 // MAC 地址長度 ui08 ip_length。 // IP 地址長度 ui16 message_type。 // 消息類型 ui08 source_mac[6]。 // 源 MAC 地址 ui32 source_ip。 // 源 IP 地址 ui08 dest_mac[6]。 // 目的 MAC 地址 ui32 dest_ip。 // 目的 IP 地址} ARP_HEADER。ARP緩存表的數(shù)據(jù)結構定義如下:typedef struct _ARP_CACHE { ui32 ip。 // IP 地址 ui08 mac[6]。 // MAC 地址 ui08 timer。 // 定時倒計時} ARP_CACHE。 IP頭部的數(shù)據(jù)結構定義如下:typedef struct _IP_HEADER { ui08 ver_len。 // IP 版本與 IP 頭部長度 ui08 type_of_service。 // 服務類型 ui16 total_length。 // IP 數(shù)據(jù)報總長度 ui16 identifier。 // IP 數(shù)據(jù)報標識 ui16 fragment_info。 // 碎片信息 ui08 time_to_live。 // 跳數(shù) ui08 protocol。 // 協(xié)議類型 ui16 header_cksum。 // IP 頭部校驗和 ui32 source_ip。 // 源 IP 地址 ui32 dest_ip。 // 目的 IP 地址} IP_HEADER。PING頭部的數(shù)據(jù)結構定義如下:typedef struct
點擊復制文檔內(nèi)容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1