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

正文內(nèi)容

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

2025-06-26 17:17本頁面
  

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