SNMP协议分析和在嵌入式操作系统下的实现

上传人:痛*** 文档编号:113445726 上传时间:2022-06-25 格式:DOC 页数:31 大小:2.01MB
收藏 版权申诉 举报 下载
SNMP协议分析和在嵌入式操作系统下的实现_第1页
第1页 / 共31页
SNMP协议分析和在嵌入式操作系统下的实现_第2页
第2页 / 共31页
SNMP协议分析和在嵌入式操作系统下的实现_第3页
第3页 / 共31页
资源描述:

《SNMP协议分析和在嵌入式操作系统下的实现》由会员分享,可在线阅读,更多相关《SNMP协议分析和在嵌入式操作系统下的实现(31页珍藏版)》请在装配图网上搜索。

1、.xxxx大学xx毕业论文SNMP协议分析与其在嵌入式操作系统下的实现学 生:fy04040019163.学 号:FY04040019专 业:通信工程导 师:xxxx大学二七年十一月29 / 31.SNMP协议分析与其在嵌入式操作系统下的实现摘 要本文以嵌入式SNMP代理的开发为背景,分别介绍了SNMP协议和嵌入式系统。在SNMP协议部分,介绍了网络管理和协议的概念,并详细分析了SNMP协议;在嵌入式系统部分阐述了嵌入式系统的概念、特点、结构与嵌入式Linux软件开发过程。在此基础上,给出了利用Net-SNMP软件开发包实现嵌入式Linux操作系统下的SNMP代理的实例。 关键词:网络管理,S

2、NMP,网管代理,嵌入式系统Analysis of SNMP Protocol and Implemetation of SNMP Agent in Embedded SystemABSTRACTThis document is based on development of embedded SNMP agent, including analysis of SNMP protocol and description of embedded system. At the part of analysis of SNMP protocol, this document introduces t

3、he concept of network management and protocol and labors SNMP protocol. Then, an instant is given to explain how to implement SNMP agent in embedded system. KEY WORDS: Network Management, SNMP, Agent, and Embedded System目录目录3第一章绪论51.1、背景介绍51.2、论文所做的工作51.3、论文结构5第二章简单网络管理协议(SNMP)62.1、网络管理62.1.1、网络管理模型

4、72.1.2、网络管理原则72.2、通信协议72.2.1、协议分层概念82.2.2、面向连接和无连接协议82.3、简单网络管理协议(SNMP)82.3.1、管理信息结构SMI92.3.2、管理信息库MIB92.3.3、SNMPv1通信模型112.3.4、SNMPv1消息格式112.3.5、SNMPv1的5种协议数据单元(PDU)122.3.6、SNMPv1的消息实例132.3.7、SNMPv2和SNMPv3152.4、小结15第三章嵌入式系统173.1、嵌入式系统定义173.2、嵌入式系统特点183.2.1、硬件特点183.2.2、软件特点183.3、嵌入式典型硬件结构193.4、嵌入式Lin

5、ux操作系统193.5、嵌入式Linux系统开发203.5.1、嵌入式软件开发特点213.5.2、嵌入式Linux软件开发步骤223.6、小结22第四章嵌入式SNMP代理的实现234.1、需求分析234.2、系统设计234.3、开发环境244.3.1、Net-SNMP软件开发包244.3.2、MG-SOFT的MIB工具244.4、开发过程244.4.1、建立开发环境254.4.2、编写MIB254.4.3、编写程序代码274.4.4、调试代理程序284.4.5、固件更新294.5、小结29第五章结束语31参考文献32致谢第一章 绪论1.1、背景介绍人类正处于以计算机通信网络为中心的时代。网络技

6、术日新月异,网络的复杂性在不断增长,网络数量、网络设备越来越多,而且许多设备都是来自不同的厂家,因此,网络管理的问题也就越来越重要了。由于SNMP协议简单,易于实现,它得到了广泛的应用,成为网络管理事实上的工业标准。嵌入式系统是计算机系统的一个分支,与通用计算机系统相对。嵌入式系统的围相当广泛,基本上,计算机系统中不属于通用计算机系统的,都可以归为嵌入式系统,它在数量上远远超过了各种通用计算机系统。在嵌入式设备上实现SNMP代理是发展趋势。目前,大部分网络设备都支持SNMP协议。1.2、论文所做的工作本文研究了简单网络管理协议(Simple Network Management Protoco

7、l, SNMP)和嵌入式操作系统的相关理论,并且将SNMP协议应用于嵌入式操作系统。论文主要包括下列容:1 简单网络管理协议(SNMP)分析。包括引入网络管理和协议的概念,介绍管理信息结构(SMI)和管理信息库(MIB),以与对简单网络管理协议(SNMP)的分析。2 嵌入式系统定义与其特点。介绍了嵌入式系统的定义,特点和软硬件构架。并着重分析了嵌入式Linux软件开发过程。3 SNMP协议在嵌入式操作系统下的实现。用一个实例来介绍SNMP代理在嵌入式系统下的实现。1.3、论文结构本文共分五章,其容如下:第一章:绪论。介绍论文课题研究的背景,给出论文的研究容。第二章:简单网络管理协议(SNMP)

8、。讲述了网络管理和协议的概念;详细分析了简单网络管理协议(SNMP),包括管理信息结构(SMI),管理信息库(MIB)以与SNMP的三个版本(SNMPv1,SNMPv2c和SNMPv3)。第三章:嵌入式系统。介绍嵌入式系统,包括其结构和特点;分析嵌入式Linux软件开发过程。第四章:嵌入式网络管理代理的实现。介绍介绍SNMP协议软件开发包和相关应用工具;分析SNMP协议在嵌入式操作系统下的实现过程。第五章:结束语。总结本文的研究工作。第二章 简单网络管理协议(SNMP)自从上个世纪中叶世界上第一个分组交换的计算机通信网ARPANET投入运行以来,计算机与通信技术的结合得到飞速发展,并且产生了国

9、际互联网(Internet),人类进入了以计算机通信网络为中心的时代。目前,Internet还在以超常的速度发展。根据2006年7月的CNNIC第十八次调查报告显示,截止至2006年6月30日,我国互联网发展的数据见下表:表2-1 我国互联网信息统计表统计项目数量单位上网用户总人数,万人上网计算机,万台WWW站点数约,个IP地址总数,个国际线路的总容量,M与此同时,网络技术也是日新月异,网络的复杂性在不断增长,网络数量、网络设备越来越多,而且许多设备都是来自不同的厂家,因此,网络管理的问题也就越来越重要了。2.1、网络管理网络管理也就是管理网络,它可以分为两类。第一类是网络应用程序管理、用户X

10、X管理和读写权限的管理,使用时间的管理等等。它们都是与软件有关的网络管理问题。这里不作讨论。本文关心的是第二类,对网络硬件设备的管理。这一类包括工作站、服务器、网卡、路由器、网桥和集线器等等。他们不象你的用户,在有问题的时候知道打来告诉你,当一个路由器出问题的时候它并不会通知你,这就给你维护网络的正常运行带来了困难。更不幸的是,这些设备通常情况下都分布在各个不同的地方,因此检查网络故障非常麻烦。那么,这类设备该如何管理?为了解决这个问题,厂商们已经在一些设备中设立了网络管理的功能,这样你就可以远程地操作它们,如改变它们的参数、询问它们的状态,还能够让它们在某一特定类型的事件发生时发送告警给你。

11、这些设备通常被称为智能设备,它们能够帮助你更好的管理网络。2.1.1、网络管理模型网络管理通常被分为四个部分: 被管设备。即你想要监视的设备。 网管代理。它是运行在被管理设备上, 用来跟踪被管理设备状态,读写被管理设备参数的特殊软件。 网管工作站。它与在不同的被管理设备中的网管代理通信,通过网管代理来管理被管设备。 网络管理协议。网管工作站和网管代理用来交换信息的一套规则。被管设备管理工作站网管代理 被管对象网络管理协议图2-1 网络管理模型图2.1.2、网络管理原则当设计和构造网络管理的基础结构时,需要遵循下列两条在工业界被广泛承认的网络管理的原则: 由于管理信息而导致的通信量增加不应明显地

12、增加被管理网络的负担。 被管理设备上的协议代理不应明显地增加系统处理的额外开销,以至于影响该设备的主要功能。 2.2、通信协议通信协议就是相互通信的双方或多方传递和交互信息的一些规。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就被称为网络协议。一台计算机只有在遵守网络协议的前提下,才能在网络上与其他计算机进行正常的通信。常见的协议有:TCP/IP协议、IPX/SPX协议、NetBIOS协议等等。在互联网上被广泛采用的是TCP/IP协议,用户如果要访问Internet,必须在自己计算机的网络协议中添加TCP/IP协议。2.2.1、协议分层概

13、念通信协议通常被分为几个层次,每层完成自己单独的功能。通信双方只有在对等的层次间才能进行交互。图2-2 协议分层通信2.2.2、面向连接和无连接协议通信协议要么是面向连接的,要么是无连接的。在无连接方法中,通信子网的任务仅仅是搬移比特而没有其它的行为。在面向连接方法中,通信子网在两个端点之间建立了一条数据通信信道(电路),提供可靠的连接服务。在传输控制协议/因特网协议(TCP/IP)组中,TCP是面向连接的,而UDP则是无连接的。 2.3、简单网络管理协议(SNMP)简单网络管理协议(Simple Network Management Protocol, SNMP)首先是由Internet工程

14、任务组织(Internet Engineering Task Force,IETF)的研究小组为了解决Internet上的路由器管理问题而提出的。由于SNMP协议简单,易于实现,它得到了广泛的应用,成为网络管理事实上的工业标准。SNMP管理也叫Internet管理,之所以被称为SNMP管理是因为它不光可以管理Internet还可以管理部网(intranet)和电信网等等。SNMP是一种应用层协议,它被设计成与下层协议无关,因此,SNMP可以在IP,IPX,AppleTalk,OSI以与其它的传输协议上被使用。SNMP是无连接协议,这种机制减轻了网管代理的负担,它不必为了建立和维护可靠连接而耗费

15、资源。而尽量少给被管理网络增加负担符合了网络管理的原则。SNMP是一系列协议组和规,它主要由三个部分组成。 管理信息结构(Structure of Management Information, SMI) 管理信息库(Management Information Base, MIB) 简单网络管理协议(SNMP)有关SNMP的定义与协议的运行方式被详细的描写在RFC1155、RFC1212、RFC1157、RFC1213四份文件中,其中RFC1155和RFC1212是关于SMI的,RFC1213定义的MIB-II就是目前使用的版本,而SNMP协议则被定义在RFC1157中。2.3.1、管理信息

16、结构SMI管理信息结构SMI定义了被管对象的规说明。SMI中没有任何的对象实例,它只关心抽象的对象类型。每个对象类型都有自己的名字、语法和编码模式。名字是用来标识对象的,它在系统中必须唯一。对象类型的语法通过ASN.1定义。编码则是通过基本编码规则(Basic Encoding Rule, BER)来完成,它用标记、长度和值(TLV)对在SNMP协议间传递的信息进行编码。2.3.2、管理信息库MIB如果说管理信息结构SMI是一套规则,那么管理信息库MIB则是根据这套规则定义出来的一组对象。网络中的被管对象就是通过MIB被访问。Internet 管理机构定义了Internet 管理信息库,它有两

17、个版本,一个是MIB-I,另一个是MIB-II,目前使用的版本是MIB-II。MIB中的对象是以树状分层结构进行组织的,如图:tcp(6)ip(4)interface(2)system(1)mib-2(1)private(4)experimental(3)mgmt(2)directory(1)internet(1)dod(6)org(3)iso(1)enterprise(1)IBM(2)图2-3 MIB树MIB树的分枝实际上就是数据对象的逻辑分组。而树叶就是被管对象。为了便于使用,MIB树的每个分枝都有一个专用的名字和一个数字形式的对象标识符(Object Identifier, OID)。如

18、同DNS和IP地址的关系一样,专用名字的作用是为了方便人的记忆而设的,OID才是真正在通信中供机器使用的。例如:system 组的sysDescr对象,它的OID是1.3.6.1.2.1.1.1,你也可以用iso.org.dod.internet.mgmt.mib-2.system.sysDescr来表示它,而且,大多数人想看到的都是这种文字的表述方法,毕竟,要记住一长串不相干的数字可不容易。这也是为什么MIB浏览器都用文字格式来表示数据对象,如图:图2-4 通过浏览器查看MIBMIB中的对象定义,尽可能涵盖所有的网络设备的功能,不足的部分则由厂商自行定义,即开发所谓的私有MIB。私有MIB属

19、于MIB中的对象1.3.6.1.4.1,即enterprises(企业)。开发网络设备的公司一般都有自己的私有MIB节点,例如IBM为1.3.6.1.4.1.2,Cisco为1.3.6.1.4.1.9,Novell为1.3.6.1.4.1.23等等。MIB节点有专门的组织管理,如果需要一个私有的MIB节点,可以向该组织申请。具体的方法是发送电子到iana-mibisi.edu进行申请。另外,要注意区分MIB和数据库。数据库中存放的是静态的数据,而MIB是不会储存数据的,MIB中定义的对象只是提供了一条访问被管对象数据的路径。当你通过iso.org.dod.internet.mgmt.mib-2

20、.system.sysName去读取设备的系统名称的时候,MIB并不会给你结果,而是网管代理根据你提供的“路径”去拿sysName的数据给你。至于,这个数据是什么,存在什么地方,MIB是不知道的。2.3.3、SNMPv1通信模型1990年开发的SNMPv1是SNMP的第一个版本。大多数情况下SNMP都是在TCP/IP里实现的,下图描述了SNMP在TCP/IP体系上的通信过程:图2-5 SNMP通信过程2.3.4、SNMPv1消息格式SNMPv1采用基于共同体(Community)的访问策略,同时它的安全性也是由共同体来管理的。SNMP管理站(SNMP Manager),SNMP代理(SNMP

21、Agent)和共同体名称(Community Name)构成了一个共同体。只有在同一个共同体里面的SNMP管理站和SNMP代理才能相互通信。这种通信可以包括来自SNMP管理站的询问消息、来自SNMP代理的应答消息或者来自代理给管理站的告警(Trap)消息。一条SNMP消息由三个部分组成:版本(Version)、共同体名称(CommunityName)和SNMP协议数据单元(SNMP Protocol Data Unit, SNMP PDU),其结构如下:版本共同体名称SNMP PDU图2-6 SNMP消息结构 版本:用于说明现在使用的是哪个版本的SNMP协议。“0”表示SNMPv1。 共同体名

22、称:当前使用的共同体名称,通信双方必需事先知道这个名称才能进行通信。 SNMP PDU:SNMPv1的PDU有五种类型,它们是:GetRequest-PDU,GetNextRequest-PDU,GetResponse-PDU,SetRequest-PDU和Trap-PDU。2.3.5、SNMPv1的5种协议数据单元(PDU)SNMPv1规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理进程之间进行信息交换。下图描述了SNMP的这5种报文操作。图2-7 SNMP的5种报文操作一般情况下,在代理进程端是用161端口来接收get或set报文,而在管理进程端是用162端口来接收

23、trap报文。下面介绍封装成UDP数据报的5种操作的SNMP报文格式。 Get/set PDU:PDU类型RequestID错误状态错误索引变量绑定列表图2-8 SNMP get/set PDU Trap PDU:PDU类型企业OID代理地址标准告警类型特殊告警类型时间戳变量绑定列表图2-9 SNMP Trap PDU1) PDU类型:五种PDU类型在RFC1157中被定义成如下形式:表2-2 SNMP PDU类型定义类型长度Get-request0Get-next-request1Set-request2Get-response3Trap42) RequestID:用于跟踪消息,确定它是否被

24、成功收到。这是因为SNMP协议是无连接的,不保证数据的可靠传输,对于消息的可靠性要系统自己来完成。3) 错误状态:用一个不为零的数来指示是否有错误发生。4) 错误索引:对错误状态的补充说明。5) 变量绑定列表:由多个变量绑定组成,每个变量绑定由对象标识符和它的值组成。6) 时间戳:从上一次初始化以来经历的时长。2.3.6、SNMPv1的消息实例本段我们将通过分析数据包来看看,SNMP消息实际上的样子。图2-10 SNMP get消息图2-10是一个被发送到被管设备的SNMP消息,它请求读取sysName。下面我们将用4图来层层分解这条消息。图2-11 TLV结构SNMP协议间传递的信息用标记、

25、长度和值(TLV)进行编码。由图2-11可以看到,整个消息就是一个TLV结构,十六进制的26表明后面数据的长度是38个字节。数据中的各个部分也是按TLV结构编码的,这里就不再一一说明了。图2-12 SNMP消息的三个部分图2-12中可以看到,在这条消息中,Version的值是0,它表示消息中使用的是SNMPv1。通过将十六进制的数字转为字符,可以得到Community Name是public。图2-13 SNMP PDU结构图2-13显示了以下信息: PDU类型:Get Request Request ID:39 错误状态: 0 错误索引: 0图2-14 变量绑定图2-14是一个对变量绑定的分

26、解,其中变量是 OID:1.3.6.1.2.1.1.5.0(iso.org.dod.internet.mgmt.mib-2.system.sysName.0),它的值在这里为空(NULL)。2.3.7、SNMPv2和SNMPv31993 年发布的SNMPv2 最大的改动在于提供了SNMPv1 所没有的安全功能。但是,由于协议工作小组在安全性的认识上有较大的分歧,最终还是沿用了SNMPv1的基于共同体的安全模式。作为SNMPv2 的修改版本,SNMPv2工作小组在1996年发布了SNMPv2c。实际中使用的第二版就是SNMPv2c,这里面c表示Community-based, SNMPv2c也就

27、是Community-based SNMPv2。RFC1901中有关于SNMPv2c的描述,它与SNMPv1之间有一个很大的问题,就是不兼容,例如:SNMPv2c中新增了一个数据类型Counter64, 它不能被SNMPv1解析。SNMPv2c重大改进有三: 新增get-bulk消息,可以使用此消息请求和接收大批量的数据。 增加了manager-to-manager消息,允许管理站之间直接通信。 升级了管理信息结构(SMI),并且扩充了MIB。SNMPv1和SNMPv2c都是基于共同体的访问模式,在安全性方面没什么不同,SNMPv3满足了SNMP在管理上的安全要求。SNMPv3采用基于用户的安

28、全模型(User-based Security Model, USM)和基于视图的访问控制模型(View-based Access Control Model, VACM)。RFC 2574和RFC 2575分别描述了USM和VACM。基于用户的安全模型(USM),类似于传统的用户名加密码的管理方式。它对消息进行身份验证和加密解密,而在SNMP的前两个版本中,消息都是以明文传送的,其中也包括了共同体名称。基于视图的访问控制模型(VACM)用于控制对SNMP的访问,它可以控制谁能访问网络元素,它们能访问什么,以与它们的访问权限(读/写)。VACM在RFC 2575中描述。2.4、小结本文涉与的网

29、络管理是对网络硬件设备的管理,管理站和被管设备用来互通信息的一组规则被称为网络管理协议。现在使用最为广泛的网络管理协议叫简单网络管理协议(SNMP),SNMP是一种应用层的无连接协议,它一般在TCP/IP体系中应用,但这并不是说SNMP只能用在TCP/IP体系中。SNMP被设计成与协议无关,所以它可以在IPX,AppleTalk,OSI以与其它的传输协议上被使用。SNMP包括管理信息结构(SMI),管理信息库(MIB)和简单网络管理协议(SNMP)三个部分。管理信息结构SMI是一套规则,而管理信息库MIB则是根据这套规则定义出来的一组对象。MIB中的对象是以树状分层结构进行组织的。要注意MIB

30、和存储数据的管理数据库是不一样的。SNMPv1的安全模式是基于共同体(Community)的。SNMPv1中定义了5种报文操作(get-request、get-next-request、set-request、get-response和trap) ,前3个是SNMP管理站发给SNMP代理的,后两个是代理发给管理站的。SNMPv2 最大的改动在于提供了SNMPv1 所没有的安全功能。但是并没有得到实施,它的最终版本SNMPv2c还是基于共同体的。另外,SNMPv2c对SNMPv1不向后兼容。SNMPv3主要改动在安全方面。SNMPv3采用基于用户的安全模型(USM)和基于视图的访问控制模型(VA

31、CM)。第三章 嵌入式系统上个世纪40年代,美国诞生了第一台电子计算机。从此,人类在计算领域中进入了一个完全崭新的时代。计算机的发展可以分为五代:第一代:电子管计算机。第二代:晶体管计算机。这一时期操作系统的雏形开始形成。第三代:集成电路计算机。第四代:大规模集成电路计算机。微处理器(CPU)就是从这里开始的,后来在INTER 8080的基础上,出现了我们熟悉的个人计算机(Personal Computer, PC)。第五代 智能计算机。这是目前计算机所处的时代。在快速发展的过程中,计算机系统出现了两个分支。一个是我们一般意义上的计算机,也就是通用计算机系统,包括大型机,小型机和PC机。另一个

32、是嵌入式系统(Embeded System),它的围相当广泛,基本上,计算机系统中不属于通用计算机系统的,都可以归为嵌入式系统。嵌入式系统在数量上远远超过了各种通用计算机系统。就计算机系统的核心CPU而言,每年全球产量中超过80应用于各类专用性很强的嵌入式系统。嵌入式产品五花八门,如电子表,各类数码产品甚至是电饭煲中,都应用了嵌入式系统。嵌入式产品主要可以分为四类: 信息家电。如今,电视机,电冰箱,洗衣机等家用电器都具备了智能。电冰箱可以自动控温,甚至可以通过Internet控制,都是因为其中嵌入了特殊的计算机系统。 移动计算设备。这主要是各类PDA(Personal Digital Assi

33、stant),包括电子字典,电子记事本,以前的BP机,现在的手机,手持游戏机(Play Station Portable, PSP)等等。 网络设备。各种路由器,交换机都属于嵌入式产品。 工控产品。在工控和军事应用中,也包含了大量的嵌入式系统。3.1、嵌入式系统定义嵌入式系统其实就是一种计算机系统,因为它的专用特性而有别于通用计算机系统。它与通用计算机系统的差别主要体现在三个方面: 用途。嵌入式系统是专用计算机系统,它一般是为了某个特定功能而开发,因而没有通用计算机系统的通用性。 结构。因为执行特别的任务,嵌入式系统往往附加了很多外设接口电路。同时,用不到的接口自然是被裁减掉了。 外形。因为嵌

34、入式系统的专用性,再加上结构上的变化,它在外形上千变万化,不同的嵌入式系统有不同的样子,更不用说与通用计算机比较。因为应用上的需求,嵌入式系统往往被嵌入在各种产品和系统中,嵌入式系统由此而得名。它的本质其实就是把一个计算机系统裁剪加工后嵌入到另一个系统中去。那么,到底什么是嵌入式系统?根据英国电机工程师协会的定义,嵌入式系统为控制、监视或辅助设备、机器或甚至工厂运作的装置。它具备了下列四项特性: 通常执行特定功能; 以微电脑与周边构成核心; 严格的时序与稳定度要求; 全自动操作循环。它的正式定义是:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成

35、本、体积、功耗有严格要求的专用计算机系统。3.2、嵌入式系统特点嵌入式系统是面向应用的,因此嵌入式产品的开发是紧紧围绕产品功能的进行的,在保障质量的前提下,尽量裁剪掉不必要的软件和硬件,降低成本,提高竞争力。我们知道,一台PC机也可以完成路由功能,但是它需要几千块钱,而一台嵌入式的路由器只需几百块。很明显,如果只是完成路由功能的话,路由器比PC机竞争力更强。3.2.1、硬件特点 可靠性。嵌入式产品一般都要求长期运行,有的还要处于恶劣环境中,如户外或者高温条件下。这就要求各元器件性能可靠。 低功耗。一方面可以省电,另一方面利于散热。主要是出于散热考虑,试想,一个手机功耗高散热慢,打十分钟就烫手,

36、那谁还会花钱去买。 体积小。嵌入式系统的体积需要满足被嵌入的系统的要求,一般来说都是要求它的体积尽量小。 成本控制。为了提高竞争力,嵌入式产品对硬件成本有严格控制。只要够用就可以了,例如CPU,只要它的速度满足要求即可,并不一定要用最好最快的。 监控电路。即看门狗电路(Watch Dog),它对系统器监控作用,必要的时候能够复位硬件,被用来保证系统长久运行。3.2.2、软件特点 固态存储。出于提高执行速度和系统可靠性考虑,嵌入式系统中的 软件一般都固化在存储器芯片或单片机本身。这样的嵌入式软件被称为固件(Firmware)。 精简性高。在嵌入式系统中,存储空间是宝贵的,对代码执行效率有较高的要

37、求,因而软件代码越精简越好。 实时性强。许多嵌入式系统要求很强的实时性,尤其是在多任务嵌入式系统中,各任务之间的调度必须通过优化软件来完成。 界面简洁。嵌入系统一般不使用过于复杂的人机界面,人机界面的有效、简洁和软件系统本身一样重要。在实际的嵌入式产品中,界面都是尽量做到简洁,实用,操作方便。3.3、嵌入式典型硬件结构嵌入式系统种类繁多,其中一种典型结构是:ARM + SDRAM + FLASH。下面分别来介绍这三种硬件: ARM。ARM是指采用ARM技术的微处理器。ARM原本是英国一家公司(Advanced RISC Machines)的缩写,ARM公司专门从事基于RISC(Reduced

38、Instruction Set Computer)技术晶片设计开发,本身不直接从事晶片生产,而是将其技术授权给世界上许多著名的半导体、软件和OEM厂商,其中包括Intel、IBM、LG半导体、NEC、SONY、菲利浦等等。基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术的突出优点是低耗,这一点特别适合嵌入式设备。 SDRAM (Synchronous Dynamic random access memory)。同步动态随机存储器也就是我们平时所说的“同步存”。SDRAM用于系统工作时保存临时数据和程序,因为在系统掉电后,保存在其中的数据都会丢失。它的优

39、点是,容量大、价格便宜、访问速度快,所以常被用在嵌入式系统中。 FLASH。FLASH在这里是指Flash Memory存储器,就是 “闪存”。闪存属于电擦除可编程只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM),它既有ROM的特点,又有很高的存取速度,而且易于擦除和重写,功耗很小。它能在不加电的情况下能长期保持存储的信息。目前,大多数闪存可以保证擦写百万次以上,如果每5分钟写一次的话,可以使用10年以上。综上原因再加上嵌入式系统中一般是没有硬盘的,所以,闪存常被用来保存长期的数据,如:配置信息,固件(Firmw

40、are)等。3.4、嵌入式Linux操作系统一般来说,凡是带有微处理器的专用软硬件系统都可以称之为嵌入式系统。早期的嵌入式设备中是没有操作系统的,原因有二。一是受硬件资源限制无法支持一个操作系统;二是诸如洗衣机、微波炉、豆浆机这样的设备仅仅需要几道简单的控制指令来管理数量有限的按钮和指示灯,没有使用操作系统的必要。 然而,集成电路规模不断提高,给嵌入式系统提供了丰富的硬件平台。同时,嵌入式设备的功能日益强大,嵌入式系统也变得越来越复杂,简单的几条指令已经无法满足系统的要求。因此,嵌入式操作系统就应运而生。嵌入式操作系统近年来发展很快,目前使用较多的产品有:Vxwork、QNX、PalmOS、W

41、indowsCE、pSOS等,但这些商业产品都价格昂贵,因此人们将更多的目光投向了Linux。嵌入式Linux(Embedded Linux)是指对Linux经过裁剪小型化后,可固化在存储器或单片机中,应用于特定嵌入式场合的专用Linux操作系统。它具有如下特点: 开源免费。Linux是一个免费软件,而且它的源代码是开放的。网络上有大量可靠的源代码可以使用,任何人都可以获取这些代码并修改它们,用于开发自己的产品。除了代码,网络上还有大量的文档和其它资源供开发者使用,这都促进了Linux的发展。 高效稳定。Linux的核非常稳定,它的高效稳定在很多方面得到验证,尤其是在网络服务器领域。同时,Li

42、nux的核小巧灵活,其系统核最小只有约134kB,一个带有中文系统和图形用户界面的核心程序也可以做到不足1MB。这使得Linux非常适合嵌入式应用。 强大的网络功能。Linux诞生于因特网时代并具有Unix的特性。它支持所有标准因特网协议,嵌入式Linux继承了这些功能。此外,Linux还支持ext2、fat16、fat32、romfs等文件系统,为开发嵌入式系统应用打下了很好的基础。 支持多种体系结构。Linux通常使用的微处理器是Intel X86芯片家族,但它同样能运行于Motorola公司的68K系列CPU和IBM、Apple、Motorola公司的PowerPC CPU以与Intel

43、公司的StrongARM CPU等处理器。目前,Linux已经被移植到数十种硬件平台上,支持几乎所有流行的CPU,甚至可以在没有存储管理单元(Memory Management Unit,MMU)的处理器上运行。这进一步促进了嵌入式Linux的应用。 丰富的开发工具。几乎所有的Unix系统的应用软件都已移植到了Linux上,其强大的语言编译器GCC,C+等也可以很容易得到。Linux具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运行环境。这降低了开发难度。3.5、嵌入式Linux系统开发硬件开发过程包括了元器件选型,原理图编制,样板试制,硬件功能测试;软件开发首先是选操作系统,移植协

44、议站,然后是应用程序开发,SNMP代理的开发就处在这一阶段。软硬件各自开发结束后,需要进行系统联调,确定没问题后出样机。接下来就是解决样机使用过程中出现的问题。直到样机运行稳定才会批量生产。选择软件平台(操作系统)选择硬件平台(CPU)应用程序开发硬件测试软件测试软硬件联调图3-1 嵌入式产品开发过程3.5.1、嵌入式软件开发特点软件开发在编码后都要经过编译和最后生成可执行的目标文件。这本是一个很自然的过程(通用计算机系统上开发工具会处理整个过程),但是在嵌入式系统上就不是这样了。嵌入式系统由于资源受限,直接在嵌入式系统的硬件平台上开发软件非常困难。一般采用的办法是,先在通用计算机上编写程序,

45、然后,通过交叉编译,生成目标平台上可运行的二进制代码格式,最后下载到目标平台上的特定位置上运行。所谓交叉编译是指在一台通用计算机上进行编译生成在嵌入式设备中运行的目标代码(可执行程序)。用来开发的通用计算机叫宿主机(Host),通常是PC机,在其上运行Linux或者Windows操作系统。嵌入式设备叫做目标机(Target)。宿主机和目标机通过本地网络或者串口(Serial Port)来通信。如下图所示:目标机宿主机本地网络程序执行程序开发串口图3-2 嵌入式开发模式由此,可知嵌入式软件开发特点:开发环境 执行环境这是嵌入式软件开发的特点也是它的难点,因为程序是在宿主机上开发,却在目标机上运行

46、。同样,调试也是个大问题。3.5.2、嵌入式Linux软件开发步骤现在,我们已经知道了嵌入式软件开发的要点,下面看看具体开发的步骤: 建立嵌入式Linux交叉开发环境。根据目标机的硬件平台,在宿主机上安装针对目标机的编译工具。Linux下常用的交叉开发工具主要有开源和商业两种类型,开发者可以根据自身情况选择。 编辑编译程序。在完成嵌入式软件的编码之后,就是进行编译和,以生成可执行代码。交叉编译环境建立好之后,这一步骤与普通程序开发一样,只是调用的编译工具不同而已。 软件调试。将宿主机上生成的代码下载到目标板上,对目标板上程序进行调试(可以在宿主机端用调试工具软件来调试)。 烧写开发板。在测试满

47、意后,使用烧写工具将软件烧写定型在开发板中,也就是人们常说的“Firmware升级”。3.6、小结嵌入式系统是计算机系统中的一个分支,与通用计算机相对。它在用途,结构和外形上不同于通用计算机。它的本质是把一个计算机系统裁剪加工后嵌入到另一个系统中去。它的定义是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。嵌入式系统是面向应用的,这一点决定了它的其它特点。嵌入式系统种类繁多,有的嵌入式设备中是没有操作系统的。有一种典型的应用是硬件采取ARM + SDRAM + FLASH结构,软件使用Linux操作系统。用这种构架开

48、发出来的产品,成本较低而且性能很好。由于资源受到限制,嵌入式设备往往不具备软件开发的条件,需要别的有开发环境的计算机帮助它进行开发。我们通过交叉编译可以在一台通用计算机上进行编译生成在嵌入式设备中运行的目标代码。即便如此,由于开发和使用的环境不同,还是会引出很多问题。这既是嵌入式软件开发的特点也是它的难点。第四章 嵌入式SNMP代理的实现你可能会在网络设备的功能介绍中看到“符合SNMP(简单网络管理协议)” 或是“支持SNMP协议”等等。这是什么意思呢?这些话意味着外界可以使用SNMP协议来与该设备进行信息交换。简单地说,就是在这个网络设备上实现了SNMP代理。前面我们已经详细分析了SNMP协

49、议和嵌入式系统。本章将用实例说明嵌入式SNMP代理的实现。4.1、需求分析SNMP代理主要负责获取被管设备对象的信息,完成参数配置,性能统计,以与故障上报并通过SNMP协议与管理站进行通信,对被管设备进行管理。这里我们将实现一个基本的SNMP代理,它的需求只有3条: 记录被管设备的版本号(Version)。 设备复位。 复位设备前告警。这三条是嵌入式代理要实现的基本要求。1)设备出厂后硬件一般是不会修改的,但是软件有可能更新,也就是“Firmware升级”。因为软件会有改动,在处理问题的时候就必须知道是哪一个版本的设备出问题了,所以要记录被管设备的版本号,而且这个版本号应该是只读的(Read

50、Only)。2)设备复位就是重新启动设备,当设备出现故障或者是Firmware升级完成的时候,需要重启设备。在被管设备距离管理者很远的情况下,通过软件来复位设备,非常有用。3)而“复位”对一个设备来说是一件很重大的事情,通常需要报告给网管站。4.2、系统设计通过上面的需求分析,我们知道了,这个SNMP代理要实现什么功能。下面要做的就是如何来实现这些功能。表4-1 功能设计列表需求设计记录被管设备的版本号在MIB中添加一个表示版本号的节点(OID),当SNMP代理收到读取该节点的消息后,返回版本号。设备复位在MIB中添加一个表示设备复位的节点,当SNMP代理收到将该节点的值设置为“1”的消息后,

51、通知设备重启。针对该节点的其它操作无意义。复位设备前告警在设备重启之前发送Trap消息通知管理站设备重启。Trap消息的发送要在设备重启之前完成,否则,无法保证Trap消息成功发送出去。4.3、开发环境知道要做什么和如何来做以后,我们需要选择开发环境,因为不同的环境会有不同的实现方法。本系统的硬件采用ARM + SDRAM + FLASH构架,其中ARM核选用的是Intel IXP420;嵌入式操作系统采用Linux RedHat9.0;交叉编译工具用的是MontaVista Linux Pro 3.1;Net-SNMP作为代理软件开发包;使用MG-SOFT公司的MIB 工具来进行测试。4.3

52、.1、Net-SNMP软件开发包Net-SNMP,原名UCD-SNMP(因University ofCalifornia at Davis开发与维护而得名)。它是一个开源项目,是非常有名的SNMP网管系统开发包。在Linux下开发SNMP代理几乎都是使用这个开发包。Net-SNMP开发包支持多种操作系统,功能强大。它提供了几乎所有SNMP网管开发所需要的资源,而且支持SNMP现有的三个版本。因为它源代码公开,可以根据实际情况进行合理的裁剪,非常适合嵌入式设计。Net-SNMP软件包自带有可扩展的SNMP代理程序(snmpd),开发人员可以通过修改扩展该程序实现自己的SNMP代理。而且,经过编译

53、后生成的代理程序(snmpd)对SNMPv1和SNMPv2c是兼容的,如果要升级为SNMPv3也只需要修改一些snmpd的配置文件即可。对于Trap,Net-SNMP提供封装好的API,开发人员只要调用这些API就可以发送Trap。Net-SNMP现在发行的版本是5.4.1,我在开发中用到的是5.1.2版本。4.3.2、MG-SOFT的MIB工具MG-SOFT公司的MIB 工具相当成熟,被广泛的用于SNMP开发测试中。它的MIB Browser不但可以读写MIB还可以接收SNMP代理发来的Trap,被众多开发测试人员用来对SNMP代理进行测试;MIB Compiler可以用来检查MIB的合法性

54、,对于编写MIB很有帮助。4.4、开发过程固件更新调试代理程序编写MIB编写程序代码建立开发环境图4-1 嵌入式SNMP代理开发过程由图可知,整个开发过程可以分为5步。下面详细介绍这5个步骤。4.4.1、建立开发环境要在一台普通PC (宿主机) 上建立SNMP代理开发环境,可以分4小步: 在PC上安装Linux RedHat9.0。 在RedHat上安装MontaVista Linux Pro 3.1。 在RedHat上安装5.1.2。 配置编译选项。搭建好开发环境是必需的,否则后面的开发就进行不下去了。另外,可以在测试机器上安装好MIB 工具备用。4.4.2、编写MIB根据系统设计,这里需要

55、添加两个节点,版本号节点和设备复位节点,它们都位于(iso.org.dod.internet.private.enterprises)下面。这两个节点分别是:1.3.6.1.4.1.8888.8.4.19.1(sjtu.ce.FY0404.FY04040019.myVersion),1.3.6.1.4.1.8888.8.4.19.2(sjtu.ce.FY0404.FY04040019.mySysResetNo)。编写过程如下: 将这两个MIB对象用ASN.1进行描述就可生成MIB文件(JOHN-MIB.mib)。MIB文件是文本的,所以编写的时候用一般的文本编辑器就可以了,不需要什么特殊的工具

56、。 利用MIB Compiler来进行语法检查。文件写好后,可以通过MIB Broswer来看这两个节点,如下图:图4-2 新建MIB节点下附MIB文件(JOHN-MIB.mib):JOHN-MIB DEFINITIONS := BEGIN IMPORTS OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF enterprises, Integer32, Gauge32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE FROM SNMPv2-SMI TEXTUAL-CONVENTION FROM

57、SNMPv2-TC;- 交大 :/ce.sjtu.edu./default.asp sjtu OBJECT IDENTIFIER := enterprises 8888 - 成教院 ce OBJECT IDENTIFIER := sjtu 8 - 通信工程 2004届 FY0404 OBJECT IDENTIFIER := ce 4 - 我的学号 FY04040019 OBJECT IDENTIFIER := FY0404 19 - 我的私有节点- myVersion OBJECT-TYPE SYNTAX OCTET STRING (SIZE (0.64) MAX-ACCESS read-on

58、ly STATUS current DESCRIPTION 固件版本号 := FY04040019 1 mySysResetNo OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-write STATUS current DESCRIPTION mySysResetNo=1时,设备重新启动 := FY04040019 2 END4.4.3、编写程序代码MIB文件写好后,可以在MIB Broswer中看到新的节点,但是这些节点还不能被使用。接下来通过编写SNMP代理程序使这些新节点起作用。Net-SNMP自带的工具mib2c可以简化这一过程。利用mib2c

59、可以把MIB文件转化为相应的C语言文件,这样代理程序snmpd可以识别新的MIB节点对象。由工具生成的C语言文件只是描述了新节点对象的框架结构,包括数据类型、访问许可等,它甚至是不能编译的。所以,还需要修改这个C语言文件,实现新节点的具体的操作。编写过程如下: 用mib2c可以把MIB文件转化为相应的C语言文件。 修改生成的C语言文件,实现新节点的具体的操作。对于版本号节点。这个节点是只读的,而且节点对象是一个固定的字符串。所以,读取的时候返回版本号即可。程序片断如下:unsigned char *var_myVersion(struct variable *vp, oid * name, s

60、ize_t *length, int exact, size_t *var_len, WriteMethod * write_method) char versionStr64; switch (vp-magic) case MYVERSION:sprintf(versionStr, “Ver 1.00”);*var_len = strlen(versionStr);return (unsigned char *) versionStr; default: ERROR_MSG(); return NULL;对于设备复位节点。当这个节点被设置为“1”的时候,要做两件事。首先,发送Trap通知网管站

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!