VectorCAST:嵌入式代码自动化测试解决方案(Windows RSP包的使用)

一、前提条件

1. 概念介绍

1.1 适用本视频的Windows编译链(包括但不限于)

        1.1.1 Tasking、Hightec、GHS、S32DS、Diab、Keil、IAR等等

1.2 参考此文档前,需要配合使用针对不同编译链的模板配置包     

        1.2.1  如没有,请将以下有关信息发给fuyouming@gersing.cn,获取不同的VectorCAST模板配置包  

                1.2.1.1 测试项目的编译链名称(包括版本)

                1.2.1.2 测试项目的编译链名称(包括版本)                    

二、配置Demo项目

1. 初识模板配置包

1.1 模板配置包含的内容一般有

        1.1.1 启动脚本(*.bat)                                           

        1.1.2 模板配置文件(*.CFG)

        1.1.3 readme文档

        1.1.4 SupportFiles目录

     

1.2 LAUNCH_VCAST.bat

        1.2.1 启动VCAST的脚本,每次启动都需要运行                                   

        1.2.2 根据编译链实际安装路径修改VCAST_COMPILER_INSTALL_BASE,PATH等 相关变量

        1.2.3 VCAST_SUPPORTFILES变量不需要修改

1.3 CFG文件

        1.3.1 包含编译链的通用编译和链接命令,默认先不用不修改

1.4 SupportFiles

        1.4.1 包含模板运行必要的辅助文件,默认不用修改

1.5 readme

        1.5.1 包含基于Demo项目的模板使用方法

2. 验证Demo项目

2.1 验证Demo项目成功后再验证实际项目

2.2 通过VCAST_LAUNCH.bat双击打开VCAST

2.3 通过对应的编译模板(.CFG)创建工程(只需创建一次)New->VectorCAST Project->From Configuration File

 2.4 然后选择VectorCAST安装目录下的demo代码创建单元测试环境(Unit Test Environment)

        2.4.1 /tutorial/c/manager.c (C模板)

        2.4.2 /tutorial/c/manager.cpp (C++模板)

        2.4.3 单元测试环境构建方法可以参考单元测试功能演示视频
VectorCAST/C++ 单元测试功能演示_哔哩哔哩_bilibiliVectorCAST/C++ 单元测试功能演示是【官方自制】VectorCAST基础教程合集(已完结,共6P)的第1集视频,该合集共计6集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV1Yv411J7ZG?p=1

三、配置实际项目

1.概述

1.1 对于文件结构简单的小型项目

        1.1.1 先不用修改默认的编译命令,链接命令以及编译选项

        1.1.2 在环境构建时手动添加头文件的搜索路径以及编译宏

                1.1.2.1 通过构建环境第五步的绿色双加号,一次性添加项目的最顶层目录

1.2 对于文件结构复杂的项目(例如AUTOSAR架构), 构建环境的难度在于

        1.2.1 复杂的源码头文件搜索路径

                1.2.1.1 通过解析实际编译命令自动添加

        1.2.2 需要配置特殊的编译宏

                1.2.2.1 通过解析实际编译命令自动添加

        1.2.3 通过解析实际编译命令自动添加

                1.2.3.1 通过参考实际编译命令添加关键选项

        1.2.4 链接命令里有特殊的关键选项

                1.2.4.1 VCAST用到的链接命令一般和实际链接命令不一样

                1.2.4.2 建议先不改动,后续根据实际的链接错误再做调整

2. 解析实际编译命令 - 1

2.1 参考后文的获取编译命令章节,得 到实际编译命令和链接命令(如果 有的话)

        2.1.1 脚本方式编译项目,可以使用 VectorCAST自带的vcshell工具来 获取实际编译信息 (获取编译命令 - 脚本编译)

        2.1.2 IDE界面方式编译项目,则可以在 IDE的界面或者工程配置中获取实际 编译信息 (获取编译命令 – 界面编 译)

        2.1.3 确保编译命令是完整的一行,中间不 能有换行

2.2 在构建环境第一步的Parse Command Line中,将编译命令 拷贝进去,然后点击Parse

2.3 如果搜索路径里包含..的相对路径, 则工具会提示选择基础目录以将相 对路径解析成绝对路径

3. 解析实际编译命令 - 2     

4. 简单验证代码正确性 - 1

4.1 添加完搜索路径以及宏后,用Test Setting 功 能简单验证配置的正确行

        4.1.1 点击Test Settings按钮

4.2 点击choose选择一个待测源文件

4.3 确保Preprocessor和Compiler能Test成功

        4.3.1 如果不通过,可以参考实际编译命令更改模板中的编译命令以及预编 译命令

        4.3.2 不需要和实际编译命令完全一样,一般需要参考关键的编译命令有cpu=xxx/-std=xxx 等

4.4 确保Parser能Test成功

5. 简单验证代码正确性 - 2

5.1 典型的Preprocessor错误: No such file or directory

        5.1.1 根据错误提示,将相关搜索目录添加到构建环境的第五步中

        5.1.2 如下图,头文件是用相对路径include,则搜索目录需要加到abc那层目录的上一层

5.2 如遇Parse 错误

        5.2.1 可以尝试在Parser flags中添加--x86_64 --64_bit_target

        5.2.2 如果flags中有gnu_version, 可以尝试增加version的版本号,例如 90300

        5.2.3 如果预编译和编译命令中有-std=xxx, 则可以添加--xxx

                5.2.3.1 例如,--c99/--c++11/--c++14/--c++17

        5.2.4 如果还是不成功,可以找fuyouming@gersing.cn帮助

 

6. 调整链接命令 - 1

6.1 简单验证代码正确性后,可以开始尝试构建环境

6.2 如果编译环境有链接错误,工具自动弹出如下界面

        6.2.1 Linker Output Report

                6.2.1.1 包含了真正的需要解决的链接错误

        6.2.2 Unstubbed Entities Report

                6.2.2.1 记录了工具没法自动插桩函数的一些原因

                6.2.2.2 在解决Linker Output Report中的错误时,提供参考信息

7. 调整链接命令 - 2

7.1 根据Linker Output Report中的错误调整链接命令或者项目配置

        7.1.1 Linker command是链接命令,一般不需要和实际链接命令一致,只需要添加一些关键选项,例如-cpu等

        7.1.2 Linker options用于添加链接第三方库的命令,例如-lpthread

        7.1.3 如果链接错误是undefined reference to xxx, 先判断xxx是变量还是函数

                7.1.3.1 如果是变量,可以在unit appendix user code中手动添加变量的声明或者定义

                7.1.3.2 如果是函数,可以在unit appendix user code中手动添加函数的声明或者在第六步+Stub中手动添加函数名

        7.1.4 如果链接错误是关于数据溢出,需寻求support帮助

四、制作自定义模板

1. 获取新的编译模板

1.1 在验证实际项目成功后,可以将配置过程中修改的内容添加到默认的配置文件(.CFG)中,制作新的模板配置文件

1.2 获取实际项目下的配置文件(CCAST.CFG)

2. 添加搜索路径

2.1 如果不希望在模板中添加搜索路径信息,那么CCAST.CFG文件就可以作为新的模板配置文件

        2.1.1 建议重命名成一个特殊名字

2.2 如果希望在模板中添加搜索路径,需要进入CCAST.CFG 同目录下的那个子目录,找到VCASTDIAG.REP文件。 将该文件中最后记录搜索路径的那些信息拷贝到CFG文件中,然后将关键字ENVIRO.SEARCH_LIST 替换为 TESTABLE_SOURCE_DIR

3. 调整链接命令 - 2

3.1 根据Linker Output Report中的错误调整链接命令或者项目配置

        3.1.1 Linker command是链接命令,一般不需要和实际链接命令一致,只需要添加一些关键选项,例如-cpu等

        3.1.2 Linker command是链接命令,一般不需要和实际链接命令一致,只需要添加一些关键选项,例如-cpu等

        3.1.3 如果链接错误是undefined reference to xxx, 先判断xxx是变量还是函数

                3.1.3.1 如果是变量,可以在unit appendix user code中手动添加变量的声明或者定义

                3.1.3.2 如果是函数,可以在unit appendix user code中手动添加函数的声明或者在第六步+Stub中手动添加函数名

        3.1.4 如果链接错误是关于数据溢出,需寻求support帮助

五、获取编译命令 – 脚本编译

1. vcshell 获取实际项目的编译信息

1.1 vcshell可以获取实际项目的编译信息

        1.1.1 在用vcshell 前需要在同一终端里先设置这两个环境变量

                1.1.1.1 set VECTORCAST_DIR

                1.1.1.2 set VECTOR_LICENSE_FILE

1.2 以bat脚本编译项目举例,其命令为%VECTORCAST_DIR/vcshell --vcbg build.bat XXX

        1.2.1 Buidl.bat XXX 可以替换为项目实际的编译命令(XXX为bat的参数)

        1.2.2 项目的编译信息会记录在当前目录下的vcshell.db文件中

1.3 如果预先不知道具体的编译器名字和编译输出文件的名字,可以统一将vcshell.db内的所有信息都dump成文本格式, 再逐一进行分析

        1.3.1 %VECTORCAST_DIR/vcdb dumpcommands > dump.txt

        1.3.2 编译命令和链接命令样式参考后两页的图片

2. vcshell 获取实际编译命令(Compile Command)

2.1 获取编译器名字

        2.1.1 %VECTORCAST_DIR/vcdb dumpverbs

2.2 获取编译文件名字

        2.2.1 %VECTORCAST_DIR/vcdb --abspath --cmd-verb=XXX getfiles

                2.2.1.1 XXX为通过dumpverbs得到的编译器名字,例如xxx-gcc

2.3 获取具体文件的编译信息

        2.3.1 %VECTORCAST_DIR/vcdb --abspath --cmd-verb=XXX --file=XXX/XXX.c getcommand

                2.3.1.1 XXX.c为上一步得到的文件名

3. vcshell 获取实际链接命令(Link Command)

3.1 获取项目编译的链接信息

        3.1.1 %VECTORCAST_DIR/vcdb --abspath --cmd-verb=XXX --app=XXX getlinkcmd

                3.1.1.1 --app=XXX中的XXX为项目编译出来的可执行文件名称

                3.1.1.2 --cmd-verb=XXX中的XXX为项目的链接命令执行器,一般和编译命令的执行器一样

                3.1.1.3 链接命令中一般会包含很多-L和-l信息

六、获取编译命令 – 界面编译

1. IAR IDE

1.1 在build project的输出界面,右键选择All就能显示出详细的编译和链接信息

2. S32 Design Studio IDE

2.1 如果在build project的输出界面查看不到具体的编译和链接信息, 可以通过以下方法获得

2.2 Project->Properties->C/C++ Build->Settings->xxx Compiler->All options

2.3 Project->Properties->C/C++ Build->Settings->xxx Linker->All options

2.4 如果编译命令隐藏在参数文件(*.args)中,需要找到对应的args文件,查看里面的具体信息

3. Keil IDE

3.1 选择Project->Options Target

        3.1.1 编译命令在C/C++->Compiler control string

        3.1.2 链接命令在Linker->Link control string

4. CCS IDE

4.1 如果在build project的输出界面查看不到具体的编译和链接信息, 可以通过以下方法获得

4.2 Project->Properties->Build->xxx Compiler->Summary of flags set

4.3 Project->Properties->Build->xxx Linker->Summary of flags set

 5. Tasking IDE

5.1 如果在build project的输出界面查看不到具体的编译和链接信息, 可以通过以下方法获得

5.2 Project->Properties->C/C++ Build->Settings->xxx Compiler->All options

5.3 Project->Properties->C/C++ Build->Settings->xxx Linker->All options

6. Hightec IDE

6.1 如果在build project的输出界面查看不到具体的编译和链接信息, 可以通过以下方法获得

6.2 Project->Properties->C/C++ Build->Settings->xxx Compiler->All options

6.3 Project->Properties->C/C++ Build->Settings->xxx Linker->All options

7. GHS IDE - 1

7.1 如果在build project的输出界面查看不到具体的编译和链接信息, 可以通过以下方法获得

        7.1.1 右键项目,选择Advanced Build

8. GHS IDE - 2

8.1 如下左图勾选,然后点击Build

8.2 如下图,获取编译命令和链接命令

9. Visual Studio IDE

9.1 如果在build project的输出界面查看不到具体的编译和链接信息, 可以通过以下方法获得

9.2 Project->Properties->C/C++->Command Line->All options

9.3 Project->Properties->Linker->Command Line->All options

  • 29
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

弈星Gersing

你的鼓舞是我最大的动力,谢谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值