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

正文內(nèi)容

基于mcs-51單片機(jī)技術(shù)以太網(wǎng)接口設(shè)計(jì)(文件)

 

【正文】 緩沖區(qū)標(biāo)識(shí)(bit類型)來(lái)決定,當(dāng)發(fā)送緩沖區(qū)標(biāo)志的值為0時(shí),選用發(fā)送緩沖區(qū)1,當(dāng)發(fā)送緩沖區(qū)標(biāo)志位1時(shí),選用發(fā)送緩沖區(qū)2??截悢?shù)據(jù)要首先設(shè)定遠(yuǎn)程DMA寫(xiě)起始地址寄存器RASR01和存儲(chǔ)遠(yuǎn)端DMA寫(xiě)數(shù)據(jù)時(shí)的數(shù)據(jù)長(zhǎng)度寄存器RBCR01。丟棄數(shù)據(jù)報(bào)更新標(biāo)志開(kāi)始清中斷標(biāo)志讀取讀頁(yè)指針(BNRY)讀取寫(xiě)頁(yè)指針(CURR)是否有新數(shù)據(jù)?讀取包頭接收正確否IP或ARP報(bào)文否?讀取數(shù)據(jù)置接收正確標(biāo)志結(jié)束NNN 以太網(wǎng)接收?qǐng)?bào)文流程圖系統(tǒng)使用0x4C0x7F作為接收緩沖區(qū),共52頁(yè)。BNRY是讀指針,指向用戶已經(jīng)讀走的頁(yè)。若BNRY≠CURR1,則說(shuō)明有新的數(shù)據(jù)報(bào)文到達(dá),準(zhǔn)備讀取及判斷數(shù)據(jù),否則說(shuō)明沒(méi)有新的數(shù)據(jù)報(bào)文,則退出。4) 對(duì)正確的報(bào)文進(jìn)行協(xié)議分析,系統(tǒng)只處理兩種報(bào)文:ARP報(bào)文和IP報(bào)文,若判斷出是以上兩種報(bào)文,則置位相應(yīng)標(biāo)志位,以待后續(xù)模塊處理。應(yīng)用層協(xié)議我們采用HTTP協(xié)議。在實(shí)現(xiàn)網(wǎng)卡驅(qū)動(dòng)程序后,所有ARP處理操作就是填寫(xiě)ARP包。發(fā)送ARP請(qǐng)求時(shí)由于不知道對(duì)方的物理地址,在設(shè)置好本機(jī)IP地址、本機(jī)物理地址和目的IP地址后,須將目的物理地址字段設(shè)置為廣播地址,再由收到該請(qǐng)求的主機(jī)填充該字段。5) IP包接收預(yù)處理函數(shù)用于提取IP報(bào)文的地址映射信息,以便主動(dòng)學(xué)習(xí)和及時(shí)更新。這些參數(shù)都需要保存在外部存儲(chǔ)器HM62256中。 系統(tǒng)中實(shí)現(xiàn)的IP模塊主要包括以下功能:IP初始化、IP包處理、發(fā)送IP報(bào)文。包括判斷IP報(bào)文頭中的相應(yīng)字段,如協(xié)議版本號(hào)、壽命、長(zhǎng)度范圍等是否正確。3) 判斷是不是本系統(tǒng)可以識(shí)別的IP報(bào)文。更新ARP緩存表就是更新緩存表中相應(yīng)表項(xiàng)的壽命字段或當(dāng)緩存表中沒(méi)有相應(yīng)表項(xiàng)時(shí)建立地址映射關(guān)系。系統(tǒng)中IP報(bào)文封裝的上層協(xié)議有傳輸控制協(xié)議TCP和差錯(cuò)控制報(bào)文ICMP。系統(tǒng)會(huì)調(diào)用這個(gè)ARP請(qǐng)求3次,若在設(shè)定的時(shí)間內(nèi)收到ARP應(yīng)答,則發(fā)送該IP報(bào)文,若在設(shè)定的時(shí)間內(nèi)并且已發(fā)送了3次ARP請(qǐng)求但沒(méi)有收到相應(yīng)的ARP請(qǐng)求應(yīng)答,即主機(jī)不可達(dá),便會(huì)丟棄該IP數(shù)據(jù)報(bào)。系統(tǒng)中只識(shí)別回顯請(qǐng)求,即只響應(yīng)Ping應(yīng)答。關(guān)于Ping工具:Ping工具需要采用以下步驟:1) 解析IP地址。5) 等待ICMP應(yīng)答。為了保證狀態(tài)機(jī)狀態(tài)的正確性,在其實(shí)現(xiàn)的時(shí)候,不同狀態(tài)的相關(guān)信息需要存儲(chǔ)下來(lái)。 TCP報(bào)文的處理(接收) TCP狀態(tài)機(jī)處理接收的TCP段由TCP報(bào)文處理函數(shù)實(shí)現(xiàn),數(shù)據(jù)存放在TCP緩沖區(qū)中并置位相應(yīng)標(biāo)志。 已經(jīng)存在的連接的段在第一步中就會(huì)被處理,新建立的連接請(qǐng)求在第二步中處理,或者當(dāng)沒(méi)有更多的套接字時(shí)在第三步中被處理。TCP狀態(tài)機(jī)函數(shù)不僅在打開(kāi)TCP連接,收到TCP報(bào)文段時(shí)調(diào)用,還要被輪詢以保持TCP協(xié)議棧有效。TCP報(bào)文的發(fā)送步驟:1) 查看IP層有沒(méi)有空閑的發(fā)送緩沖區(qū),若有繼續(xù),若沒(méi)有發(fā)送等待。5) 寫(xiě)入首部長(zhǎng)度,碼元位等標(biāo)志位。Web瀏覽器以多行字符串的形式發(fā)送一個(gè)請(qǐng)求給服務(wù)器,每行都以一個(gè)回車和一個(gè)換行子符結(jié)束。系統(tǒng)的Web服務(wù)器實(shí)現(xiàn)了一下幾個(gè)函數(shù)[13]:1) 服務(wù)器處理。3) POST請(qǐng)求處理。數(shù)據(jù)發(fā)送函數(shù)的調(diào)用保持發(fā)送緩沖區(qū)加滿,它盡可能的把文件拷貝到空閑空間中。其源代碼由C 語(yǔ)言編寫(xiě),并完全公開(kāi),所有代碼和相關(guān)說(shuō)明文檔可以到 。(3) 其硬件處理層、協(xié)議棧層和應(yīng)用層共用一個(gè)全局緩存區(qū),不存在數(shù)據(jù)的拷貝,且發(fā)送和接收都是依靠這個(gè)緩存區(qū),極大的節(jié)省空間和時(shí)間。(6)對(duì)數(shù)據(jù)的處理采用輪循機(jī)制,不需要操作系統(tǒng)的支持。即uip_init(),uip_input()和uip_periodic()。同時(shí)將調(diào)用uip_input()函數(shù),這個(gè)函數(shù)將會(huì)根據(jù)包首部的協(xié)議處理這個(gè)包和需要時(shí)調(diào)用應(yīng)用程序。當(dāng)周期計(jì)時(shí)激發(fā),每一個(gè)TCP連接都會(huì)調(diào)用uIP函數(shù)uip_periodic()。用戶需要將應(yīng)用層入口程序作為接口提供給uIP協(xié)議棧,并將這個(gè)函數(shù)定義為宏uip_appcall()。1.初始化uIP協(xié)議棧:uip_init()2.處理輸入包:uip_input()3.處理周期計(jì)時(shí)事件:uip_periodic()4.開(kāi)始監(jiān)聽(tīng)端口:uip_listen()5.連接到遠(yuǎn)程主機(jī):uip_connect()6.接收到連接請(qǐng)求:uip_connected()7.主動(dòng)關(guān)閉連接:uip_close()8.連接被關(guān)閉:uip_closed()9.發(fā)出去的數(shù)據(jù)被應(yīng)答:uip_acked()10.在當(dāng)前連接發(fā)送數(shù)據(jù):uip_send()11.在當(dāng)前連接上收到新的數(shù)據(jù):uip_newdata()12.告訴對(duì)方要停止連接:uip_stop()13.連接被意外終止:uip_aborted() uIP在MCS51單片機(jī)上的調(diào)試 調(diào)試步驟[15]:1.為此項(xiàng)目建立一個(gè)keil C工程,建立src目錄存放源文件。驅(qū)動(dòng)需要提供三個(gè)函數(shù),以RTL9019AS 驅(qū)動(dòng)為例:etherdev_init():網(wǎng)卡初始化函數(shù),初始化網(wǎng)卡的工作模式。將全局緩存區(qū)uip_buf 里的數(shù)據(jù)(長(zhǎng)度放在uip_len 中)發(fā)送出去。10S后可以調(diào)用ARP老化程序。需要放在src下,并且根據(jù)需要配置。typedef unsigned int u16_t。9.解決編譯過(guò)程中的錯(cuò)誤。periodic_timer, CLOC。 uIP的主控制循環(huán)(main函數(shù)[16])通過(guò)實(shí)際的代碼說(shuō)明uIP協(xié)議棧的主控制循環(huán)。7.如果使用keil C的小模式編譯,需要在大部分的RAM的變量前增加xdata。define UIP_FIXEDADDR 0define UIP_IPADDR0 192define UIP_IPADDR1 168define UIP_IPADDR2 1define UIP_IPADDR3 9define UIP_NETMASK0 255define UIP_NETMASK1 255define UIP_NETMASK2 255define UIP_NETMASK3 0define UIP_DRIPADDR0 192define UIP_DRIPADDR1 168define UIP_DRIPADDR2 1define UIP_DRIPADDR3 1(2)使能MAC地址define UIP_FIXEDETHADDR 1define UIP_ETHADDR0 0x00define UIP_ETHADDR1 0x4fdefine UIP_ETHADDR2 0x49define UIP_ETHADDR3 0x12define UIP_ETHADDR4 0x12define UIP_ETHADDR5 0x13(3)使能ping功能define UIP_PINGADDRCONF 1(4)關(guān)閉主動(dòng)請(qǐng)求連接的功能define UIP_ACTIVE_OPEN 0(5)將uip_tcp_appstate_t 定位u8_t類型。如果需要ARP協(xié)議, 也放到src 下。因此使用單片機(jī)的定時(shí)器0用作時(shí)鐘,每20ms讓計(jì)數(shù)tick_t加1。將網(wǎng)卡收到的數(shù)據(jù)放入全局緩存區(qū)uip_buf 中,返回包的長(zhǎng)度,賦給uip_len。3.\unix\ 寫(xiě)網(wǎng)卡驅(qū)動(dòng)程序,與具體硬件相關(guān)。在不用修改協(xié)議棧的情況下可以適配不同的應(yīng)用程序。由于使用TCP/IP的應(yīng)用場(chǎng)景很多,因此應(yīng)用程序作為單獨(dú)的模塊由用戶實(shí)現(xiàn)。如果uip_len是0,則說(shuō)明沒(méi)有包要發(fā)送,否則調(diào)用底層系統(tǒng)的發(fā)包函數(shù)將包發(fā)送到網(wǎng)絡(luò)上。uip_init()是系統(tǒng)初始化時(shí)調(diào)用的,主要初始化協(xié)議棧的偵聽(tīng)端口和默認(rèn)所有連接是關(guān)閉的。 uIP架構(gòu) uIP在系統(tǒng)中的位置uIP相當(dāng)于一個(gè)代碼庫(kù),通過(guò)一系列的函數(shù)實(shí)現(xiàn)與底層硬件和高層應(yīng)用程序的通訊,對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō)它內(nèi)部的協(xié)議組是透明的,從而增加了協(xié)議的通用性。(5) 其源代碼中提供一套實(shí)例程序:web服務(wù)器,web客戶端,電子郵件發(fā)送程序(SMTP 客戶端),Telnet服務(wù)器,DNS主機(jī)名解析程序等。由于uIP協(xié)議棧專門為嵌入式系統(tǒng)而設(shè)計(jì),因此還具有如下優(yōu)越功能:(1) 代碼非常少,其協(xié)議棧代碼不到6K,很方便閱讀和移植。對(duì)存儲(chǔ)的文件進(jìn)行管理,提供文件查詢。4) 數(shù)據(jù)發(fā)送。2) GET請(qǐng)求處理。最常用的方法是GET,后面的參數(shù)是請(qǐng)求的文件名和協(xié)議版本標(biāo)識(shí),接下來(lái)的幾行包含了關(guān)于瀏覽器配置的額外信息。7) 清緩沖區(qū)標(biāo)志8) 發(fā)送數(shù)據(jù)到IP發(fā)送緩沖區(qū)。3) 若有數(shù)據(jù),寫(xiě)入數(shù)據(jù)。 TCP狀態(tài)定義字段功能表述TCP_CLOSED關(guān)閉和監(jiān)聽(tīng)狀態(tài)TCP_SYNR接收到SYN請(qǐng)求狀態(tài)TCP_EST連接已建立狀態(tài)TCP_CLWAIT關(guān)閉等待狀態(tài)TCP_LASTACK最后的確認(rèn)等待狀態(tài)TCP_RSTR復(fù)位狀態(tài)TCP_AOPEN主動(dòng)打開(kāi)狀態(tài)TCP_SYNS發(fā)送SYN請(qǐng)求狀態(tài)TCP_ACLOSE主動(dòng)關(guān)閉狀態(tài)TCP_FINWT1關(guān)閉等待1狀態(tài)TCP_FINWT2關(guān)閉等待2狀態(tài)TCP_CLING關(guān)閉狀態(tài)TCP_TWAIT計(jì)時(shí)等待狀態(tài) 發(fā)送TCP報(bào)文TCP狀態(tài)機(jī)的調(diào)用不僅是在接收到報(bào)文時(shí),在發(fā)送報(bào)文時(shí)也要調(diào)用到TCP狀態(tài)機(jī)函數(shù),以便更新套接字的狀態(tài)。系統(tǒng)中的TCP狀態(tài)機(jī)實(shí)現(xiàn)采用了簡(jiǎn)單的模式,系統(tǒng)的TCP狀態(tài)機(jī)實(shí)現(xiàn)包含了所有可能的狀態(tài)。2) 如果沒(méi)有找到匹配的套接字,就獲取第一個(gè)空閑的(關(guān)閉的)套接字。所以對(duì)于一個(gè)龐大的狀態(tài)機(jī),在存儲(chǔ)能力和運(yùn)算能力有限的單片機(jī)上實(shí)現(xiàn)是十分困難的。 傳輸控制協(xié)議TCP的實(shí)現(xiàn) TCP協(xié)議是一個(gè)面向連接的協(xié)議,傳遞一個(gè)TCP數(shù)據(jù)所要經(jīng)歷的三個(gè)階段分別是:建立連接、傳輸數(shù)據(jù)和斷開(kāi)連接。3) 等待ARP應(yīng)答。2) 創(chuàng)建數(shù)據(jù)幀,保存結(jié)果數(shù)據(jù)幀的長(zhǎng)度。其上層函數(shù)將所需參數(shù)傳遞給IP報(bào)文發(fā)送函數(shù)后,該函數(shù)首先判斷待發(fā)送的報(bào)文是否在本網(wǎng)段內(nèi),若在本網(wǎng)段內(nèi),查找ARP緩存表中有無(wú)相應(yīng)地址映射關(guān)系,若不在本網(wǎng)段內(nèi),查看有無(wú)網(wǎng)關(guān)的地址映射關(guān)系。基于系統(tǒng)資源有限,而且對(duì)于系統(tǒng)的應(yīng)用來(lái)說(shuō)也不需要IP選項(xiàng),所以系統(tǒng)不識(shí)別IP選項(xiàng),也不發(fā)送IP選項(xiàng),在接收到IP選項(xiàng)后只是將其簡(jiǎn)單的丟棄。4) 更新ARP緩存表。校驗(yàn)和是IP首部校驗(yàn)和,只對(duì)IP報(bào)文的首部進(jìn)行校驗(yàn),與TCP不同,后者對(duì)整個(gè)數(shù)據(jù)區(qū)進(jìn)行校驗(yàn)。 IP包處理,IP報(bào)文處理函數(shù)的功能主要是判斷報(bào)文是否正確,去掉IP選項(xiàng),之后根據(jù)IP報(bào)文中所封裝的報(bào)文類型將數(shù)據(jù)提交給相應(yīng)的上層處理函數(shù),同時(shí)更新ARP緩存表。根據(jù)本地IP地址和子網(wǎng)掩碼來(lái)判斷是不是本網(wǎng)段內(nèi)主機(jī)。 網(wǎng)絡(luò)層IP協(xié)議的實(shí)現(xiàn) 在介紹系統(tǒng)中IP協(xié)議的實(shí)現(xiàn)之前,首先要介紹一下系統(tǒng)的參數(shù)設(shè)置。當(dāng)系統(tǒng)收到一份目的端為本機(jī)ARP請(qǐng)求報(bào)文后,它就把硬件地址填充進(jìn)去,然后用兩個(gè)目的端地址分別替換兩個(gè)發(fā)送端地址,并把操作字段置2,最后把它發(fā)送回去。2) ARP請(qǐng)求函數(shù)完成ARP請(qǐng)求操作。 地址解析協(xié)議ARP的是實(shí)現(xiàn)。 TCP/IP協(xié)議棧的實(shí)現(xiàn)由于本課題是基于嵌入式系統(tǒng)的TCP/IP設(shè)計(jì),所以必須對(duì)TCP/IP協(xié)議棧進(jìn)行必要的簡(jiǎn)化。主要是判斷接收到報(bào)文后,芯片自動(dòng)計(jì)算的CRC校驗(yàn)是否正確,若沒(méi)有出錯(cuò)標(biāo)志,則說(shuō)明報(bào)文接收正確。而芯片正在讀取的數(shù)據(jù)字節(jié)位置可由CLDACLDA0判斷??刂平邮站彌_區(qū)的有兩個(gè)寄存器CURR 和BNRY。發(fā)送報(bào)文時(shí)先判斷上一個(gè)數(shù)據(jù)報(bào)文發(fā)送完畢否,若沒(méi)有發(fā)送完畢則等待或重發(fā),否則發(fā)送當(dāng)前報(bào)文。4) 拷貝數(shù)據(jù)。2) 選定發(fā)送緩沖區(qū)。報(bào)文發(fā)送函數(shù)的主要功能就是將IP或ARP協(xié)議封裝的數(shù)據(jù)報(bào)文用以太網(wǎng)幀頭封裝,發(fā)送出去。定義了一個(gè)指針指向當(dāng)前的發(fā)送緩沖區(qū)。:它的內(nèi)部有16K字節(jié)的RAM,地址為0x4000~0x7FFF,每256個(gè)字節(jié)稱為一頁(yè),頁(yè)號(hào)為0x40~0x80。 在初始化操作之前需要對(duì)RTL8019AS進(jìn)行熱復(fù)位操作和ISR寄存器的清零操作。以太網(wǎng)協(xié)議由芯片硬件自動(dòng)完成,對(duì)程序員透明。下面將分別介紹這兩部分的設(shè)計(jì)思路。PCRXD和PCTXD是RS上2電平,為標(biāo)準(zhǔn)串口電平。RESET為漏極開(kāi)路輸出,故需接上拉電阻。(2)串行E2PROMX5045本課題采用的X5045是帶有串行E2PROM的CPU監(jiān)控器,具有3個(gè)功能:FLASH、復(fù)位、看門狗。地址鎖存器用于實(shí)現(xiàn)單片機(jī)的地址/數(shù)據(jù)總線復(fù)用,選用常用的鎖存芯片74LS373。17. MAR07:多發(fā)地址寄存器(08H~0FH;類型:1頁(yè)讀寫(xiě))這些寄存器提供由CRC邏輯哈希壓縮的多發(fā)地址的過(guò)濾位。11. RBCR0,l:遠(yuǎn)程字節(jié)數(shù)寄存器(0AHamp。8. FIFO:先進(jìn)先出寄存器(06H;類型:0頁(yè)讀)該寄存器允許主機(jī)在產(chǎn)生回環(huán)后審查FIFO的內(nèi)容。5. TPSR:發(fā)送起始頁(yè)寄存器(04H;類型:0頁(yè)寫(xiě))該寄存器設(shè)置發(fā)送包的起始頁(yè)地址。2. PSTART:起始頁(yè)寄存器(01H;類型:0頁(yè)寫(xiě),2頁(yè)讀)該寄存器設(shè)置接收環(huán)形緩存的起始頁(yè)地址。為物理目標(biāo)地址時(shí)清零。檢測(cè)到載波或碰撞時(shí)置位6DIS禁止接收。清零時(shí)只接受與節(jié)點(diǎn)地址匹配的包3AM置位時(shí)接受具有多發(fā)目標(biāo)地址的包,清零時(shí)拒絕接受多發(fā)目標(biāo)地址址包2AB置位時(shí)接受具有廣播目標(biāo)地址的包,清零時(shí)拒絕接受廣播目標(biāo)地址包。COL一表示發(fā)送與網(wǎng)絡(luò)中其它站點(diǎn)發(fā)生碰撞。上電時(shí)全0,某位置1開(kāi)放對(duì)應(yīng)的中斷。2. ISR:中斷狀態(tài)寄存器(O7H;類型:0頁(yè)讀寫(xiě))該寄存器反映網(wǎng)絡(luò)接口控制器(NIC)的狀態(tài),主控機(jī)通過(guò)讀取其狀態(tài)定中斷源。發(fā)送完成或退出時(shí)內(nèi)部復(fù)位。位符號(hào)簡(jiǎn)述6PSPS0表示寄存器頁(yè)。0x10~0x17是遠(yuǎn)程DMA控制寄存器。RTL8019AS的寄存器大致可分為兩組,一組稱為NE2000寄存器組,另一組稱為PnP組。0x10~0x17為遠(yuǎn)程D
點(diǎn)擊復(fù)制文檔內(nèi)容
物理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1