Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1644420
  • 博文数量: 124
  • 博客积分: 4078
  • 博客等级: 中校
  • 技术积分: 3943
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-21 11:28
个人简介

新博客:http://sparkandshine.net/

文章分类

全部博文(124)

分类: 嵌入式

2012-06-14 17:14:30

摘要:

    本文讲述了协议仿真工具GloMoSim 2.03可视化环境安装,包括VC6.0、JDK、PARSEC编译器、Glomosim安装,涉及到很多环境变量配置。也给出了一个运行实例,最后列举了几个安装过程遇到的问题及解决方法。


PS:本次安装GloMoSim是按[2][3]步骤来的,但中途遇到了不少问题,遂决定重新整理。本文大量参考[2][3],感谢他们。另,有用GloMoSim工具研究协议的,欢迎交流讨论。


一、概述

    最近想搭一个无线传感器网络协议仿真环境,用来研究WSN相关协议,粗略了解下,现有的协议仿真环境还真多,如NS-2、OPNET、SensorSim、EmStar、OMNet、GloMoSim、TOSSIM、PowerTOSSIM,也看了几篇这方面的综述文章。得知,相对其他工具,NS-2+CMU和GloMoSim支持ad hoc网络更好。GloMoSim对大型可扩展的无线网络支持的比NS2/CMU好[1],所以决定采用GloMoSim。关于WSN仿真工具简介可阅读如下博文:

博文《几种用于WSN的仿真工具

    GloMoSim (Global Mobile Information Systems Simulation Library )是一个可扩展的用于无线和有线网络的仿真系统,根据OSI进行分层的建模设计。应用层、传输层、网络层、数据链路层、数据包接收模型、无线电模型和无线电波传播模型等不同的层次之间采用标准的APIs进行仿真。GloMoSim采用Parsec进行设计开发,提供了对并行离散时间仿真的支持。G1oMoSim目前仅支持纯无线网络的协议仿真,可用于仿真传感器网络中的物理信道特征和数据链路协议的时延等特性[1]。(GloMoSim简单介绍见附录百科词条GloMoSim)

二、GloMoSim安装

    搭建GloMoSim可视化环境,需要安装VC6.0+jdk+GloMoSim,博文《转战GloMoSim了》详细给出了具体安装步骤,我也是根据这篇博文来安装的,感谢该博主。但中途遇过不少问题,索性整理下,方便日后安装。

2.1 安装VC6.0

(1)版本问题

    GloMoSim和PARSEC的运行需要C编译器,先安装Microsoft VC++ version 6.0。注:现在Visual Studio最新版本是2010,我先是装了2010版,到设置环境变量的时候,才发现很多不对应。后来,在glomosim解压文件发现有这么个文件夹名含有vc6(glomosim-2.03\parsec\windowsnt-4.0-vc6),所以装VC6.0就好了

(2)变量配置

    右击我的电脑-->属性-->高级-->环境变量-->用户变量中新建,打开用户变量对话框。添加如下内容(我的安装路径是D:\Visual Studio\):

变量名:include 

变量值:D:\Visual Studio\VC98\atl\include;D:\Visual Studio\VC98\MFC\Include;D:\Visual Studio\VC98\Include;

变量名:lib 

变量值:D:\Visual Studio\VC98\MFC\Lib;D:\Visual Studio\VC98\Lib;

    右击我的电脑-->属性-->高级-->环境变量-->系统变量中新建,打开新建系统变量对话框。添加如下内容:

变量名:PATH 

变量值:D:\Visual Studio\Common\MSDev98\Bin;

    注:若当前变量名已存在,则在变量值末尾添加(用分号隔开)。

2.2 安装JDK

    GloMoSim的可视化环境需要用到Java运行环境的支持。理论上,装JRE或者JDK都可以,我建议装JDK,这样,装完JDK可以测试下,Java环境变量设对了没。

(1)下载安装

    下载JDK安装包,点击下载。像普通软件一样安装,你懂的。默认的安装路径为C:\Program Files\Java\jdk1.7.0_04。

(2)环境设置

    右击我的电脑-->属性-->高级-->环境变量-->系统变量中新建,打开新建系统变量对话框。添加如下内容:

变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0_04

变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

变量名:PATH      变量值%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

    注:CLASSPATH变量值前面有一个点,表示当前目录;若当前变量名已存在,则在变量值末尾添加(用分号隔开)。

(3)测试

    开始-->运行-->cmd,分别测试下java -version、javac命令。若提示"'不是内部或外部命令,也不是可运行的程序或批处理文件",则表示安装失败,检查下环境配置。(重启cmd再测试)。

如果还不放心,就写个简单例子测试下,新建HelloWorld.java文件(文件名需与类别一致),内容如下:

  1. public class HelloWorld
  2. {
  3.     public static void main(String[]args)
  4.     {
  5.         System.out.println("Hello World!");
  6.     }
  7. }

    打开命令行定位到这个目录,然后javac HelloWorld.java进行编译,生成HelloWorld.class,用java HelloWorld运行,是否得到"Hello World!"。

2.3 安装PARSEC编译器

(1)安装

    GloMosim是开源的,从官网下载安装包,点击下载(目前最新版本2.03)。解压,我的路径是D:\glomosim-2.03。将glomosim-2.03\parsec\windowsnt-4.0-vc6下的文件夹移动到glomosim-2.03\parsec\目录下。(把windowsnt-4.0-vc6子目录下的所有文件而不是目录移动到父目录,配置会更简单)

(2)环境变量配置

    右击我的电脑-->属性-->高级-->环境变量-->用户变量中新建,打开新建用户变量对话框。添加如下内容:

变量名:PCC_DIRECTORY 变量值:D:\glomosim-2.03\parsec\bin (pcc.exe的路径)

变量名:path 变量值:D:\glomosim-2.03\parsec\bin

变量名:lib 变量值:D:\glomosim-2.03\parsec\runtime

变量名:include 变量值:D:\glomosim-2.03\parsec\include

    其实,我觉得不移动文件夹也可以,只需把用户变量配好就行了。

2.3 安装GloMoSim

(1)设置VC++环境

    命令行进行到D:\Visual Studio\VC98\Bin,执行命令VCVARS32,结果如下: Setting environment for using Microsoft Visual C++ tools.

(2)编译GloMosim

    命令行状态进入D:\glomosim-2.03\glomosim\main,运行命令makent。如果编译成功,则可以在D:\glomosim-2.03\glomosim\bin看到glomosim.exe文件。若出错,多半是因为环境变量没配置好。

    进一步确认安装正确性,命令行进入glomosim-2.03\glomosim\bin目录,运行glomosim.exe config.in。产生一个新文件glomo.stat。将其与相同目录下的glomo.stat.sample比较来确保,看是否相同,相同则表示安装成功。

(3)GloMosim可视化安装

    命令行进入D:\glomosim-2.03\glomosim\java_gui目录,执行命令javac -source 1.4 *.java。(source 表示源文件的版本 target 表示JDK的版本)

2.4 启动可视化GloMosim

    从命令行进入D:\glomosim-2.03\glomosim\java_gui,运行命令java GlomoMain启动GloMosim。效果图如下:

图1 GloMoSim运行界面

三、使用GloMoSim

3.1 仿真实例

    从命令行进入D:\glomosim-2.03\glomosim\java_gui,运行命令java GlomoMain启动GloMoSim。菜单栏Simulate-->Real Time-->OK,如下图:

图2 GloMoSim运行实例步骤

3.2 修复一个BUG

按3.1运行仿真例子,窗口没什么变化,博文[3]提供了两种方法:

(1)方法一(双重配置文件)

    将glomosim-2.03\glomosim\bin目录下文件nodes.input 、mobility.in 、app.conf 、config.in拷贝到D:\glomosim-2.03\glomosim\java_gui。这样,仿真配置文件config.in在glomosim\bin目录下,其他3个配置文件在glomosim\java_gui目录下,生成结果文件glomo.stat也在glomosim\java_gui目录下。当然也,也可以修改执行模式的路径,将config,in修改到glomosim\java_gui,这样,所有配置文件都在glomosim\java_gui下了。

    存在问题:每次运行时都必须进行这样的修改(我没搞懂?)。

(2)方法二(修改config.in)

    将glomosim-2.03\glomosim\bin目录下文件nodes.input 、mobility.in 、app.conf 、config.in拷贝到D:\glomosim-2.03\glomosim\java_gui。打开glomosim-2.03\glomosim\java_guiconfig.in文件,修改如下几个项(事实上,就是重定向):

NODE-PLACEMENT-FILE ./nodes.input改为D:\glomosim-2.03\glomosim\bin\ nodes.input 

MOBILITY-TRACE-FILE ./mobility.in改为D:\glomosim-2.03\glomosim\bin\ mobility.in 

BER-TABLE-FILE ./ber_bpsk.in改为D:\glomosim-2.03\glomosim\bin\ ber_bpsk.in

APP-CONFIG-FILE ./app.conf 改为 D:\glomosim-2.03\glomosim\bin\app.conf

    存在问题:生成结果文件在glomosim-2.03\glomosim\bin目录下。

3.3 一个实例

再次按3.1步骤运行实例,得到效果如下图:

图3 GloMoSim实例运行效果

三、安装遇到问题及解决

我在安装的时候碰到了不少问题,但没及时记录,有些没记录下来。

3.1 fatal error LNK1104

编译GloMoSim(makent命令)提示如下错误:

LINK : fatal error LNK1104: cannot open file "D:\glomosim-2.03\parsec\bin\runtim e\gel_longlong.lib" Failed linking '..\bin\glomosim'

LINK : fatal error LNK1104: cannot open file "D:\glomosim-2.03\parsec\bin\runtim e\gel_longlong.lib" Failed linking '..\bin\radio_range'

    产生这种问题是因为库没有加入到编译路径中,即环境配置不对。解决方法:将D:\glomosim-2.03\parsec\runtime加入到用户变量lib中。类似的cannot open file问题,都可以这样解决。

3.2 未经检查或不安全的操作

命令行D:\glomosim-2.03\glomosim\java_gui>运行javac *.java时,提示如下错误:

注: 某些输入文件使用了未经检查或不安全的操作。 

注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。

图4 未经检查或不安全的操作错误

    这是因为JDK版本不兼容问题引起,解决方法加上源文件版本选项- source,即命令javac -source 1.4 *.java。(source 表示源文件的版本,target 表示JDK的版本)

3.3 incompatible PDB format in

命令行D:\glomosim-2.03\glomosim\bin>运行glomosim.exe config.in提示如下错误:

fatal error LNK1207: incompatible PDB format in

    这是因为PDB格式不兼容,Google了下,解决方法是:选择工具栏中组建->清除,组建->全部重建。但安装GloMoSim是在命令行是完成的,我只能删掉GloMoSim解压文件,重新makent,问题解决。


参考资料:

[1] 博文《几种用于WSN的仿真工具

[2] 博文《转战GloMoSim了

[3] 博文《Glomosim 2.03安装步骤及仿真过程

拓展阅读:博文《》


附:百度百科词条(修改了若干错别字)

    GloMoSim(加州洛杉矶分校)是为无线网络提供的一种仿真环境,但主要适用于ad-hoc网。GloMoSim是用于无线网络的可扩展仿真系统模型,对应于OSI模型,全球移动通信系统仿真库的协议栈同样也是分层设计的,在层与层之间提供了标准API接口函数,这样就可在不同的层或开发人员之间建立快速的综合集成。仿真过程中,GIoMoSim需要初始化每个节点,这些节点以一个PARSEC实 体为单位,而每一个实体的初始化过程又是独立的逻辑过程,都会有自己的运行栈空间。如果参照其他的仿真系统模型,那么随着节点数的增多,系统所需的存储空 间将会成倍增加,而且在不同实体间上卜文切换的实时性也难以估计和保证,这种仿真环境下的系统性能将会受到很大的限制。围绕这个问题,GloMoSim中引入了网格(network gridding)的概念,在网格中,一个简单的实体可以仿真系统中的若干节点, 而这些节点的状态则是通过该实体中的一个数据结构来反映。此外,该数据结构中还包含了优先级以及访问权限的定义。引入了网格的概念,那么当网络系统中增加新 的节点时,仿真的实体数目可以保持不变,仿真前所需规划的仅仅是该系统应该采用多少个实体来表示。而且由于实体的特性相近,在顺序仿真的时候,仅仅初始化 一个实体即可。这样,存储器资源和上下文切换的问题就得到了解决。在GloMoSim仿真环境中,每一个实体根据地理上的区域进行划分,所以,一个实体能够代表哪些网络节点,完全取决于这些网络节点的物理位置和分布。 从上述分析可知,GloMoSim采用网格的方式降低资源需求,它的各个区域是对等的,不存在拓扑上的本质区别,而在WSN中,不同区域的节点本质上在整 个网络中所出的地位是不同的,不可能用网格的概念对待。同时,在GloMoSim中,各节点的位置已知,而实际上由于WSN的特点,各节点在部署后其位置 是未知的,一个实体代表那些网络节点根本不可能实现。

阅读(7454) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~