[发明专利]一种VxWorks下代码运行时间的精确计算方法在审
申请号: | 202110687561.3 | 申请日: | 2021-06-21 |
公开(公告)号: | CN113778782A | 公开(公告)日: | 2021-12-10 |
发明(设计)人: | 赵昶宇;张华波 | 申请(专利权)人: | 天津津航计算技术研究所 |
主分类号: | G06F11/30 | 分类号: | G06F11/30 |
代理公司: | 中国航天科技专利中心 11009 | 代理人: | 程何 |
地址: | 300000 天津市*** | 国省代码: | 天津;12 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 vxworks 代码 运行 时间 精确 计算方法 | ||
本发明提出了一种VxWorks下精确计算代码运行时间的方法。该方法首先在程序初始化时,利用看门狗定时器产生一个1s的定时;在1s开始定时前和1s定时到后,分别记录当前CPU的机器周期;将两次得到的CPU的机器周期作差得到系统1s的机器周期数,将该数值作为计时因子;在运行被测试代码前和运行被测试代码后分别记录当前CPU的机器周期;将两次得到的CPU的机器周期之差根据上述得到的计时因子转换成实际的代码运行时间。本发明提出的方法计时误差小,精度高,最高精度可达纳秒级;无需得到硬件和内核库支持,仅需使用一条CPU指令,占用CPU资源极少;该方法无平台限制,和CPU主频有直接对应的速率关系,具有系统开销小、成本低的特点。
技术领域
本发明涉及一种VxWorks下代码运行时间的精确计算方法,属于计算机技术领域。
背景技术
VxWorks操作系统是一种应用于嵌入式系统中的具有较强实时性的操作系统,能够实现并满足系统资源和任务实时调度。通常我们会在一些对实时性要求较高的系统中计算某些代码的实际运行时间是否满足系统实时性要求。一般计算VxWorks操作系统下代码运行时间的方法,要么存在计算精度不够,或者需要得到硬件支持和内核库支持的情况,要么在提高定时精度后,导致系统时钟占用CPU资源过高,其他应用程序获得CPU资源较少。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供了一种VxWorks下代码运行时间的精确计算方法,精确获取VxWorks操作系统下代码的实际运行时间。
本发明的技术解决方案是:一种VxWorks下代码运行时间的精确计算方法,包括如下步骤:
S1,获取VxWorks操作系统下代码运行时间和处理器时间标签计数值的对应关系,并生成计时因子;
S2,计算被测试代码在VxWorks操作系统上的运行时间。
进一步地,所述S1具体包括如下步骤:
计算rdtsc指令的基准误差;
计算1s对应的处理器时间标签计数器值,并获取计时因子。
进一步地,所述计算rdtsc指令的基准误差包括如下步骤:
连续调用至少三次rdtsc指令,每次调用间隔5条机器指令;
再调用一次rdtsc指令,将最新获取的处理器时间标签计数器值与上一次调用rdtsc指令获取的处理器时间标签计数器值作差,得到差值base1;
再调用一次rdtsc指令,将最新获取的处理器时间标签计数器值与上一次调用rdtsc指令获取的处理器时间标签计数器值作差,得到差值base2;
将差值base1与差值base1的较小值作为rdtsc指令的基准误差base。
进一步地,所述计算1s对应的处理器时间标签计数器值包括如下步骤:
连续调用至少三次rdtsc指令,每次调用间隔5条机器指令,保存最后一次调用rdtsc指令获取的处理器时间标签计数器值,记为T1;
定时1s,1s定时到后,调用rdtsc指令获取当前的处理器时间标签计数器值,记为T2;
1s对应的处理器时间标签计数器值=T2-T1-基准误差。
进一步地,所述计时因子包括:毫秒级计时因子⊿t=(T2-T1-基准误差)/1000;微妙级计时因子⊿t=(T2-T1-基准误差)/1000000;纳秒级计时因子⊿t=(T2-T1-基准误差)/1000000000。
进一步地,所述S2包括如下步骤:
在运行被测试代码前,调用rdtsc指令获取当前的处理器时间标签计数器值为Count1;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于天津津航计算技术研究所,未经天津津航计算技术研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110687561.3/2.html,转载请声明来源钻瓜专利网。