×
嵌入式 > 嵌入式开发 > 详情

W5500+STM32的SNMP协议应用

发布时间:2020-09-18 发布时间:
|
概述

工具: 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。

u200bint32 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,执行下一次操作。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
手机厂商扩大备货.明年联发科5G芯片出货有望高达1.2亿套