概述
东西: PCW5500EVB Net-SNMP软件包编译环境:Keil4 &IAR功用:经过网络办理协议SNMP及根本的操控指令完结简略的LED操控
一、W5500简介
韩国WIZnet公司出产的以太网操控芯片W5500整合了五层结构中的前四层,即物理层、数据链路层、网络层和传输层,并在内部运用硬件完结了TCP/IP协议栈。开发者无需专业的网络常识,运用W5500好像操控外部存储器相同简略,为用户供给了最简略的网络接入办法。全硬件TCP/IP协议栈彻底独立于主控芯片,能够下降主芯片负载且无需移植繁琐的TCP/IP协议栈,便于产品完结网络化更新。以太网操控芯片W5500具有以下特色:
1、W5500支撑硬件TCP/IP协议,包含TCP、UDP、ICMP、IPv4、ARP、IGMP、PPPoE和以太网的PHY和MAC层,TCP/IP协议的硬件完结2、支撑8个独立的SOCKET一起作业,可一起作业在不同的作业形式;3、支撑高速SPI接口(SPI MODE 0,3),SPI的时钟最高可到达80MHz,极大地提高了网络通讯的数据传输速率;4、内部集成32KB存储器用于发送/接纳缓存;5、内嵌10BaseT/100BaseTX以太网物理层(PHY);6、支撑主动洽谈(10/100-Based全双工/半双工);7、作业电压为3.3V,但I/O信号口可接受5V电压;
二、SNMP协议简介
SNMP:“简略网络办理协议”,用于网络办理的协议。SNMP界说在IP协议上,运用无衔接的UDP进行通讯,SNMP支撑5个根本的操作,分别是:GetRequest、GetNextRequest、SetRequest、GetResponse和Trap,这 5个操作来自各自的PDU结构。SNMP选用的是一个恳求—应对的通讯方法,Trap在外,Trap不需求应对。在详细完结上,SNMP为办理员供给了一个网管渠道(NMS),又称为办理站,担任网管指令的宣布、数据存储、及数据剖析。被监管的设备上运转一个SNMP署理(Agent),署理完结设备与办理站的SNMP通讯。办理站与署理端经过MIB进行接口一致,MIB界说了设备中的被办理目标。办理站和署理都完结了相应的MIB目标,使得两边能够辨认对方的数据,完结通讯。办理站向署理恳求MIB中界说的数据,署理辨认后,将办理设备供给的相关情况或参数等数据转换为MIB界说的格局,应对给办理站,完结一次办理操作。Agent在161端口监听传来的GetRequest、GetNextRequest和SetRequest指令,NMS在162端口监听传来的Trap。SNMP操作恳求被封装成一个简略的UDP分组,接纳端处理完恳求后应对一个UDP的SNMP音讯报文;一个恳求对应一个应对就完结了一次操作。SNMP的作业方法:办理员需求向设备获取数据,所以SNMP供给了读操作;办理员需求向设备履行设置操作,所以SNMP供给了写操作;设备需求在重要情况改动的时分,向办理员通报事情的产生,所以SNMP供给了Trap操作。关于网络办理,咱们面临的数据是设备的装备、参数、情况等信息,面临的操作是读取和设置;一起,由于网络设备很多,为了能及时得到设备的重要情况,还要求设备能主动地报告重要情况,这便是报警功用。
Get:读取网络设备的情况信息。Set:长途装备设备参数。Trap:办理站及时获取设备的重要信息。下面是办理信息库的目标标识
目标命名树的尖端目标有三个,即ISO、ITU-T和这两个安排的联合体。Internet(标号是1)在ISO 下的被标识安排的dod下,其标识符为{1.3.6.1}。Internet结点下面的第二个结点是mgmt(办理),标号是2。其标识为{1.3.6.1.2.1}或{Internet(1).2.1}。这种标识为目标标识符,即ObjectID ,简称OID。这儿要提一下MIB中的目标{1.3.6.1.4.1},即enterprises(企业),其所属结点数已超越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}等。世界上任何一个公司、校园只需用电子邮件发往iana-mib@isi.edu
进行恳求即可取得一个结点名。这样各厂家就能够界说自己的产品的被办理目标名,使它能用SNMP进行办理。
三、Net-SNMP软件包 现在,开发SNMP的软件包有许多能够挑选如SNMP++、AGENT++、NET-SNMP等。这儿咱们选用的是NET-SNMP。首要它是一个开源软件,其次根据C言语开发,便于移植。net-snmp早先是在Unix渠道下开发的。现能够移植到 Linux 、 Windows等多个渠道。Net-snmp是一个署理端软件,但也供给办理端的查询东西。装置有两种方法:一是直接装置的二进制包,二是需求编译的源代码。咱们在windows渠道上装置的二进制包,在windows上的二进制包的装置就十分简略了,只需按提示就可完结。源代码和二进制包可从www.net-snmp.org
网站下载,本文中所用的是net-snmp5.2.1.2的版别。之所以要先装置一个可运转的net-snmp体系,是由于咱们开发程序运转环境的装备文件,是依照默许装置途径内部设定查找的;别的,还能够运用其供给的装备东西来生成装备文件,运用供给的查询东西来测验程序。运转net-snmp之前先要进行环境设置,不然无法查询到成果。
四、体系规划
1. 硬件规划
下图是操控板实物图和LED内部接线图。MCU选用Cotex M3系列STM32F103芯片,以太网操控芯片选用WIZnet的W5500。程序以操控D3为例详细介绍SNMP协议的使用。D3和MCU的PA3相连,低电平有用。
2.程序规划
在剖析细节代码之前,咱们仍是先来看一下主函数。在这儿完结了对W5500EVB的初始化,并在主函数中参加简略的LED灯闪耀提示,一起也为SNMP协议发动做好预备,之后便进入SNMP协议操作进程。SNMP协议操作程序主要是snmplib和snmpdemo两个子函数。以下是体系根本的作业流程。 在snmplib程序中详细介绍了SNMP协议的作业流程。以下主要对报警报文的发送进行简略地剖析。NMS网管渠道在UDP形式下翻开162端口监听传来的Trap,成功得到Trap后封闭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中翻开161端口监听传来的GetRequest、GetNextRequest和SetRequest指令。成功翻开端口今后,首要经过读取闲暇接纳缓存寄存器来判别是否接纳到数据。假如接纳到数据,就经过recvfrom()从详细的端口和地址把数据读出来。之后判别数据是否正确,若果不正确就回来再次读取,假如数据正确,就发送到网络端履行指令。。最终封闭SOCK_SNMP,履行下一次操作。