当前位置: 首页 > news >正文

Lauterbach使用指南之RunTime功能

Lauterbach使用指南之RunTime功能

前言

首先,请问大家几个小小问题,你清楚:

  • Lauterbach这个工具是干什么用的吗?
  • 在软件运行过程中如何测量两个运行point之间的runtime时间呢?
  • Lauterbach的RunTime功能具体应当如何来操作获取我们想要的结果;

今天,我们来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:

在这里插入图片描述


正文

Lauterbach工具基本介绍

Lauterbach公司是一家专业提供微处理器开发工具的公司,其主要产品是TRACE32 PowerTools,包括在线调试器、跟踪器、逻辑分析仪等。Lauterbach公司成立于1979年,总部位于德国霍夫,是全球最大的私营嵌入式系统调试工具供应商

Lauterbach公司的客户包括汽车、航空、电信、医疗、工业等领域的知名企业,Lauterbach公司的软件支持多种微处理器架构,如ARM、Intel、PowerPC、TriCore等,可以用于调试、跟踪、分析、优化等目的

Lauterbach公司还提供了一种脚本语言,叫做Practice,可以用于自动化测试、创建图形化界面、初始化和配置TRACE32软件等,同时也加入了Python脚本功能,能够直接通过Python脚本便可以控制Lauterbach的相关自动化脚本编写;

Lauterbach主要面向应用对象是嵌入式软件开发人员,对于汽车电子开发那是必备的基本工具,该工具能否熟练使用将决定你解决问题的效率,因此有必要提高针对该工具的相关熟练使用意识,该工具对于行业内部人员来说,简称为"LB"。

后续小T也会针对Lauterbach其他功能做进一步的介绍,欢迎大家多多关注。

RunTime功能应用场景

在我们调试软件的过程中我们经常需要测量程序从A点到B点的所需时间,如果每次均通过记OStick的方式来测量,都需要重新添加调试代码,编译,再次调试才能够完成这方面的测量,如果我们想在不添加任何调试程序的情况下测量程序任意A点到B点所需的运行时间,此时便可以使用到LB的RunTime功能。

LB通过RunTime功能便可以实现程序从任意A点到B点的运行时间,让我们能够快速完成程序任意执行runtime时间的测量。

RunTime功能使用说明

接下来,我们来了解下LB的RunTime功能的具体使用,以下小T将从如下四个方面进行展开讲解:

  • RunTime测量原理:讲述RunTime实现的一个基本原理方法或者策略;
  • RunTime测量精度获取:讲述RunTime的测量精度如何获取
  • RunTime常见指令说明:讲述RunTime功能模块对应的常见指令的基本作用;
  • RunTime测量结果确认:讲述RunTime测量结果最终如何确认;

如下图为RunTime的功能界面可通过如下的方式可以调出:
在这里插入图片描述
在这里插入图片描述

图1 LB的RunTime功能界面

RunTime测量原理

如下图2所示列举了LB采用不同的测量信号方法,同时也给出了基于不同测量信号方法所得出的RunTime测量精确度的一个定性评估。
在这里插入图片描述

图2 LB的RunTime测量原理

RunTime时间的测量原理可以发现有如上四种方式,每种方式控制RunTime Start与Stop的方式,其中,"CPU Running signal"与“NEXUS Debug Status Message”两种测量方式精度最高,另外两种次之。

对于绝大多数芯片架构而言,一般基本上采用的是“Polling the PC”的方式来进行测量,最小的Polling时间为1ms,对于ARM7或者ARM9芯片架构,一般采用的"CPU running signal"测量方法,一般测量精度较高。

RunTime测量精度获取

如果需要获取当前RunTime的测量精度,LB也提供了如下一条非常简洁的指令来获取当前RunTime功能的测量精度:

RunTime.ACCURACY()

RunTime常见指令说明

为了便于大家及时查阅相关指令,小T将LB的RunTime功能常见的指令及其功能说明整理如下表:
在这里插入图片描述

图3 LB的RunTime常见指令说明

注意:上述绝对时间的得出,参考时间原点均为调用指令System.up或者RunTime.Init开始记时。

RunTime测量结果确认

如下图为执行RunTime.State指令或者上图1中通过菜单栏调出的最终结果,我们需要能够看懂各时间参数含义:

image-20231022215003308

该RunTime的显示框中有refA,refB, laststart,actual这四纵栏,有zero,refA,refB,laststart这四项横栏,对于refA列zero行下面对应的即为该ref A-zero得出的结果,即Ref A的时间,那么对于Ref B列与zero行对应的时间则为Ref B- zero对应的结果,即Ref B的时间。

同理如果想知道最近一次执行Go到Break两者之间的时间,则只需要看actual列与laststart行对应的时间即可,如上图为30.100us,即如果我们想知道程序运行A点至B点的所需时间,可以提前在程序A点与B点分别打上断点,待程序运行至A点后,再点击“Go”指令运行至B点时就会停下,此时查看actual列与laststart行对应的时间就为程序A点至B点的运行时间,即每次只需要看最右下角的时间即可。

好了,以上就是本次LB的RunTime功能的精华内容总结,希望能够大家带来帮助,也希望大家能够多多转发分享!

更多精彩内容,欢迎大家多多关注公号“ADAS与ECU之吾见”!!!

相关文章:

Lauterbach使用指南之RunTime功能

Lauterbach使用指南之RunTime功能 前言 首先,请问大家几个小小问题,你清楚: Lauterbach这个工具是干什么用的吗?在软件运行过程中如何测量两个运行point之间的runtime时间呢?Lauterbach的RunTime功能具体应当如何来操…...

GaussDB数据库管理系统介绍

1.GaussDB的发展 2.GaussDB的生态 内部: 云化自动化方案。通过数据库运行基础设施的云化将DBA(数据库管理员)和运维人员的日常工作 自动化。外部: 采用与数据库周边生态伙伴对接与认证的生态连接融合方案,解决开发者/DBA难获取、应用难对接等…...

使用docker部署lnmp多站点

1. 创建一个 Docker 网络 以便容器可以在同一网络上进行通信 docker network create lnmpnetwork2. 运行 MySQL 容器: 运行 MySQL 容器并将其连接到创建的网络。确保将 MySQL 的端口映射到宿主机上,以便您可以从宿主机访问数据库。 将mysql的配置和数…...

实例详解:Java使用JWT和Redis实现高效单点登录(SSO)

前言 单点登录(Single Sign-On,简称SSO)是一种身份验证和访问控制机制,允许用户使用一组凭证(如登录名和密码)登录到多个应用程序中,而无需为每个应用程序单独进行身份验证。用户只需要登录一次…...

SQL中使用ROLLUP和CUBE函数轻松生成汇总行

在数据分析和报表制作中,通常需要对数据进行汇总和分组,我们常用的就是GROUP BY汇总数据,当我们想按照不同维度汇总时,往往需要编写多个GROUP BY预计,而借助ROLLUP 和 CUBE 函数可以一次性生成子总计和总计行&#xff…...

CentOS 7 安装和配置java环境

1 安装包准备 安装包可以通过下面地址进行版本选择安装: https://www.oracle.com/java/technologies/downloads/#java8 2 正式开始安装 本次分享的安装方法直接通过编辑/etc/profile文件实现java的安装 2.1 新建安装包存放目录 mkdir /java cd /java/ 2.2 解压安…...

「实验记录」CS144 Lab0 networking warmup

文章目录 一、Motivation二、SolutionsS1 - Writing webgetS2 - An in-memory reliable byte stream 三、Results四、Source 一、Motivation 第一个小测试 webget 是想让我们体验并模拟一下在浏览器中键入 URL 后获得远程服务器传来的内容,这并没有太大的难度&…...

html5怎么实现语音搜索

html5怎么实现语音搜索 谷歌的网站在他们首页发现了HTML5的新玩法——语音搜索。 注意&#xff1a; 只有webkit核心的浏览器才能使用 用法很简单 只需要在input添加属性x-webkit-speech即可&#xff0c;例子如下&#xff1a; 代码如下: <input type"text" x-…...

吴恩达《机器学习》1-2:什么是机器学习?

一、什么是机器学习&#xff1f; Arthur Samuel&#xff08;1959&#xff09;&#xff1a; 他定义机器学习为&#xff0c;在进行特定编程的情况下&#xff0c;给予计算机学习能力的领域。 Tom Mitchell&#xff08;1998&#xff09;&#xff1a; 他定义的机器学习是&#xff0c…...

基于STC系列单片机实现定时器扫描数码管显示定时器/计数器产生频率的功能

#define uchar unsigned char//自定义无符号字符型为uchar #define uint unsigned int//自定义无符号整数型为uint #define NixieTubeSegmentCode P0//自定义数码管段码为单片机P0组引脚 #define NixieTubeBitCode P2//自定义数码管位码为单片机P2组引脚 sbit LED P1^0;//位定义…...

Linux环境开发工具yum、makefile的使用 【Linux】

文章目录 Linux软件包管理器 - yumLinux下安装软件的方式yum查找软件包如何实现本地机器和云服务器之间的文件互传卸载软件Linux编译器 - gcc/g 程序的翻译过程1.预编译&#xff08;预处理&#xff09;2.编译&#xff08;生成汇编&#xff09;3.汇编&#xff08;生成机器可识别…...

第六章(6):Python中的函数—闭包和装饰器

1.闭包 在Python中,闭包是指函数与其相关的自由变量的一个整体。当一个函数返回了一个内部函数时,这个内部函数可以访问其定义所在的外部函数中的变量,即使这个外部函数已经返回了。这种特性就叫做闭包。 代码示意: def funca():x = 250def funcb():print(我仍然可以访问…...

Linux--安装与配置虚拟机及虚拟机服务器坏境配置与连接---超详细教学

一&#xff0c;操作系统介绍 1.1.什么是操作系统 操作系统&#xff08;Operating System&#xff0c;简称OS&#xff09;是一种系统软件&#xff0c;它是计算机硬件和应用软件之间的桥梁。它管理计算机的硬件和软件资源&#xff0c;为应用程序提供接口和服务&#xff0c;并协调…...

基于SSM的个性化美食推荐系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

Django 全局配置 settings 详解

文章目录 1 概述1.1 Django 目录结构 2 常用配置&#xff1a;settings.py2.1 注册 APP&#xff1a;INSTALLED_APPS2.2 模板路径&#xff1a;TEMPLATES2.3 静态文件&#xff1a;STATICFILES_DIRS2.4 数据库&#xff1a;DATABASES2.5 允许访问的主机&#xff1a;ALLOWED_HOSTS 1 …...

uniapp接口请求api封装,规范化调用

封装规范和vue中的差不多&#xff0c;都是统一封装成一个request对象&#xff0c;然后在api.js里面调用。 先创建一个utils文件夹&#xff0c;然后里面创建一个request.js&#xff0c;代码如下&#xff1a; export const baseURL 基础url地址const request (options) > …...

色彩校正及OpenCV mcc模块介绍

一、术语 1.光&#xff1a;是电磁波&#xff0c;可见光是可被人眼感知的电磁波。可见光大约在400-700nm波段。光子携带的能量与波长成反比&#xff0c;400nm--700nm之间的单色光的颜色从紫色渐变成红色。 2.光谱&#xff1a;除了太阳光源外&#xff0c;LED灯、白炽灯等各种照明…...

2023mathorcup大数据数学建模竞赛A题坑洼道路识别67页完整高质量原创论文

大家好&#xff0c;从昨天肝到现在&#xff0c;终于完成了本次mathorcup大数据数学建模竞赛A题基于计算机视觉的坑洼道路检测和识别的完整论文了。 给大家看一下目录吧&#xff1a; 摘 要&#xff1a; 10 一、问题重述 12 二&#xff0e;问题分析 13 2.1问题一 13 2.2问题…...

【k8s】5、资源管理命令-声明式

目录 一、 yaml和json介绍 1、yuml语言介绍 2、k8s支持的文件格式 3、yaml和json的主要区别 二、声明式对象管理 1、命令式对象配置 2、声明式对象配置 3、声明式对象管理命令介绍 三、编写资源配置清单 1、 编写yaml文件 2、 启动并查看资源 3、创建service服务对外…...

信息系统项目管理师教程 第四版【第6章-项目管理概论-思维导图】

信息系统项目管理师教程 第四版【第6章-项目管理概论-思维导图】 课本里章节里所有蓝色字体的思维导图...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机&#xff08;Finite Automaton, FA&#xff09;到正规文法&#xff08;Regular Grammar&#xff09;转换器&#xff0c;它配备了一个直观且完整的图形用户界面&#xff0c;使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...