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

正文內(nèi)容

電子科學(xué)與技術(shù)單片機(jī)tcpip論文初稿(參考版)

2025-06-30 16:48本頁(yè)面
  

【正文】 34參考文獻(xiàn)[1][2] Adam Dunkels. uIP 源代碼 [3] 郁峰. 單片機(jī)對(duì) TCP/IP 通訊的實(shí)現(xiàn)[N]. 蘇州市職業(yè)大學(xué)學(xué)報(bào),2022 年 3 月.[4] 趙國(guó)鋒,邱作雨,張毅. 基于單片機(jī)的嵌入式 TCP/IP 協(xié)議棧的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)技術(shù)與發(fā)展,第 19 卷,第 3 期.[5] 張?jiān)迄i ,楊景常. 基于 TCP/ IP 協(xié)議的單片機(jī)系統(tǒng)以太網(wǎng)通訊設(shè)計(jì)與實(shí)現(xiàn)[N]. 四川工業(yè)學(xué)院學(xué)報(bào), 10005722 (2022).[6] 鄧治國(guó),張維新. UIP TCP/IP 協(xié)議棧在 51 系列單片機(jī)上的應(yīng)用[J]. 微。所以單片機(jī) TCP/IP 協(xié)議棧的發(fā)展前景還是很好的。在現(xiàn)在網(wǎng)絡(luò)的發(fā)展情況看來,電子產(chǎn)品必然要入網(wǎng)。通過對(duì) TCP/IP 協(xié)議的了解,在前人的基礎(chǔ)上移植了 UIP 協(xié)議棧,最終實(shí)現(xiàn)了單片機(jī)的 TCP/IP 數(shù)據(jù)傳輸。到這里就已經(jīng)完全實(shí)現(xiàn)了單片機(jī)的TCP/IP 數(shù)據(jù)傳輸。做完以上準(zhǔn)備后,可以先試試 ping 以下單片機(jī),收到回復(fù)后表示可以通信了。對(duì)于計(jì)算機(jī)應(yīng)做準(zhǔn)備為:編寫一個(gè)可以向某個(gè) IP 或端口發(fā)起連接的上位機(jī)。在編譯前應(yīng)先設(shè)好想要的 IP 地址。 struct SMemHead DT_XDATA * RTLReceivePacket() REENTRANT_SIG{定義中間變量 curr,bnry;定義 16 位地址變量 address;定義 16 位變量 PacketSize;定義緩沖區(qū)指針變量 *MemHead;檢查 InSending 標(biāo)志如果有數(shù)據(jù)在發(fā)送,返回 NULL ;讓 MemHead = NULL;32如果沒有數(shù)據(jù)在發(fā)送 RTLPage(1);數(shù)據(jù)包首地址付給 curr;切換寄存器頁(yè) RTLPage(0);檢查開始頁(yè)是否超出范圍;如果接收包沒錯(cuò)誤,進(jìn)行以下操作使用 curr 作為 數(shù)據(jù)包開始頁(yè);檢查是否有數(shù)據(jù)包需要讀取;如果有數(shù)據(jù)包就讀取數(shù)據(jù)包 ;先讀取包頭信息;檢查 rsr, 如果包損壞了就丟棄;如果是完好的數(shù)據(jù)包 分配緩存存取數(shù)據(jù)包;} 計(jì)算機(jī)以 TCP/IP 協(xié)議通信方式監(jiān)控單片機(jī)對(duì)于單片機(jī)應(yīng)做準(zhǔn)備為:通過 的原理圖做出實(shí)物后,在 keilc 上對(duì) 所提到的代碼進(jìn)行編譯后生成 hex 文件。返回 TRUE 表示發(fā)送完成。}(2)其次編寫一個(gè)數(shù)據(jù)發(fā)送函數(shù),其偽代碼如下:31該函數(shù)發(fā)送數(shù)據(jù)包‘buffer’為數(shù)據(jù)內(nèi)容‘size’是數(shù)據(jù)長(zhǎng)度 ,數(shù)據(jù)長(zhǎng)度不能大于 MAX_PACKET_SIZE 超過部分會(huì)被丟棄。/*硬件重啟后要延遲一段時(shí)間讓 rtl8019 進(jìn)行初始化*/向寄存器 0x10 寫入 0x10;/* 向寄存器 0x10 0x17 寫入值能夠重啟 rtl8019 *//* 初始化 RTL 寄存器*/向 CR 寄存器寫入 (0X00 | 0X20 | 0X01)。 當(dāng)程序中有多個(gè)處于 listen 的 socket 時(shí),你需要給每個(gè) socket 準(zhǔn)備一個(gè) OnAccept 函數(shù)。 pNewSocketclose = OnClose。 //保存 pNewSocket,以后可以用 ExAccept 發(fā)送數(shù)據(jù) pNewSocketrecv = OnAcceptRecv。pNewSocket 是將要獲得這個(gè)連接的控制權(quán)的 socket 指針。如果程序中用到 TCPListen 函數(shù)監(jiān)聽某端口,這時(shí)需要寫 OnAccept 函數(shù)。當(dāng)程序中有多個(gè) TCP 連接同時(shí)存在時(shí),需要給每個(gè)連接準(zhǔn)備一個(gè) OnClose 函數(shù)。pSocket 指向?qū)⒁P(guān)閉的 socket。當(dāng)程序中有多個(gè) TCP 連接同時(shí)存在時(shí),需要給每個(gè)連接準(zhǔn)備一個(gè) OnReceive 函數(shù)。buf 指向接收的數(shù)據(jù),size 是接收的數(shù)據(jù)量的大小。還有幾個(gè)函數(shù)要編寫:(1)編寫 OnReceive 函數(shù),它應(yīng)該有如下的參數(shù)和返回值,函數(shù)名可以任意:void OnReceive1(void DT_XDATA * buf,WORD size) REENTRANT_MUL 在使用 TCPConnect 函數(shù)時(shí),OnReceive1 將作為 TCPConnect 函數(shù)的一個(gè)參數(shù),也就是設(shè)置該 socket 的接收函數(shù)。 TCPTimer()。29 的編寫: 中要設(shè)置一個(gè) 25ms 的定時(shí)中斷函數(shù)并在中斷函數(shù)中調(diào)用 NetIfTimer()。28圖 網(wǎng)卡芯片 RTL8019AS 接法 主要代碼文件說明以下是該設(shè)計(jì)用到的代碼文件介紹: //Icmp 協(xié)議 //ip 層 // 網(wǎng)絡(luò)接口層 // tcp 協(xié)議層 //ARP 協(xié)議 //以太網(wǎng)接口協(xié)議 //RTL8019AS 以太網(wǎng)接口芯片驅(qū)動(dòng)程序 //全局函數(shù)和宏定義 //主程序,也是應(yīng)用層這里最重點(diǎn)的是 網(wǎng)卡驅(qū)動(dòng)程序和 主程序:網(wǎng)卡驅(qū)動(dòng)主要是為上層協(xié)議提供接口,需要做的工作有:初始化網(wǎng)卡,編寫數(shù)據(jù)包發(fā)送和數(shù)據(jù)包接收函數(shù)。這里應(yīng)注意的是 SA0SA19 網(wǎng)卡地址線的接法,其中 SA6 接單片機(jī) A15 腳的用意是將網(wǎng)卡芯片的尋址范圍固定為 0X80000XFFFF。片選引腳接單片機(jī)的 A15 腳尋址范圍為0X7FFF0X0000。由于要用 RAM 作為數(shù)據(jù)緩存,單片機(jī)本身 RAM 不夠用,需要擴(kuò)展外部 RAM。剩下的問題就是對(duì)理論進(jìn)行實(shí)踐了。 typedef unsigned long u32_t。 (6)由于單片機(jī)是大端結(jié)構(gòu),因此宏定義需要修改 define UIP_CONF_BYTE_ORDER UIP_BIG_ENDI AN (7)暫時(shí)不移植打印信息,先關(guān)閉 define UIP_CONF_LOGGING 0 (8)定義數(shù)據(jù)結(jié)構(gòu)類型 typedef unsigned char u8_t。(1)配置 IP 地址,默認(rèn)先關(guān) IP,在初始化中再設(shè)定。所以, “遠(yuǎn)程”和“本地”的概念僅僅為了區(qū)分是主機(jī)(單片機(jī))還是網(wǎng)卡控制器操作 RAM BUFFER。前面所提到的“遠(yuǎn)程 DMA 地址”就是單片機(jī)往 RAM BUFFER 中讀寫數(shù)據(jù)用到的地址。這樣,如果單片機(jī)訪問 8000H 地址就相當(dāng)于訪問 RTL8019 的 300H 了,訪問 801FH 地址就相當(dāng)于訪問 RTL8019 的 31FH。于是,我們將這 5 根地址線接到單片機(jī)的 - 上。表 地址線電平地址線A19A18A17A16A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0300H 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0… 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 X X X X X31FH 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1從表中知道,SA19-SA10,SA7-SA6 固定接低電平(地) ,SA9SA8 固定接高電平(VCC) 。將它轉(zhuǎn)化為二進(jìn)制的地址線的電平就很直觀了。從 RTL8019 的芯片手冊(cè)中知道,I/O 訪問的寄存器只有 32 個(gè),在后面會(huì)介紹這些寄存器。SA0—SA19 為網(wǎng)卡的地址線, 共 20 根,這個(gè)需要怎么接呢?前面說過, IOS3, IOS2,IOS1,IOS0 管腳決定了芯片的 I/O 地址。TPIN+,TPIN 管腳(59, 8)和 HD,LD 管腳(45, 46)都接隔離變壓器上,通過 RJ45 接口與網(wǎng)絡(luò)相連。IOWB (第 30 腳) , IORB (第 29 腳)接到單片機(jī)的 , (/WR , /RD) ,用來控制讀寫時(shí)序。如果這個(gè)管腳下拉,則選擇 8 位模式,如果這個(gè)管腳接高電平,將選擇 16 位的模式。23RSTDRV(第 33 腳):用來復(fù)位網(wǎng)卡,我們一般將它連到單片機(jī)的管腳上,用來快速?gòu)?fù)位 RTL8019,這個(gè)管腳拉高復(fù)位持續(xù)時(shí)間至少 2ms,建議拉高 100ms 左右再拉低來達(dá)到復(fù)位效果。網(wǎng)絡(luò)媒體類型由 PL0,PL1(第 74,77 腳)決定。網(wǎng)卡的接口一般是 BNC 的可以支持 8 線雙絞或同軸電纜。AUI 管腳(第 64 腳),該管腳決定使用 AUI 還是 BNC 接口。表 IOSX 引腳接法對(duì)應(yīng)的芯片 I/O 地址22芯片的 BTRM 地址由 BS4,BS3,BS2,BS1 管腳(第 72,71,69,68,67)決定, BTRM 在電腦里用來做無盤工作站的時(shí)候用到,這樣可以從網(wǎng)卡進(jìn)行引導(dǎo),而需要從硬盤的 c 盤等引導(dǎo)系統(tǒng)。主要使用的跳線如下:IOS3,IOS2,IOS1,IOS0 管腳(第 85,84,82,81 腳)決定了芯片的 I/O 地址。當(dāng) JP管腳為低電平時(shí),RTL8019 工作在即插即用方式或免跳線方式,高電平時(shí)處于跳線方式。因此,單片機(jī)比較適合使用跳線方式。對(duì)免跳線方式,需要在芯片外部接 EEPROM 93c46(很多電腦用的網(wǎng)卡上能找到這芯片,大家有興趣可以看下) ,用來保存網(wǎng)卡的 MAC 地址等參數(shù),同時(shí),需要單片機(jī)操作 RTL8019 來控制 93c46 的讀寫,不僅費(fèi)錢還費(fèi)力,一般也不采用。 (3)即插即用方式,由軟件進(jìn)行自動(dòng)配置plug and play(PnP ) 。 RTL8019 有 3 種工作方式:(1)跳線方式,網(wǎng)卡的 i/o 和中斷由跳線決定。 (NE2022 是一個(gè)由 Novell 公司所創(chuàng)立并且被業(yè)界廣泛采用的網(wǎng)絡(luò)卡的標(biāo)準(zhǔn),大多數(shù) ISA 網(wǎng)卡都與 NE2022 兼容,如 Nat Sem i 的 DP83902,Davi 的 DM9008,NSI 的 DP8390,MXIC 的 MX98905 等) 。 (3)單機(jī)地址:除了廣播和組播的地址就是單機(jī)地址,非廣播和組播數(shù)據(jù)包就要與這個(gè)地址匹配了才能被接收和處理。如 01:03:52:3A:85:23 就是組播地址。如果一個(gè)幀的目的地址是組播地址,那么網(wǎng)絡(luò)中預(yù)先定義的一組設(shè)備都能接收并處理該設(shè)備。廣播地址的每一位都是 1,即: FF:FF:FF:FF:FF:FF。 MAC 地址又可以分成 3 類: (1)廣播地址:只能用作目的地址。每個(gè)廠商必須確保它所制造的每個(gè)以太網(wǎng)設(shè)備都具有相同的前三個(gè)字節(jié)以及不同的后三個(gè)字節(jié),這樣就可保證世界上每個(gè)以太網(wǎng)設(shè)備都具有唯一的 MAC 地址。 以太網(wǎng)的 MAC 地址由 48bit (6 字節(jié)) 組成,如 08:02:10:3A:85:23 就是一個(gè) MAC地址。因此, MAC 地址就像是是網(wǎng)絡(luò)設(shè)備的“身份證”一樣,需要具有全球唯一性。網(wǎng)卡獲取到這些數(shù)據(jù)后會(huì)組成物理傳輸幀發(fā)送出去。如表二。由于網(wǎng)卡的自動(dòng)管理,并且前導(dǎo)碼 FR 和幀數(shù)據(jù)定界符 SD 的值是固定的,也由網(wǎng)卡自動(dòng)生成和插入。此序列由發(fā)送端網(wǎng)卡自動(dòng)生成,自動(dòng)填充到幀的最后。 PAD(填充位) :當(dāng) DATA 的數(shù)據(jù)不足 46 字節(jié)時(shí),缺少的字節(jié)需要補(bǔ)上(可補(bǔ)任意值) 。除去 14 字節(jié)為 DA、SA、TYPE 以及 4 字節(jié)的 FCS,DATA 不能超過 1500 字節(jié)。如果這個(gè)字段小于 0600H 的值,則表示數(shù)據(jù)包的長(zhǎng)度,在單片機(jī)的網(wǎng)絡(luò)編程中不考慮這種用法。如 0800H 表示數(shù)據(jù)為 IP 包,0806H 表示數(shù)據(jù)為 ARP 包。 SA(源地址) :48 位,說明該幀的數(shù)據(jù)是哪個(gè)網(wǎng)卡發(fā)的,即發(fā)送端的網(wǎng)卡物理地址(MAC ) 。這個(gè)地址和下面的 SA 就是我們常說的網(wǎng)卡的 MAC 地址。 DA(目的地址) :目的以太網(wǎng)的物理地址,由 48 位二進(jìn)制組成(6 個(gè)字節(jié)),說明該幀傳輸給哪個(gè)網(wǎng)卡。同時(shí)也指明了傳輸?shù)乃俾剩?0M 和 100M 的方波頻率不一樣,所以 100M 網(wǎng)卡可以兼容 10M 網(wǎng)卡) 。其規(guī)定的幀結(jié)構(gòu)如下: 表 以太網(wǎng)( )幀結(jié)構(gòu)PR(前導(dǎo)碼) :包括了 7 個(gè)字節(jié)的二進(jìn)制“1” 、 “0”間隔的代碼,即 1010…10共 56 位。 } 仿照 \unix\ 寫網(wǎng)卡驅(qū)動(dòng)程序 使用以太網(wǎng)的幀結(jié)構(gòu)下面以 IEEE 數(shù)據(jù)幀來分析數(shù)據(jù)鏈路層和網(wǎng)卡的工作內(nèi)容。 uip_arp_ timer()。arp_timer)) { timer_reset(amp。 etherdev_send()。 i++) { uip_periodic(i)。 for(i = 0。periodic_timer)) { timer_reset(amp。 if(uip_len 0) { etherdev_send()。 etherdev_send()。 uip_input()。 /*主循環(huán)*/ while(1) { /*從網(wǎng)卡讀數(shù)據(jù)*/ uip_len = etherdev_read()。 uip_ipaddr(ipaddr , 255,255,255,0)。 uip_ipaddr(ipaddr , 192,168,1,16)。 /*IP 地址、網(wǎng)關(guān)、掩碼設(shè)置*/ u
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1