<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于W5500+STM32的SNMP協(xié)議應用

基于W5500+STM32的SNMP協(xié)議應用

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
概述

工具: PCW5500EVB Net-SNMP軟件包編譯環(huán)境:Keil4 &IAR功能:通過(guò)網(wǎng)絡(luò )管理協(xié)議SNMP及基本的控制命令實(shí)現簡(jiǎn)單的LED控制

本文引用地址:http://dyxdggzs.com/article/201611/322043.htm

一、W5500簡(jiǎn)介

韓國WIZnet公司生產(chǎn)的以太網(wǎng)控制芯片W5500整合了五層結構中的前四層,即物理層、數據鏈路層、網(wǎng)絡(luò )層和傳輸層,并在內部利用硬件實(shí)現了TCP/IP協(xié)議棧。開(kāi)發(fā)者無(wú)需專(zhuān)業(yè)的網(wǎng)絡(luò )知識,使用W5500如同控制外部存儲器一樣簡(jiǎn)單,為用戶(hù)提供了最簡(jiǎn)單的網(wǎng)絡(luò )接入方法。全硬件TCP/IP協(xié)議棧完全獨立于主控芯片,可以降低主芯片負載且無(wú)需移植繁瑣的TCP/IP協(xié)議棧,便于產(chǎn)品實(shí)現網(wǎng)絡(luò )化更新。以太網(wǎng)控制芯片W5500具有以下特點(diǎn):

1、W5500支持硬件TCP/IP協(xié)議,包括TCP、UDP、ICMP、IPv4、ARP、IGMP、PPPoE和以太網(wǎng)的PHY和MAC層,TCP/IP協(xié)議的硬件實(shí)現2、支持8個(gè)獨立的SOCKET同時(shí)工作,可同時(shí)工作在不同的工作模式;3、支持高速SPI接口(SPI MODE 0,3),SPI的時(shí)鐘最高可達到80MHz,極大地提高了網(wǎng)絡(luò )通信的數據傳輸速率;4、內部集成32KB存儲器用于發(fā)送/接收緩存;5、內嵌10BaseT/100BaseTX以太網(wǎng)物理層(PHY);6、支持自動(dòng)協(xié)商(10/100-Based全雙工/半雙工);7、工作電壓為3.3V,但I/O信號口可承受5V電壓;

二、SNMP協(xié)議簡(jiǎn)介

SNMP:“簡(jiǎn)單網(wǎng)絡(luò )管理協(xié)議”,用于網(wǎng)絡(luò )管理的協(xié)議。SNMP定義在IP協(xié)議上,使用無(wú)連接的UDP進(jìn)行通信,SNMP支持5個(gè)基本的操作,分別是:GetRequest、GetNextRequest、SetRequest、GetResponse和Trap,這 5個(gè)操作來(lái)自各自的PDU結構。SNMP采用的是一個(gè)請求---應答的通信方式,Trap除外,Trap不需要應答。在具體實(shí)現上,SNMP為管理員提供了一個(gè)網(wǎng)管平臺(NMS),又稱(chēng)為管理站,負責網(wǎng)管命令的發(fā)出、數據存儲、及數據分析。被監管的設備上運行一個(gè)SNMP代理(Agent),代理實(shí)現設備與管理站的SNMP通信。管理站與代理端通過(guò)MIB進(jìn)行接口統一,MIB定義了設備中的被管理對象。管理站和代理都實(shí)現了相應的MIB對象,使得雙方可以識別對方的數據,實(shí)現通信。管理站向代理申請MIB中定義的數據,代理識別后,將管理設備提供的相關(guān)狀態(tài)或參數等數據轉換為MIB定義的格式,應答給管理站,完成一次管理操作。Agent在161端口監聽(tīng)傳來(lái)的GetRequest、GetNextRequest和SetRequest命令,NMS在162端口監聽(tīng)傳來(lái)的Trap。SNMP操作請求被封裝成一個(gè)簡(jiǎn)單的UDP分組,接收端處理完請求后應答一個(gè)UDP的SNMP消息報文;一個(gè)請求對應一個(gè)應答就完成了一次操作。SNMP的工作方式:管理員需要向設備獲取數據,所以SNMP提供了讀操作;管理員需要向設備執行設置操作,所以SNMP提供了寫(xiě)操作;設備需要在重要狀況改變的時(shí)候,向管理員通報事件的發(fā)生,所以SNMP提供了Trap操作。對于網(wǎng)絡(luò )管理,我們面對的數據是設備的配置、參數、狀態(tài)等信息,面對的操作是讀取和設置;同時(shí),因為網(wǎng)絡(luò )設備眾多,為了能及時(shí)得到設備的重要狀態(tài),還要求設備能主動(dòng)地匯報重要狀態(tài),這就是報警功能。

Get:讀取網(wǎng)絡(luò )設備的狀態(tài)信息。Set:遠程配置設備參數。Trap:管理站及時(shí)獲取設備的重要信息。下面是管理信息庫的對象標識

對象命名樹(shù)的頂級對象有三個(gè),即ISO、ITU-T和這兩個(gè)組織的聯(lián)合體。Internet(標號是1)在ISO 下的被標識組織的dod下,其標識符為{1.3.6.1}。Internet結點(diǎn)下面的第二個(gè)結點(diǎn)是mgmt(管理),標號是2。其標識為{1.3.6.1.2.1}或{Internet(1).2.1}。這種標識為對象標識符,即ObjectID ,簡(jiǎn)稱(chēng)OID。這里要提一下MIB中的對象{1.3.6.1.4.1},即enterprises(企業(yè)),其所屬結點(diǎn)數已超過(guò)3000。例如IBM為{1.3.6.1.4.1.2},Cisco為{1.3.6.1.4.1.9},Novell為{1.3.6.1.4.1.23}等。世界上任何一個(gè)公司、學(xué)校只要用電子郵件發(fā)往iana-mib@isi.edu

進(jìn)行申請即可獲得一個(gè)結點(diǎn)名。這樣各廠(chǎng)家就可以定義自己的產(chǎn)品的被管理對象名,使它能用SNMP進(jìn)行管理。

三、Net-SNMP軟件包 目前,開(kāi)發(fā)SNMP的軟件包有許多可以選擇如SNMP++、AGENT++、NET-SNMP等。這里我們選用的是NET-SNMP。首先它是一個(gè)開(kāi)源軟件,其次基于C語(yǔ)言開(kāi)發(fā),便于移植。net-snmp早先是在Unix平臺下開(kāi)發(fā)的?,F可以移植到 Linux 、 Windows等多個(gè)平臺。Net-snmp是一個(gè)代理端軟件,但也提供管理端的查詢(xún)工具。安裝有兩種方式:一是直接安裝的二進(jìn)制包,二是需要編譯的源代碼。我們在windows平臺上安裝的二進(jìn)制包,在windows上的二進(jìn)制包的安裝就非常簡(jiǎn)單了,只需按提示就可完成。源代碼和二進(jìn)制包可從www.net-snmp.org

網(wǎng)站下載,本文中所用的是net-snmp5.2.1.2的版本。之所以要先安裝一個(gè)可運行的net-snmp系統,是因為我們開(kāi)發(fā)程序運行環(huán)境的配置文件,是按照默認安裝路徑內部設定搜索的;另外,還可以利用其提供的配置工具來(lái)生成配置文件,利用提供的查詢(xún)工具來(lái)測試程序。運行net-snmp之前先要進(jìn)行環(huán)境設置,否則無(wú)法查詢(xún)到結果。

四、系統設計

1. 硬件設計

下圖是控制板實(shí)物圖和LED內部接線(xiàn)圖。MCU選用Cotex M3系列STM32F103芯片,以太網(wǎng)控制芯片選用WIZnet的W5500。程序以控制D3為例詳細介紹SNMP協(xié)議的應用。D3和MCU的PA3相連,低電平有效。

2.程序設計

在分析細節代碼之前,我們還是先來(lái)看一下主函數。在這里完成了對W5500EVB的初始化,并在主函數中加入簡(jiǎn)單的LED燈閃爍提示,同時(shí)也為SNMP協(xié)議啟動(dòng)做好準備,之后便進(jìn)入SNMP協(xié)議操作進(jìn)程。SNMP協(xié)議操作程序主要是snmplib和snmpdemo兩個(gè)子函數。以下是系統基本的工作流程。 在snmplib程序中詳細介紹了SNMP協(xié)議的工作流程。以下主要對報警報文的發(fā)送進(jìn)行簡(jiǎn)單地分析。NMS網(wǎng)管平臺在UDP模式下打開(kāi)162端口監聽(tīng)傳來(lái)的Trap,成功得到Trap后關(guān)閉SOCK_SNMP。

?int32 SnmpXTrapSend(... ...){

..................

// Send Packet

{

uint8 svr_addr[6];

//UDPOpen(SOCK_SNMP,162);

socket(SOCK_SNMP,Sn_MR_UDP,162,0);

ipToByteArray(managerIP, svr_addr);sendto(SOCK_SNMP, packet_trap, packet_index, svr_addr, 162);

close(SOCK_SNMP);

return 0;

}

}

Agent工作在UDP模式下,在SOCK_SNMP中打開(kāi)161端口監聽(tīng)傳來(lái)的GetRequest、GetNextRequest和SetRequest命令。成功打開(kāi)端口以后,首先通過(guò)讀取空閑接收緩存寄存器來(lái)判斷是否接收到數據。如果接收到數據,就通過(guò)recvfrom()從具體的端口和地址把數據讀出來(lái)。之后判斷數據是否正確,若果不正確就返回再次讀取,如果數據正確,就發(fā)送到網(wǎng)絡(luò )端執行命令。。最后關(guān)閉SOCK_SNMP,執行下一次操作。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: W5500STM32SNMP協(xié)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>