1. 程式人生 > >網路通訊之UIP在STM32上的移植

網路通訊之UIP在STM32上的移植

1、什麼是UIP協議棧:

UIP是一種適用於小型嵌入式通訊的TCP/IP協議棧,由瑞典電腦科學院的人開發編寫的,它去掉了完整的TCP/IP中不常用的功能,簡化了通訊過程,但其保留了網路通訊中必須使用的協議,把設計重點放在IPTCPARP協議的實現上。簡單易用、佔用資源少是它的設計特點。

2、協議棧介面

UIP協議棧通過一系列介面函式與底層函式和上層應用程式通訊,在兩者之中,UIP介面函式處於中間。其中UIP提供兩個個介面函式給底層系統。分別是

1uip_input()

當網絡卡驅動收到一個輸入包時,將放入全域性緩衝區uip_buf中,包的大小由全域性變數uip_len約束。同時將呼叫 uip_input() 函式,這個函式將會根據包首部的協議處理這個包和需要時呼叫應用程式。當 uip_input() 返回時,一個輸出包同樣放在全域性緩衝區uip_buf裡,大小賦給uip_len。如果uip_len 是0,則說明沒有包要傳送。否則呼叫底層系統的發包函式將包傳送到網路上。

2uip_periodic()

uIP 週期計時是用於驅動所有的uIP 內部時鐘事件。當週期計時激發,每一個TCP 連線都會呼叫uIP 函式uip_periodic() 。類似於 uip_input() 函式。uip_periodic()函式返回時,輸出的IP 包要放到uip_buf中,供底層系統查詢uip_len的大小發送。

UIP提供一個呼叫函式uip——appcall() 上位機應用程式通訊。當uip在接收到底層傳來的資料包後,直接呼叫uip_appcall()就可以把資料傳送到上層應用程式進行處理。

101701.jpg

系統底層其實在一開始時還需要呼叫初始化UIP的函式——uip_init(),

主要是初始化協議棧的偵聽埠和預設所有連線都是關閉的。

3UIP協議棧在STM32上的移植

1DM9000A 初始化和UIP初始化;

tapdev_init(); uip_init();

2)設定IP地址

uip_ipaddr(ipaddr, 192,168,1,10);

3)設定預設的路由器地址

uip_ipaddr(ipaddr, 192,168,1,1);

4)設定網路掩碼

uip_setnetmask(ipaddr);

5)當DM9000A接收到資料後會產生中斷,這時候從DM9000A讀取一個IP包,返回資料長度;

    uip_len = tapdev_read();

6)校驗處理資料包

BUF->type == htons(UIP_ETHTYPE_IP

7)去除乙太網幀頭結構,更新ARP

uip_arp_ipin();

8IP包處理

uip_input();

相關推薦

網路通訊UIP在STM32移植

1、什麼是UIP協議棧: UIP是一種適用於小型嵌入式通訊的TCP/IP協議棧,由瑞典電腦科學院的人開發編寫的,它去掉了完整的TCP/IP中不常用的功能,簡化了通訊過程,但其保留了網路通訊中必須使用的協議,把設計重點放在IP、TCP和ARP協議的實現上。簡單易用、佔用資源少是它的設計特點。 2、協議棧介面

java網路通訊Socket通訊:TCP/UDP

網路通訊三要素:協議,IP,埠。七層協議。 package com.qianfeng.test; /* * 網路程式設計基礎: * 網路的通訊:三要素:協議,IP,埠 * 1.IP:在網路上唯一的標記一臺主機 127.0.0.1 :保留地址/本地地址 java

JAVA網路通訊NIO

本篇將展現JAVA網路通訊中NIO的部分,和上一篇不同,本篇所用的Socket是通過SocketChannel的方式,這是NIO與傳統IO最主要的區別。 一、基於緩衝的SocketChannel 和傳統的IO基於流的方式不同,NIO採用基於緩衝的方式。二者的最重要的區

JAVA網路通訊基礎篇

一、Socket套接字 作為JAVA網路通訊的基礎,Socket幫助程序實現程序間的建立連線並相互通訊。而Socket又分為客戶端和服務端,也就是Socket和SocketServer。在JAVA開發過程中,採用Socket套接字開發是較為簡便的。 1、SocketS

網路通訊檢測遠端連線是否斷開連線

判斷對方是否斷開連線: 一、方法層面的實現:   1,使用輸入流的read方法:     輸入流的read(byte[] ,int ,int) 方法,表示從當前的通道中讀取資料,具體讀取到的資料有返回的int值決定;這裡的返回值和丟擲的異常很重要,如果丟擲IOException異常,很明顯連線已經斷開;   

python筆記 3-4網路通訊服務 linux服務搭建 vim udp socket

day3 網路通訊服務 linux上服務搭建 linux基本操作 FTP服務 FTP 檔案傳輸協議 服務端安裝vsftpd 命令:sudo apt-get install vsftpd ssh服務 SSH 安全協議,常用於遠端登入 服務端:sudo apt-get insta

網路程式設計懶人入門(一):快速理解網路通訊協議(篇)

1、寫在前面 論壇和群裡常會有技術同行打算自已開發IM或者訊息推送系統,很多時候連基本的網路程式設計理論(如網路協議等)都不瞭解,就貿然定方案、寫程式碼,顯得非常盲目且充滿技術風險。即時通訊網論壇裡精心整理了《[通俗易懂]深入理解TCP協議》、《不為人知的網路程式設計》、《

網路通訊 位元組序轉換原理與網路位元組序、大端和小端模式

     原因如下:網路協議規定接收到得第一個位元組是高位元組,存放到低地址,所以傳送時會首先去低地址取資料的高位元組。小端模式的多位元組資料在存放時,低地址存放的是低位元組,而被髮送方網路協議函式傳送時會首先去低地址取資料(想要取高位元組,真正取得是低位元組),接收方網路協議函式接收時會將接收到的第一個位元

網路通訊Socket小結

最近在寫一個關於資料通訊系列的文章,所以Socket是少不了的,今天就和大家來簡單分享下Socket的使用方式,以及關於Socket的幾個比較重要,容易被小夥伴們忽略且常用的方法, 好了,進入今天的正題。 之前有在面試時候問到http請求底層是基於什麼

Android實現https網路通訊新增指定信任證書/信任所有證書

當Android客戶端訪問https網站,預設情況下,受證書信任限制,無法訪問,可以有兩種解決方法來實現: 1、將要訪問的https網站的ca證書新增到客戶端信任證書列表中,此種方式為谷歌推薦,安全性高。 2、將客戶端設定為信任所有證書,也就是說不驗證伺服器證書,此種方式實

Android okHttp網路請求檔案傳下載

前言:    前面介紹了基於okHttp的get、post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天來實現一下基於okHttp的檔案上傳、下載。      okHttp相關文章地址: 檔案上傳: 1.)不帶引數上傳檔案

JAVA網路通訊InetAddress類

眾所周知,IP是Internet Protocol的簡稱,它是一種網路協議。internet依靠TCP\IP協議,在全球的範圍內實現了不同硬體結構,不同作業系統,不同網路系統的互聯。在Internet網路中,每一臺主機在網路上用為其分配的Internet地址代表自己,這個地址

【達內課程】網路通訊Post例項和解析Json(2)

如何使用Android程式碼傳送HTTP POST請求 1、建立URL物件 URL url = new URL("http://xxx"); 2、建立HttpURLConnection物件 conn = url.openConnection() 3、設定訊息

Java網路通訊HttpClient

HttpClient 是 Apache Jakarta Common 下的子專案,可以用來提供高效的、最新的、功能豐富的支援 HTTP 協議的客戶端程式設計工具包,並且它支援 HTTP 協議最新的版本和建議。在Android系統中內建了HttpClient。Android下

Android 網路通訊HTTP請求通訊

Android網路通訊平臺支援還是比較豐富的,除了相容J2ME中的java.netapi外還提供了一下Android平臺獨有的類android.net這個Package。一種是GET方式,一種是POST方式。然後HttpClient的Get/Post方式。似乎更強大的是org.apache.http類,這個

android網路通訊-Http(Android操作HTTP實現與伺服器通訊

    Android系統中本身是有下載機制的,比如瀏覽器使用的DownloadManager。可遺憾的是,DownloadManager只提供給瀏覽器使用,一般的應用程式沒法呼叫它。 另外,如果下載呼叫頻繁的話,使用DownloadManager其實是很沒有效率的做法。為了解決這些問題,我想我們最好的辦法

用戶空間和內核空間通訊【Netlink

提取 意思 數據報 multi 主動 聯合 興趣 ora 指示 原文地址:用戶空間和內核空間通訊之【Netlink 上】 作者:wjlkoorey258 引言 Alan Cox在內核1.3版本的開發階段最先引入了Netlink,剛開始時Netlink是以

網路程式設計網路通訊是什麼——UDP與TCP的區別

      首先,補充一下其他的知識,會更加方便了解。      OSI模型:是ISO(國際標準化組織)組織在1985年研究的網路互聯模型,推薦所有公司使用這個規範來控制網路。這樣所有公司都有相同的規範,就能互聯了。  

網路規劃設計師教程知識點精講網路通訊系統

網路通訊系統 網路通訊系統主要由通訊處理機、通訊傳輸介質和網路連線裝置等部分組成。 1.通訊處理機 通訊處理機也稱通訊控制器,在計算機網路中負責完成對各主計算機之間、主計算機與遠端資料終端之間,以及各遠端資料終端之間的資料傳輸和交換進行控制的任務。不同功能的通訊處理機能把多臺主計

安卓專案實戰強大的網路請求框架okGo使用詳解(一):實現get,post基本網路請求,下載傳進度監聽以及對Callback自定義的深入理解

1.新增依賴 //必須使用 compile 'com.lzy.net:okgo:3.0.4' //以下三個選擇新增,okrx和okrx2不能同時使用,一般選擇新增最新的rx2支援即可 compile 'com.lzy.net:okrx:1.0.2' compile 'com.lzy