欢迎来到天天文库
浏览记录
ID:34620029
大小:366.66 KB
页数:9页
时间:2019-03-08
《嵌入式linux系统分析及snmpd移植new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于Linux/Net-Snmp构建DMS系统图1显示了典型的DMS系统结构图,其中中央电脑与DMS控制器之间的通信必须是基于NTCIP的。同时,我们也可以在现场直接通过串口来控制控制器。图1:典型的DMS系统框架在应用层,NTCIP建议使用SNMP协议来管理网络内的不同终端。SNMP的工作模式是基于管理工作站/代理模式的。运行网络管理程序的主机成为管理工作站,就是NTCIP网络内的中央电脑(管理中心);运行代理程序的网络设备就是我们的代理,也就是我们这里的DMS控制器。SNMP的数据以一种标准化的层次结构进行布置。这种强制的组织方式使数据空间既保持了通用性又保持了可
2、扩展性。命名的层次结构由MIB(管理信息库)组成,它是描述通过SNMP可访问的数据的结构化文本文件。MIB包含了对特定数据变量的说明,数据变量用被称作对象标识符(OID)的名字来引用。但是MIB只是一个给管理数据命名的约定。SNMP名字空间和设备实际状态之间的映射关系必须由代理端代码支持才有用(包括代理的扩展开发和代理的应用程序开发)。一、Net-Snmp在网络设备上我们使用的是基于Linux的net-snmp。net-snmp除了提供用于响应管理站的代理程序snmpd外,还提供了一些命令行工具和一个可用于开发支持SNMP的应用程序的库组成。在linux下通过命令行可
3、以很方便的调用这些工具,在我们进行代理端的扩展开发时,可以使用它们来进行测试。而开发下位机应用程序时,使用的就是该库提供的API。下面的工作主要是在PC-Linux上完成的,在后续的工作中会逐渐的把它移植到嵌入式的开发板上。安装完Net-Snmp后,我们需要修改代理的配置文件snmpd.conf,图2是修改前和修改后的对比。首先ip地址的修改是指明snmpd支持的主机(即可以访问本代理的主机);把MyROGroup改成MyRWGroup,这样代理就支持了管理站对自己的写(set)操作。目前只需要修改这些地方就可以了,接下来我们就可以使用net-snmp提供的工具来进行
4、简单的get和set操作了。图2:Snmpd.conf修改前后对比二、Snmpd的扩展开发为了使snmpd支持我们自己的MIB(NTCIP的1203文档的第五章详细定义了DMS的MIB),我们必须对snmpd进行扩展。通过net-snmp提供的mib2c工具,我们可以很方便的由我们的MIB文件生成.c和.h文件,然后把.c和.h文件编译成动态库文件(.so),snmpd可以通过调用这个库里的相关处理函数来操作我们的MIB。MIB中的对象主要分为标量对象和列对象两类。标量对象只能例化一个值,比如系统的当前时间、设备的温度等这些对象一次只能有一个值;而列对象存在于表中,可
5、以例化好几个值,比如屏幕上的内容可以同时显示不同的大小、字体等。对标量对象和列对象我们使用不同的配置文件来生成,对生成的源文件还需要进行一些修改,同时我们也可以在其中定义每个对象的初始值。对于snmpd而言我们是需要它在系统启动时就运行的(配置相应的Linux脚本文件即可),同时我们也需要在snmpd启动时就加载我们的.so文件,这时需要在snmpd.conf中加入相应的命令(图3)。图3:snmpd.conf当然我们还有其他方法把我们自己的扩展库加进来,就是把.c和.h文件直接拷贝到net-snmp源代码相应的目录下,然后修改相应的配置文件,重新编译、安装就行了。三
6、、DMS系统结构到这里,管理站与代理的通信已经通过SNMP建立起来了,但当代理接收到管理站set来的值时,我们还需要有一个下位机应用程序来读取这些值,然后调用相应的驱动程序来驱动DMS的显示。图4显示了管理站管理DMS的大概流程:图4:管理站管理DMS流程图5显示了整个系统的框架图:图5:系统框图(1)管理站上运行snmp的管理软件,可以实现对代理上MIB的管理(注意:管理站上也要存储相应的MIB),网上有很多现成的snmp管理软件可以用,但他们都是操作单个对象的,单次只操作一个对象显然不符合实际应用需求。参考文档1203第4章的标准,对于DMS的操作是基于会话实现的
7、,一个会话实现一个完整的功能,其中包括对多个对象的get/set的操作。所以在管理站上我们应用snmp++库(C++提供的snmp应用编程接口函数库)编写管理端的应用程序。(2)Snmpd响应管理端的命令,设置内存中相应对象的值;同时响应下位机应用程序对对象的读命令。(3)下位机应用程序轮询内存中对象的值,一旦检测到某个对象的值发生改变,就将该对象的新值存入嵌入式数据库中,同时调用相应的驱动程序更新DMS的显示。(4)嵌入式数据库用来存储当前各个对象的值,这样在系统掉电重启后,把数据库中的值加载到内存,再由应用程序读取,就可以使系统恢复到掉电前的状态
此文档下载收益归作者所有