TestRealTime:如何使用 Rational Test Real Time 测试实时操作系统

TestRealTime: How to test a realtime Operating System with Rational Test Real Time

在 AUTOSAR 实时操作系统 (OS) 上,软件架构是单独分层的(用户 space、系统调用接口、内核 space)。此外,用户上下文和内核上下文之间的切换由特定于硬件的基础结构处理,并且通常上下文切换处理程序是用汇编代码编写的。

IBM® Rational® Test RealTime v8.0.1 (RTRT) 当前按照以下问答中所述处理嵌入式汇编代码。

https://www.ibm.com/support/pages/how-treat-embedded-assembly-code ( ** )

RTRT 工具使用代码插入技术(技术上称为 instrumentation 过程)插入自己的代码以测量被测系统的代码覆盖率。

在我的例子中,OS 具有完全先发制人的设计没有终止点。结果,除非断电,否则 OS 总是 运行s。如果没有工作,OS 应该处于睡眠状态(通常是 空闲状态 并且什么都不做)。如果发生任何意外错误或异常,OS 将被关闭并且 运行 进入 无限循环 。这些表明 OS 总是 运行ning.

我向 ( ** ) 学习并确保上下文切换正常工作。 但我不知道如何教 RTRT 以正确的方式完成其后处理(由 attolcovattolpostpro 组成)。请注意,OS 已经在我的所有任务中正常工作,并且已被调试器确认。 SHUTDOWN OS 程序已正确执行并且 OS 已处于无限循环中(例如 while(1){};

RTRT结束所有进程后,OS模块的覆盖率报告还是空的

基于 IBM RTRT 指南 https://www.ibm.com/developerworks/community/forums/atom/download/attachment_14076432_RTRT_User_Guide.pdf?nodeId=de3b0048-968c-4111-897e-b73654af32af

RTRT提供了两个断点来标记记录点(priv_writeln)和终止点(priv_close ) 的过程。

我已经尝试从INFINITE(我的OS)开车到priv_close(RTRT)使用 Lauterbach 调试器交互 PC 寄存器和所有上下文切换寄存器,但 RTRT 覆盖报告是空的,即使发生 none 错误。没有错误意味着从内核 space 到用户 space 的上下文切换能够正常工作并且 main() 函数正确返回。

问题解决了。

肯定来自操作系统的上下文切换进程。

就我而言,我进行了 RAM 转储以查看用户上下文内存(在启动 OS 之前)的样子。

之后,我将备份所有上下文区域,并按照确切的顺序从 SleepInfiniteloop 恢复它们。

据此,RTRT可以知道return点,到达自己的main()函数的 _exit 完成报告生成进度。

代码覆盖率报告终于生成了。