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

正文內(nèi)容

嵌入式webserver的設(shè)計(jì)與實(shí)現(xiàn)(文件)

 

【正文】 一頁(yè)數(shù)據(jù),要將BNRY加1,然后再寫到BNRY寄存器。用戶通過這個(gè)判斷知道沒有包可以讀。初始化為指向第一個(gè)發(fā)送緩沖區(qū)的頁(yè)0x40。 IMR中斷屏蔽寄存器,設(shè)置成0x00屏蔽所有的中斷。MAR0~MAR7全部設(shè)置為0xff時(shí),將接收所有的組播數(shù)據(jù)包,將MAR0~MAR7全部設(shè)置為0x00時(shí),將不接收所有組播地址的數(shù)據(jù)包。 接收數(shù)據(jù)網(wǎng)絡(luò)接口通過兩個(gè)DMA操作來完成數(shù)據(jù)的接收和發(fā)送,本地DMA完成RTL8019與其內(nèi)部FIFO隊(duì)列之間的數(shù)據(jù)傳送,遠(yuǎn)程DMA完成RTL8019與CPU之間的數(shù)據(jù)傳送。當(dāng)BNRY+1與CURR不等時(shí),說明接收緩沖區(qū)接收到了新的數(shù)據(jù)幀。讀出4個(gè)字節(jié),實(shí)際上是讀兩次,因?yàn)閿?shù)據(jù)接口是16位的;,遠(yuǎn)程DMA完成;,如果接收正確,需要重復(fù)以上接收過程再啟動(dòng)遠(yuǎn)程DMA,收取該數(shù)據(jù)包數(shù)據(jù),只不過設(shè)置遠(yuǎn)程DMA計(jì)數(shù)器RBCRI、RBCRO為剛才接收到的數(shù)據(jù)包長(zhǎng)度;,設(shè)置下一次接收數(shù)據(jù)指針和接收邊界寄存器(即為下一包的開始指針地址)。,把數(shù)據(jù)發(fā)送出去:(06H)、TBCRO(05H)為發(fā)送數(shù)據(jù)包的長(zhǎng)度;(04H)為40H,即發(fā)送緩沖區(qū)開始地址高位字節(jié);。這種方式占用單片機(jī)的資源少,但可以實(shí)現(xiàn)地址的解析,在點(diǎn)對(duì)點(diǎn)通信時(shí)很有效。(3)由于以太網(wǎng)數(shù)據(jù)報(bào)最小為60字節(jié),而整個(gè)ARP報(bào)文(28字節(jié))加上以太網(wǎng)首部(14字節(jié))也不過只有42字節(jié),因而在發(fā)送ARP數(shù)據(jù)報(bào)時(shí),需要填充數(shù)據(jù)報(bào)至60字節(jié)。IP協(xié)議發(fā)送數(shù)據(jù)報(bào)過程比較簡(jiǎn)單,當(dāng)上層如TCP層要求傳送一個(gè)數(shù)據(jù)報(bào)時(shí),IP層根據(jù)要求填好各個(gè)首部字段,然后把IP報(bào)頭加到上層數(shù)據(jù)的首部,再交由鏈路層處理就可以了。當(dāng)系統(tǒng)需要發(fā)送數(shù)據(jù)時(shí),IP層以上的協(xié)議將調(diào)用該子程序。包含ICMP報(bào)文的IP數(shù)據(jù)報(bào)報(bào)頭“協(xié)議”字段指出數(shù)據(jù)區(qū)內(nèi)容為ICMP報(bào)文。代碼字段提供關(guān)于類型字段的進(jìn)一步信息。代碼字段對(duì)于Ping請(qǐng)求和應(yīng)答都為零。.(3)選項(xiàng)數(shù)據(jù)字段為一任選的數(shù)據(jù)區(qū),由發(fā)送方任意選定。回顯請(qǐng)求包含一個(gè)任選數(shù)據(jù)區(qū),應(yīng)答必須包含請(qǐng)求中任選數(shù)據(jù)區(qū)的數(shù)據(jù)。這與面向流字符的TCP協(xié)議不同,UDP數(shù)據(jù)包封裝成一份IP數(shù)據(jù)包的格式如圖44所示。TCP協(xié)議在兩個(gè)端點(diǎn)之間建立了等效于物理連接的邏輯連接。當(dāng)一定量的數(shù)據(jù)到達(dá)后,接收者對(duì)字節(jié)計(jì)數(shù)進(jìn)行確認(rèn)。圖311所示,就是一個(gè)完整的TCP狀態(tài)轉(zhuǎn)移圖。從而實(shí)現(xiàn)TCP的狀態(tài)機(jī)的功能。在將數(shù)據(jù)發(fā)向遠(yuǎn)方主機(jī)之前,必須先建立TCP接入。一方面作為對(duì)客戶請(qǐng)求接入的響應(yīng),一方面要求客戶端也進(jìn)行接入。應(yīng)答段本身不再需要應(yīng)答,避免應(yīng)答陷入無窮的嵌套。消除傳輸中的錯(cuò)誤,依靠持續(xù)跟蹤已發(fā)出數(shù)據(jù)段的應(yīng)答是否返回。每次成功的接入,只要本端和對(duì)端沒有執(zhí)行過關(guān)閉操作,就一直是接通的。此時(shí),服務(wù)器還可以向客戶機(jī)發(fā)送數(shù)據(jù),即接入處于“半關(guān)閉”狀態(tài)。此時(shí),服務(wù)器不能再發(fā)送數(shù)據(jù)。需要有一個(gè)間歇時(shí)間,避免前后兩次接入產(chǎn)生牽連。序列號(hào)和確認(rèn)號(hào)這兩個(gè)字段用于協(xié)同完成TCP協(xié)議中的確認(rèn)工作?;瑒?dòng)窗口是一種在流量控制和網(wǎng)絡(luò)傳輸效率之間取得折中的方案,它允許發(fā)送方在等待一個(gè)確認(rèn)之前發(fā)送多個(gè)窗口。 TCP變量的定義TCP數(shù)據(jù)被封裝在一個(gè)IP數(shù)據(jù)報(bào)中,如圖45所示。標(biāo)準(zhǔn)的WEB服務(wù)器通過多線程或多進(jìn)程同時(shí)處理來自多個(gè)客戶機(jī)的連接,但考慮到單片機(jī)的處理能力以及存儲(chǔ)空間大小,并不用實(shí)現(xiàn)這樣的功能,而只實(shí)現(xiàn)一次只處理與一個(gè)客戶機(jī)的連接。當(dāng)遠(yuǎn)端客戶機(jī)訪問服務(wù)器時(shí),先與服務(wù)器進(jìn)行TCP連接。用HTTP協(xié)議實(shí)現(xiàn)WEB服務(wù)器的程序流程圖如圖46所示。 HTTP協(xié)議的實(shí)現(xiàn)HTTP最起碼的功能應(yīng)該能夠?qū)λ邮盏降腡CP包中的信息提取出HTTP消息,并對(duì)此消息進(jìn)行分析,以便知道對(duì)方請(qǐng)求內(nèi)容,并將相應(yīng)的信息發(fā)送給對(duì)方?;瑒?dòng)窗口的一個(gè)極限情況是只使用一個(gè)窗口,這便成了一種簡(jiǎn)單的確認(rèn)方法。但如果每次只對(duì)單個(gè)TCI)報(bào)文進(jìn)行確認(rèn)的話,并沒有太大的難度。只要使用TCP,就不可能在所建立的點(diǎn)一點(diǎn)接入上實(shí)現(xiàn)數(shù)據(jù)的全速傳送,原因在于數(shù)據(jù)流中被插入了有些隨機(jī)性的應(yīng)答環(huán)節(jié),它改變著傳送率。至此,接入已從兩端拆除完畢。仍可接收數(shù)據(jù)。此時(shí),客戶機(jī)不能再向遠(yuǎn)方服務(wù)器發(fā)送數(shù)據(jù),但是仍可接收數(shù)據(jù)。如果還是未收到應(yīng)答,則適當(dāng)增加間隔時(shí)間再次重發(fā)。在第二步中建立TCP接入時(shí),服務(wù)器也要選送一個(gè)自己的初始序號(hào),并用這個(gè)號(hào)作為對(duì)客戶機(jī)送來序號(hào)的應(yīng)答號(hào)返送給客戶機(jī)。作為對(duì)服務(wù)器所發(fā)請(qǐng)求接入的響應(yīng)。建立TCP的點(diǎn)——點(diǎn)連接,包括“三重握手”的操作:(l)客戶機(jī)向服務(wù)器發(fā)出同步段(SYN),請(qǐng)求接入。State的取不同的值代表不同的狀態(tài)。對(duì)于Web服務(wù)器,其TCP的狀態(tài)機(jī)做了簡(jiǎn)化,只存在6個(gè)狀態(tài),這六個(gè)狀態(tài)是:TCP_Listen、TCP_SYN_Rec、TCP_ SYN_Sent、TCP_Established、TCP_Close_wait和TCP_ Last_ Ack。TCP協(xié)議可以用有限狀態(tài)機(jī)來描述的,有限狀態(tài)機(jī)是這樣一種機(jī)器,它通過有限個(gè)狀態(tài),并且在某一時(shí)刻只能處于某個(gè)狀態(tài)。連接的雙方必須對(duì)發(fā)送和接收的數(shù)據(jù)保持跟蹤,以便能夠檢測(cè)出數(shù)據(jù)流中的遺漏和重復(fù)。(3)void udP_echo_service(UCHAR xdata*inbuf,UINT len)一個(gè)簡(jiǎn)單的處理UDP協(xié)議的函數(shù)將接收到的字符再發(fā)送回源IP地址。Ping應(yīng)答程序流程圖如圖48所示。經(jīng)過簡(jiǎn)化的ping能夠完成最基本的連通測(cè)試功能。(3)序號(hào)字段用于一組Ping請(qǐng)求和應(yīng)答,序號(hào)從0開始,每發(fā)送一次新的Ping請(qǐng)求,該值就加一。 表44 ICMP報(bào)文8位類型8位代碼16位效驗(yàn)和 (不同類型和代碼有不同內(nèi)容) Ping協(xié)議是ICMP報(bào)文中的一種,協(xié)議格式如圖所示。它的協(xié)議格式如圖所示。 該子程序檢測(cè)一個(gè)外來的數(shù)據(jù)包,并對(duì)數(shù)據(jù)包作相應(yīng)的處理。從鏈路層收到一個(gè)數(shù)據(jù)報(bào)檢驗(yàn)版本號(hào)、校驗(yàn)和、目的IP地址是否符合要求開始記錄協(xié)議類型,拆數(shù)據(jù)報(bào)協(xié)議類型所指明的上層協(xié)議處理模塊返回丟失該數(shù)據(jù)報(bào)NY 圖 42 IP協(xié)議接收數(shù)據(jù)報(bào)處理過程表43 IP數(shù)據(jù)包的封裝14字節(jié) 20字節(jié) n個(gè)字節(jié)以太網(wǎng)首部IP首部上層數(shù)據(jù)報(bào)。當(dāng)從數(shù)據(jù)鏈路層接收到一個(gè)IP數(shù)據(jù)報(bào)時(shí),它通過檢查該數(shù)據(jù)報(bào)的版本號(hào)、校驗(yàn)和與目的IP地址是否符合要求,然后解析出協(xié)議類型,交由上層協(xié)議處理。設(shè)計(jì)要點(diǎn):(1)ARP協(xié)議以及IP協(xié)議都是以太網(wǎng)協(xié)議的上層協(xié)議,因此在ARP報(bào)文上需要添加以太網(wǎng)首部(包括源物理地址、目的物理地址、幀類型,共14字節(jié))。當(dāng)系統(tǒng)收到一個(gè)目的IP地址為本機(jī)的IP地址的ARP請(qǐng)求報(bào)文后,它就把MAC地址填上去,然后用兩個(gè)目的端地址分別替換兩個(gè)發(fā)送端地址,并把操作字段置為2,最后把它發(fā)送出去。通過RTLSO19的本地DMA將數(shù)據(jù)送入FIFO進(jìn)行發(fā)送。本課題采用查詢方式接收數(shù)據(jù)包,具體接收過程如下:,并判斷BNRY十1是否等于CUUR。在中斷方式下,控制器每收到一個(gè)完整的以太網(wǎng)數(shù)據(jù)包后,向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)RTL8019AS的中斷申請(qǐng)后,進(jìn)人中斷服務(wù)程序并開始接收數(shù)據(jù)。因?yàn)镻AGEZ的寄存器是只讀寄存器,所以不能和不需要設(shè)置。 MAR0~MAR7是設(shè)置多點(diǎn)播送的參數(shù)。 TCR發(fā)送配置寄存器,啟用CRC自動(dòng)生成和自動(dòng)校驗(yàn),工作在正常模式。然后用戶應(yīng)該讀取數(shù)據(jù)包,直到上述條件成立時(shí),表示所有數(shù)據(jù)包己經(jīng)讀完,此時(shí)停止讀取數(shù)據(jù)包。CURR和BNRY主要用來控制緩沖區(qū)的存取過程,保證能順次寫入和讀出。此時(shí)實(shí)際上出現(xiàn)了內(nèi)存溢出。那么初始化時(shí),它應(yīng)該指向0x4c+1=0x4d。用0x4c~0x7f共52頁(yè)作為網(wǎng)卡的接收緩沖區(qū)。這16 KB的RAM的一部分用于存放接收的數(shù)據(jù)包,一部分用于存儲(chǔ)待發(fā)送的數(shù)據(jù)包。RDRD1和RD0位用于要確定的功能: =001讀網(wǎng)卡內(nèi)存 =010寫網(wǎng)卡內(nèi)存 =011發(fā)送網(wǎng)卡數(shù)據(jù)包 =1**完成或結(jié)束DMA的讀寫操作TXP位寫入1時(shí)發(fā)送數(shù)據(jù)包,發(fā)完自動(dòng)清零;STA和STP位用于啟動(dòng)和停止。其中CR寄存器是控制命令寄存器,地址是00h,其各個(gè)位的含義如下表41所示,該寄存器用于選擇寄存器頁(yè),控制遠(yuǎn)程DMA操作。(程序見附錄)RTL8019AS有四頁(yè)寄存器組,每頁(yè)寄存器組有16個(gè)寄存器。以太網(wǎng)協(xié)議由芯片硬件自動(dòng)完成,不用考慮。軟件設(shè)計(jì)分兩部分:網(wǎng)卡控制器驅(qū)動(dòng)程序設(shè)計(jì)和TCP/IP協(xié)議設(shè)計(jì)。它傳送的只是一個(gè)拷貝文件,不是原文件。 應(yīng)用層的協(xié)議分析應(yīng)用層負(fù)責(zé)處理特定的應(yīng)用程序細(xì)節(jié)。校驗(yàn)和:用來確認(rèn)TCP報(bào)頭與數(shù)據(jù)是否被破壞的字段;緊急指針:以字節(jié)為單位表示放置需要緊急處理的數(shù)據(jù)的位置。ACK(Acknowledgement Flag)表示應(yīng)答確認(rèn)號(hào)的字段是有效的。片偏移(Offset):表示TCP數(shù)據(jù)的起始位置,以四字節(jié)的整數(shù)倍表示。序號(hào):用于保證數(shù)據(jù)的到達(dá)順序與可靠性。檢驗(yàn)和覆蓋整個(gè)UDP長(zhǎng)度。一個(gè)使用UDP實(shí)行信息廣播的典型例子,就是在DHCP協(xié)議(動(dòng)態(tài)主機(jī)控制協(xié)議)中,當(dāng)系統(tǒng)引導(dǎo)的時(shí)候,發(fā)出廣播信息,通知所有DHCP服務(wù)器向系統(tǒng)提交網(wǎng)絡(luò)配置信息。然而也正是由于UDP沒有保證可靠性的機(jī)制,沒有其他的關(guān)卡機(jī)制,UDP才得以實(shí)現(xiàn)全速發(fā)送(即充分發(fā)揮物理通信設(shè)備的速度)。因此就會(huì)發(fā)生某一客戶機(jī)發(fā)給一個(gè)主機(jī),而此主機(jī)事先并未把此客戶機(jī)列入其目標(biāo)端口號(hào)而加以監(jiān)聽。但是由于TCP所傳數(shù)據(jù)流應(yīng)用了順序號(hào)和應(yīng)答措施,可以發(fā)現(xiàn)數(shù)據(jù)的丟失、段的失序和對(duì)傳輸錯(cuò)誤的排除,所以TCP協(xié)議提供的是數(shù)據(jù)流的可靠傳輸??梢詮氖澜缟先魏我慌_(tái)計(jì)算機(jī)中找到特定的通信對(duì)象,并向其發(fā)送數(shù)據(jù)。它只是把稱作數(shù)據(jù)報(bào)的分組從一臺(tái)主機(jī)發(fā)送到另一臺(tái)主機(jī),但并不保證該數(shù)據(jù)報(bào)能到達(dá)另一端。TCP是一種面向連接的協(xié)議,TCP為兩臺(tái)主機(jī)提供高可靠性的數(shù)據(jù)通信,通過使用序列號(hào)和確認(rèn)信息,TCP能夠向發(fā)送方提供到達(dá)接收方的數(shù)據(jù)包的傳送信息。表33 IP數(shù)據(jù)報(bào)格式及首部中的各個(gè)字段4位版本4位首部長(zhǎng)度8位服務(wù)類型(TOS)16位總長(zhǎng)度(字節(jié))16位標(biāo)識(shí)3位標(biāo)志13位片偏移8位生存時(shí)間(TTL)8位協(xié)議16位首部檢驗(yàn)和32位源IP地址32位目的IP地址32位選項(xiàng)(若有)數(shù)據(jù) ICMP協(xié)議概述ICMP協(xié)議主要用來傳遞差錯(cuò)報(bào)文以及其它需要注意的信息。單片機(jī)一般采用發(fā)送小數(shù)據(jù)包的方式,以避免分段。網(wǎng)絡(luò)層協(xié)議包括IP(網(wǎng)際協(xié)議),ICMP(控制報(bào)文協(xié)議)和IGMP(Internet組管理協(xié)議)。當(dāng)某主機(jī)要向以太網(wǎng)中另一臺(tái)主機(jī)發(fā)送IP數(shù)據(jù)時(shí),它首先根據(jù)目的主機(jī)的IP地址在ARP高速緩存中查詢相應(yīng)的以太網(wǎng)地址,ARP高速緩存是主機(jī)維護(hù)的一個(gè)IP地址到相應(yīng)以太網(wǎng)地址的映射。知道主機(jī)的IP地址并不能讓以太網(wǎng)驅(qū)動(dòng)程序發(fā)送一幀數(shù)據(jù)給主機(jī),以太網(wǎng)驅(qū)動(dòng)程序必須知道目的端的硬件地址才能發(fā)送數(shù)據(jù)。鏈路層通常包括計(jì)算機(jī)中對(duì)應(yīng)的網(wǎng)絡(luò)接口卡及其設(shè)備驅(qū)動(dòng)程序,它們一起處理與電纜(或其它任何傳輸媒介)的物理接口細(xì)節(jié),完成網(wǎng)絡(luò)上物理幀的傳輸。以太網(wǎng)數(shù)據(jù)幀的物理特性是其長(zhǎng)度必須在46~1500字節(jié)之間。IP傳給網(wǎng)絡(luò)接口層的數(shù)據(jù)單元稱作IP數(shù)據(jù)報(bào)(IP datagram)。本文僅介紹與嵌入式WEB SERVER編程密切相關(guān)的部分:TCP/IP協(xié)議的分層結(jié)構(gòu)及其報(bào)文格式。由于指令的原因,以及資源上的原因,在UNIX上實(shí)現(xiàn)的TCP/IP協(xié)議的源代碼并不能直接移植到8位的單片機(jī)上。 圖24接口電路 FLASH芯片F(xiàn)LASH又名閃存,屬于EEPROM,即電可擦除可編程的存儲(chǔ)器。SD鎖存器74HC373的DATAO一DATA7接單片機(jī)的P7口,/OE接地,LE接單片機(jī)的ALE。 外部數(shù)據(jù)存儲(chǔ)器62256和鎖存器74HC573使用外部RAM 62256的目的是提高單片機(jī)的數(shù)據(jù)傳輸速度和進(jìn)行復(fù)雜的TCP/IP處理。Pin 96IOCS16采用電阻下拉該引腳,復(fù)位時(shí)刻腳為低電平,選擇8位模式。在上文中已經(jīng)談到硬件設(shè)計(jì)中的幾個(gè)注意問題,這里就不累敘,下面就簡(jiǎn)單給出RTL8019AS引腳的兩個(gè)連接表,以及幾個(gè)需要強(qiáng)調(diào)的引腳。C8051F020雖然可以直接讀寫寄存器組,但是卻不能直接讀寫雙口RAM,需要通過遠(yuǎn)程DMA端口間接訪問雙口RAM,(遠(yuǎn)程DMA地址包括10H~17H),C8051F020先在寄存器組中設(shè)置緩沖區(qū)地址和字節(jié)計(jì)數(shù)器,然后通過循環(huán)讀寫遠(yuǎn)程DMA端口,把數(shù)據(jù)傳送到雙口RAM的緩沖區(qū),或從其中讀取出來。這些是和NE2000兼容的寄存器件,和RTL8019AS本身設(shè)置相關(guān)的寄存器放在PAGE3里,PAGE3是RTL8019AS自己定義的,對(duì)于其它兼容NE2000的芯片如DM9008無效。, I/O地址分配RTL8019AS具有32位輸入輸出地址,地址偏移量為00H~1FH。另一套總線是單片機(jī)讀或?qū)懺揜AM,即遠(yuǎn)程DMA。一般將RAM的前12頁(yè)(即0X4000~0X4BFF)存儲(chǔ)區(qū)作為發(fā)送緩沖區(qū);后52頁(yè)(即0X4C00~0X7FFF)存儲(chǔ)區(qū)作為接收緩沖區(qū)。RTL8019AS的本地DMA操作是由控制器本身完成的,而其遠(yuǎn)程DMA并不是在無處理器的參與下,數(shù)據(jù)能自動(dòng)移到主處理器的內(nèi)存中,它的操作機(jī)制是這樣的:主處理器先賦值與遠(yuǎn)程DMA的起始地址寄存器RSAR0、RSAR1和字節(jié)計(jì)數(shù)器RR0、RBCR1,然后在RTL8019AS的DMA I/O地址上讀寫指定地址上的數(shù)據(jù)。網(wǎng)卡使用何種方式由RTL8019AS的輸入引腳的第65腳JP決定。RTL8019AS支持三種工作方式:本地DMA接口是把RTL8019AS與網(wǎng)線的連接通道,完成控制器與網(wǎng)線的數(shù)據(jù)交換,用于控制器內(nèi)部。會(huì)自動(dòng)測(cè)接口類型是用同軸電纜還是雙絞線。網(wǎng)卡的接口一般是BNC的。(6)考慮到系統(tǒng)硬件資源緊張的問題,在接口設(shè)計(jì)中, RTL8019AS的66引腳PNP懸空時(shí),輸入狀態(tài)為低電平,因?yàn)樾酒瑑?nèi)部已經(jīng)接了一個(gè)100K的下拉電阻。(3)網(wǎng)絡(luò)接口類型:由777(PL0、PL1)引腳決定,使用自動(dòng)檢
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1