- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
vxworks模拟器使用指南
约定文档中提到的路径,均相对于ROS5(M)目录而言。编译模拟器基本原理为了节省时间,模拟器不像设备那样编译一个完整的vxworks镜像文件,而是把系统和模块分开。系统存放在vxsim\vxWorks文件中,该文件由系统组负责维护。模块则编译在vxsim\vxsim.out文件中,这个文件由各自编译。为了编译理解,我们可以和Windows系统做一个对比,vxworks文件相当于Windows系统,.out文件相当于一个exe文件。我们开发一个exe文件的时候,并不需要编译整个Windows系统。因此我们只需要编译出vxsim.out文件即可。vxsim.out的编译过程如下:编译vxsim目录下的所有.c文件,生成对应的.o文件链接步骤1生成的.o文件和lib\gnu\vxworks\SIMNT、publib\gnu\vxworks\SIMNT目录下的所有.a文件。如果两个目录有同名文件,则使用lib目录下的。编译vxsim.out当前模拟器的编译不再使用Workbench工程,完全使用批处理common\vxsim.bat进行,该批处理应该用VxWorks Development Shell运行,而不是cmd。下面描述都假设是在common目录下。从基本原理那能看出,编译vxsim.out需要编译vxsim目录下的.c文件和编译库文件(.a文件)。其中主要的工作是编译库文件。库文件编译编译一个库文件的方法是 vxsim.bat libname,其中libname指的是模块的名称,在module目录下应该有一个libname.module文件。比如:最终生成的库文件是存放在lib\gnu\vxworks\SIMNT目录下,也即当前编译的库文件优先于publib的库文件。一般而言,公共的库文件(rdvp/support/rcis/simssp)在publib目录下已经存在稳定的版本,不用另外编译。各自只需要编译自己当前开发/调试的模块即可。ROS5和ROS5M编译库文件略有不同。ROS5M下的代码是全的,各个组件可以正常编译,比如需要编译命令行库文件,只需要运行vxsim.bat cli即可。其余各个组件的编译方法类似。由于cli目录下存在大量的未组件化模块的命令行,编写不甚规范,在ROS5下是编译不过的(ROS5M可以编过),因此ROS5下应该使用publib下的cli库文件。但是publib下的cli库文件并不包含正在开发的模块命令行,为了解决这个问题,可按如下步骤进行:ROS5的cli库文件应该起一个新名称,比如qoscli。只需要复制一份module下的cli.module文件,然后改个名即可,比如改成qoscli.module。注意该文件不能受控。在cli目录下增加一个filter.txt文件,里面写一行ROSCFILES=xxx.c,比如,这样表示该目录(cli)下只编译erpsCli.c这个文件,可以写多个,中间用空格隔开,大小写敏感,比如ROSCFILES=erpsCli.celpsCli.c编译新增加的命令行库文件,比如这样在lib目录下就会生成一个libqoscli.a。之所以要改名,是因为如果这里也用cli这个名称,根据优先原则,publib下的libcli.a将不会被链接,导致其他模块的命令行链接不进来。mib虽然在ROS5下也能编译通过,但是建议采用和cli类似的处理方法。编译.out文件库文件编译好了之后,即可编译vxsim.out文件了,执行vxsim.bat dev即可:如果编译成功,则在vxsim目录下会生成一个vxsim.out文件,这个就是我们用来调试的文件。常见问题编译问题这里不再赘述,按照一般的编译问题定位方法即可,这里说模拟器比较典型的两个问题:缺少定义和重复定义。缺少定义也就是我们常见的“undefined reference to xxxx”这种错误。模拟器的编译是不会报这种错误的,只有在运行的时候才会出现这种错误。上面说了,现在模拟器是分成了两部分,系统的vxworks文件和模块的vxsim.out文件。编译vxsim.out文件的时候,如果某些变量找不到定义,会假定其在vxworks文件中,因此不会报错只有等运行的时候才会报错。重复定义,也就是我们常见的“multiple definitionxxxx”这种错误,常见于组件开发过程,特别是那些未组件化的模块组件化的时候。因为在libothers.a中存在一份定义,然后新开发的模块中也有一份定义。但是,正常情况下,即使有重复定义,如果模块的独立性没问题,那么也不会出现重复定义的问题。如果出现了这个问题,可以打开vxsim目录下的vxsim.map文件查看原因。里面列出了各个.o被引用的原因。正常情况下,由于lib目录优先,publ
文档评论(0)