vxworks模拟器使用指南

vxworks模拟器使用指南

ID:14722242

大小:268.98 KB

页数:11页

时间:2018-07-30

vxworks模拟器使用指南_第1页
vxworks模拟器使用指南_第2页
vxworks模拟器使用指南_第3页
vxworks模拟器使用指南_第4页
vxworks模拟器使用指南_第5页
资源描述:

《vxworks模拟器使用指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、约定Ø文档中提到的路径,均相对于ROS5(M)目录而言。1.编译模拟器1.1.基本原理为了节省时间,模拟器不像设备那样编译一个完整的vxworks镜像文件,而是把系统和模块分开。系统存放在vxsimvxWorks文件中,该文件由系统组负责维护。模块则编译在vxsimvxsim.out文件中,这个文件由各自编译。为了编译理解,我们可以和Windows系统做一个对比,vxworks文件相当于Windows系统,.out文件相当于一个exe文件。我们开发一个exe文件的时候,并不需要编译整个Windows系统。因此我们

2、只需要编译出vxsim.out文件即可。vxsim.out的编译过程如下:1、编译vxsim目录下的所有.c文件,生成对应的.o文件2、链接步骤1生成的.o文件和libgnuvxworksSIMNT、publibgnuvxworksSIMNT目录下的所有.a文件。如果两个目录有同名文件,则使用lib目录下的。1.2.编译vxsim.out当前模拟器的编译不再使用Workbench工程,完全使用批处理commonvxsim.bat进行,该批处理应该用VxWorksDevelopmentShell运行,而不

3、是cmd。下面描述都假设是在common目录下。从基本原理那能看出,编译vxsim.out需要编译vxsim目录下的.c文件和编译库文件(.a文件)。其中主要的工作是编译库文件。1.2.1.库文件编译编译一个库文件的方法是vxsim.batlibname,其中libname指的是模块的名称,在module目录下应该有一个libname.module文件。比如:最终生成的库文件是存放在libgnuvxworksSIMNT目录下,也即当前编译的库文件优先于publib的库文件。一般而言,公共的库文件(rdvp/su

4、pport/rcis/simssp)在publib目录下已经存在稳定的版本,不用另外编译。各自只需要编译自己当前开发/调试的模块即可。ROS5和ROS5M编译库文件略有不同。ROS5M下的代码是全的,各个组件可以正常编译,比如需要编译命令行库文件,只需要运行vxsim.batcli即可。其余各个组件的编译方法类似。由于cli目录下存在大量的未组件化模块的命令行,编写不甚规范,在ROS5下是编译不过的(ROS5M可以编过),因此ROS5下应该使用publib下的cli库文件。但是publib下的cli库文件并不包含正在

5、开发的模块命令行,为了解决这个问题,可按如下步骤进行:1、ROS5的cli库文件应该起一个新名称,比如qoscli。只需要复制一份module下的cli.module文件,然后改个名即可,比如改成qoscli.module。注意该文件不能受控。1、在cli目录下增加一个filter.txt文件,里面写一行ROSCFILES=xxx.c,比如,这样表示该目录(cli)下只编译erpsCli.c这个文件,可以写多个,中间用空格隔开,大小写敏感,比如ROSCFILES=erpsCli.celpsCli.c2、编译新增加的命

6、令行库文件,比如这样在lib目录下就会生成一个libqoscli.a。之所以要改名,是因为如果这里也用cli这个名称,根据优先原则,publib下的libcli.a将不会被链接,导致其他模块的命令行链接不进来。mib虽然在ROS5下也能编译通过,但是建议采用和cli类似的处理方法。1.1.1.编译.out文件库文件编译好了之后,即可编译vxsim.out文件了,执行vxsim.batdev即可:如果编译成功,则在vxsim目录下会生成一个vxsim.out文件,这个就是我们用来调试的文件。1.2.常见问题编译问题这里

7、不再赘述,按照一般的编译问题定位方法即可,这里说模拟器比较典型的两个问题:缺少定义和重复定义。缺少定义也就是我们常见的“undefinedreferencetoxxxx”这种错误。模拟器的编译是不会报这种错误的,只有在运行的时候才会出现这种错误。上面说了,现在模拟器是分成了两部分,系统的vxworks文件和模块的vxsim.out文件。编译vxsim.out文件的时候,如果某些变量找不到定义,会假定其在vxworks文件中,因此不会报错只有等运行的时候才会报错。重复定义,也就是我们常见的“multipledefini

8、tionxxxx”这种错误,常见于组件开发过程,特别是那些未组件化的模块组件化的时候。因为在libothers.a中存在一份定义,然后新开发的模块中也有一份定义。但是,正常情况下,即使有重复定义,如果模块的独立性没问题,那么也不会出现重复定义的问题。如果出现了这个问题,可以打开vxsim目录下的vxsim.map文件查看原因。里面列出了各个.o

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。