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

正文內(nèi)容

電子科學與技術單片機tcpip論文初稿-資料下載頁

2025-06-27 16:48本頁面
  

【正文】 define RBCRH_WPAGE0 (RTL_BASE_ADDRESS + ADDRESS_SHIFT * 0x0B)define RBCRL_WPAGE0 (RTL_BASE_ADDRESS + ADDRESS_SHIFT * 0x0A)各寄存器功能這里就不做介紹了,接下來介紹 RTL8019 的 RAM BUFFER 從原理上講,RAM BUFFER 是一個雙口 RAM,也就是說單片機可以往 RAM 中讀寫數(shù)據(jù),網(wǎng)卡控制器也可以自動往里面讀寫數(shù)據(jù)。前面所提到的“遠程 DMA 地址”就是單片機往 RAM BUFFER 中讀寫數(shù)據(jù)用到的地址。 “本地 DMA 地址”是指網(wǎng)卡控制器自動讀寫 RAM BUFFER 用到的地址。所以, “遠程”和“本地”的概念僅僅為了區(qū)分是主機(單片機)還是網(wǎng)卡控制器操作 RAM BUFFER。 設置配置文件 ,用來設置本地的 IP 地址、網(wǎng)關地址、MAC 地址、全局緩沖區(qū)的大小、支持的最大連接數(shù)、偵聽數(shù)、ARP 表大小等。(1)配置 IP 地址,默認先關 IP,在初始化中再設定。define UIP_FIXEDADDR 0 define UIP_IPADDR0 192 define UIP_IPADDR1 168 define UIP_IPADDR2 1 define UIP_IPADDR3 9 define UIP_NETMASK0 255 define UIP_NETMASK1 255 define UIP_NETMASK2 255 define UIP_NETMASK3 0 define UIP_DRIPADDR0 192 define UIP_DRIPADDR1 168 define UIP_DRIPADDR2 1 define UIP_DRIPADDR3 1 (2)使能 MAC 地址 define UIP_FIXEDETHADDR 1 26define UIP_ETHADDR0 0x00 define UIP_ETHADDR1 0x4f define UIP_ETHADDR2 0x49 define UIP_ETHADDR3 0x12 define UIP_ETHADDR4 0x12 define UIP_ETHADDR5 0x13 (3)使能 ping 功能 define UIP_PINGADDRCONF 1 (4)關閉主動請求連接的功能define UIP_ACTIVE_OPEN 0 (5)將 uip_tcp_appstate_t 定位 u8_t 類型。 (6)由于單片機是大端結構,因此宏定義需要修改 define UIP_CONF_BYTE_ORDER UIP_BIG_ENDI AN (7)暫時不移植打印信息,先關閉 define UIP_CONF_LOGGING 0 (8)定義數(shù)據(jù)結構類型 typedef unsigned char u8_t。 typedef unsigned int u16_t。 typedef unsigned long u32_t。275 基于 51 單片機的 tcp/ip 協(xié)議通信第二章對 TCP/IP 協(xié)議進行一般了解,第三章對 UIP 協(xié)議棧進行詳細剖析,第四章研究了 UIP 在 51 單片機上的移植問題。剩下的問題就是對理論進行實踐了。 硬件原理圖設計原理圖主要分為兩大模塊,一是:單片機與外部 RAM 模塊。由于要用 RAM 作為數(shù)據(jù)緩存,單片機本身 RAM 不夠用,需要擴展外部 RAM。需要注意的是 62256 外部 RAM 芯片的低八位地址要用 SN74AC373 進行鎖存。片選引腳接單片機的 A15 腳尋址范圍為0X7FFF0X0000。圖 單片機與外部 RAM 接法二是:網(wǎng)卡驅動模塊。這里應注意的是 SA0SA19 網(wǎng)卡地址線的接法,其中 SA6 接單片機 A15 腳的用意是將網(wǎng)卡芯片的尋址范圍固定為 0X80000XFFFF。這樣就可以避免與外部 RAM 的尋址沖突。28圖 網(wǎng)卡芯片 RTL8019AS 接法 主要代碼文件說明以下是該設計用到的代碼文件介紹: //Icmp 協(xié)議 //ip 層 // 網(wǎng)絡接口層 // tcp 協(xié)議層 //ARP 協(xié)議 //以太網(wǎng)接口協(xié)議 //RTL8019AS 以太網(wǎng)接口芯片驅動程序 //全局函數(shù)和宏定義 //主程序,也是應用層這里最重點的是 網(wǎng)卡驅動程序和 主程序:網(wǎng)卡驅動主要是為上層協(xié)議提供接口,需要做的工作有:初始化網(wǎng)卡,編寫數(shù)據(jù)包發(fā)送和數(shù)據(jù)包接收函數(shù)。在 主程序需要分配好數(shù)據(jù)緩沖區(qū),設置網(wǎng)卡物理地址,IP 地址,掩碼等。29 的編寫: 中要設置一個 25ms 的定時中斷函數(shù)并在中斷函數(shù)中調(diào)用 NetIfTimer()。 ARPTimer()。 TCPTimer()。三個函數(shù)。還有幾個函數(shù)要編寫:(1)編寫 OnReceive 函數(shù),它應該有如下的參數(shù)和返回值,函數(shù)名可以任意:void OnReceive1(void DT_XDATA * buf,WORD size) REENTRANT_MUL 在使用 TCPConnect 函數(shù)時,OnReceive1 將作為 TCPConnect 函數(shù)的一個參數(shù),也就是設置該 socket 的接收函數(shù)。當 TCP 連接接收到對方數(shù)據(jù)時,將自動調(diào)用 OnReceive1 函數(shù)。buf 指向接收的數(shù)據(jù),size 是接收的數(shù)據(jù)量的大小??梢栽?OnReceive1 中處理接收的數(shù)據(jù)。當程序中有多個 TCP 連接同時存在時,需要給每個連接準備一個 OnReceive 函數(shù)。 (2)寫 OnClose 函數(shù),它應該有如下的參數(shù)和返回值,函數(shù)名可以任意:void OnClose1(socket DT_XDATA * pSocket) REENTRANT_MUL 類似于 OnReceive 函數(shù),當 TCP 連接的另一方首先向我方發(fā)起關閉連接的請求時,系統(tǒng)將自動調(diào)用 OnClose 函數(shù)。pSocket 指向將要關閉的 socket。如果想立即關閉這個連接則在 OnClose 函數(shù)中調(diào)用 TCPClose 函數(shù)。當程序中有多個 TCP 連接同時存在時,需要給每個連接準備一個 OnClose 函數(shù)。(3)寫 OnAccept 函數(shù)。如果程序中用到 TCPListen 函數(shù)監(jiān)聽某端口,這時需要寫 OnAccept 函數(shù)。它應該有如下的參數(shù)和返回值,函數(shù)名可以任意:void OnAccept1 (socket DT_XDATA *pNewSocket) REENTRANT_MUL 當一個正在 listen 的 socket 接受了對方的連接以后將會自動調(diào)用該函數(shù)。pNewSocket 是將要獲得這個連接的控制權的 socket 指針。一般在 OnAccept 函數(shù)中做以下處理: ExAccept = pNewSocket。 //保存 pNewSocket,以后可以用 ExAccept 發(fā)送數(shù)據(jù) pNewSocketrecv = OnAcceptRecv。 //設置 pNewSocket 的 OnReceive 函數(shù)。 pNewSocketclose = OnClose。 //設置 pNewSocket 的 OnClose 函數(shù)。 當程序中有多個處于 listen 的 socket 時,你需要給每個 socket 準備一個 OnAccept 函數(shù)。30 的編寫:(1)首先編寫一個網(wǎng)卡初始化函數(shù),其偽代碼如下:void RTLInit(BYTE LocalMACAddr[]) REENTRANT_MUL{定義 temp;定義整型變量 i;向復位引腳發(fā)復位信號;延遲一段時間。/*硬件重啟后要延遲一段時間讓 rtl8019 進行初始化*/向寄存器 0x10 寫入 0x10;/* 向寄存器 0x10 0x17 寫入值能夠重啟 rtl8019 *//* 初始化 RTL 寄存器*/向 CR 寄存器寫入 (0X00 | 0X20 | 0X01)。 /* 選擇第 0 頁,停止命令模式*/向 PSTART_WPAGE0 寄存器寫入接收起始頁地址;向 PSTOP_WPAGE0 寄存器寫入接收結束頁地址;設定 BNRY 邊界寄存器,指向下一個讀取頁地址;由 TPSR 寄存器設定發(fā)送開始頁;由 RCR 寄存器配置接收模式;由 TCR 傳輸配置寄存器決定網(wǎng)卡在發(fā)送幀時的行為方式; 由 DCR 數(shù)據(jù)配置寄存器決定了網(wǎng)卡的訪問寬度是 8 位還是 16 位 ;/*這里使用單片機選擇 8 位*/由 IMR_WPAGE0 寄存器使能 RTL 接收中斷;向 ISR_WPAGE0 寄存器寫入 FF 清除所有中斷狀態(tài);切換寄存器到 1 頁準備設置網(wǎng)卡;進行網(wǎng)卡設置分六次寫入,每次寫一個字節(jié)數(shù)據(jù);設置發(fā)送開始頁 ;開始時沒有數(shù)據(jù)包要發(fā)送,給個標志 InSending =FALSE;初始化完成,向 CR 寫入(0X00 | 0X20 | 0X01)開始命令模式。}(2)其次編寫一個數(shù)據(jù)發(fā)送函數(shù),其偽代碼如下:31該函數(shù)發(fā)送數(shù)據(jù)包‘buffer’為數(shù)據(jù)內(nèi)容‘size’是數(shù)據(jù)長度 ,數(shù)據(jù)長度不能大于 MAX_PACKET_SIZE 超過部分會被丟棄。BOOL RTLSendPacket(BYTE DT_XDATA * buffer,WORD size) REENTRANT_SIG{定義 StartPage 用于中間變量;定義 PrePage 用于保存寄存器頁;檢查是否有數(shù)據(jù)正在發(fā)送,如果 InSending == TRUE 表示有數(shù)據(jù)發(fā)送;如果沒有數(shù)據(jù)發(fā)送就記錄當前寄存器頁數(shù),設 InSending == TRUE;檢查數(shù)據(jù)包大??;把數(shù)據(jù)包寫入 RAM ;等待數(shù)據(jù)包寫入完畢;寫入發(fā)送頁地址和數(shù)據(jù)包大小 ;切換寄存器頁;設置 TPSR 發(fā)送開始頁寄存器 ;寫入發(fā)送起始頁地址,因為是 16 位地址分兩次寫入;把 CR 寄存器設為命令模式;設 InSending = FALSE 表示沒數(shù)據(jù)發(fā)送。返回 TRUE 表示發(fā)送完成。}(3)最后編寫數(shù)據(jù)接收函數(shù),其偽代碼如下:該函數(shù)接收數(shù)據(jù)包 ,返回 NULL 表示沒數(shù)據(jù)包可以接收。 struct SMemHead DT_XDATA * RTLReceivePacket() REENTRANT_SIG{定義中間變量 curr,bnry;定義 16 位地址變量 address;定義 16 位變量 PacketSize;定義緩沖區(qū)指針變量 *MemHead;檢查 InSending 標志如果有數(shù)據(jù)在發(fā)送,返回 NULL ;讓 MemHead = NULL;32如果沒有數(shù)據(jù)在發(fā)送 RTLPage(1);數(shù)據(jù)包首地址付給 curr;切換寄存器頁 RTLPage(0);檢查開始頁是否超出范圍;如果接收包沒錯誤,進行以下操作使用 curr 作為 數(shù)據(jù)包開始頁;檢查是否有數(shù)據(jù)包需要讀??;如果有數(shù)據(jù)包就讀取數(shù)據(jù)包 ;先讀取包頭信息;檢查 rsr, 如果包損壞了就丟棄;如果是完好的數(shù)據(jù)包 分配緩存存取數(shù)據(jù)包;} 計算機以 TCP/IP 協(xié)議通信方式監(jiān)控單片機對于單片機應做準備為:通過 的原理圖做出實物后,在 keilc 上對 所提到的代碼進行編譯后生成 hex 文件。并把 hex 文件燒寫到單片機上。在編譯前應先設好想要的 IP 地址。比如 。對于計算機應做準備為:編寫一個可以向某個 IP 或端口發(fā)起連接的上位機。用網(wǎng)線直接把單片機連接到計算機的網(wǎng)卡上,設置好計算機的網(wǎng)卡地址和網(wǎng)關,網(wǎng)關應與單片機的網(wǎng)關一樣。做完以上準備后,可以先試試 ping 以下單片機,收到回復后表示可以通信了。接著可以用上位機,向單片機發(fā)送命令或數(shù)據(jù)了。到這里就已經(jīng)完全實現(xiàn)了單片機的TCP/IP 數(shù)據(jù)傳輸。336.結論對于整個設計到此已經(jīng)完成,設計過程用到的理論知識主要有 TCP/IP 協(xié)議,UIP協(xié)議,單片機技術,keilc 編程,網(wǎng)卡驅動,電子線路知識等。通過對 TCP/IP 協(xié)議的了解,在前人的基礎上移植了 UIP 協(xié)議棧,最終實現(xiàn)了單片機的 TCP/IP 數(shù)據(jù)傳輸。雖然已經(jīng)盡量減少 RAM 的使用量但是遺憾的是還是要用到外部 RAM。在現(xiàn)在網(wǎng)絡的發(fā)展情況看來,電子產(chǎn)品必然要入網(wǎng)。單片機雖然已經(jīng)漸漸退出市場,但是單片機 TCP/IP 協(xié)議棧也可移植于其它嵌入式設備。所以單片機 TCP/IP 協(xié)議棧的發(fā)展前景還是很好的。想要此協(xié)議棧有更好的應用環(huán)境,還需努力去減少 RAM 的使用量,在保證數(shù)據(jù)可靠的前提下提高傳輸速度。34參考文獻[1][2] Adam Dunkels. uIP 源代碼 [3] 郁峰. 單片機對 TCP/IP 通訊的實現(xiàn)[N]. 蘇州市職業(yè)大學學報,2022 年 3 月.[4] 趙國鋒,邱作雨,張毅. 基于單片機的嵌入式 TCP/IP 協(xié)議棧的設計與實現(xiàn)[J]. 計算機技術與發(fā)展,第 19 卷,第 3 期.[5] 張云鵬 ,楊景常. 基于 TCP/ IP 協(xié)議的單片機系統(tǒng)以太網(wǎng)通訊設計與實現(xiàn)[N]. 四川工業(yè)學院學報, 10005722 (2022).[6] 鄧治國,張維新. UIP TCP/IP 協(xié)議棧在 51 系列單片機上的應用[J].
點擊復制文檔內(nèi)容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1