DT10功能介绍--DT10多波示波器
功能介绍
有些嵌入式软件方面的问题,利用传统的调试器可能无法解决,而通过逻辑分析器则能有效地解决。请仔细阅读本文, 看我们如何一步一步地讲解在这种情况下所需的配置。
但是,从传统意义上讲,逻辑分析器是硬件工程师用来调试数字电路的。从上面的参考文件中可以清楚地了解到,嵌入式软件工程师在使用分析器之前,要做很多准备工作,因为该工具不是一个专门用来解决问题的软件。
DT10的多波示波器+模拟盒是专门为解决嵌入式软件的问题而研发的,它的功能与逻辑分析器或示波器的功能很相似。它可以捕获并显示运行时软件的特征,并在示波器上实时显示不断更新的精确时间图表。

DT10 的一些功能能够帮助嵌入式工程师自动完成很多工作,包括:
√ 可以在源代码中自动插入测试点(不需要复杂的代码或脚本)
√ 能够与用户现有的主机通信机制(GPIO, UART, Ethernet 等)进行无缝结合
√ 可获取并显示内核事件的踪迹(如:任务调度器、中断程序,等)
√ 最多可同时获取并实时显示 20 个局部或全局变量
√ 最长可进行长达 30 天的持续执行追踪(针对难以重现的问题)
√ 有离线回溯调试的功能,可回顾实际执行中出现的变量转换情况
√ 示波器数据点和代码的实时执行路径踪迹之间,可通过鼠标单击进行双向定位
√ 可自动生成一系列分析报告,帮助发现并解决运行时出现的问题
DT10 信号模拟盒
除了获取实时的源代码特征之外,DT10 模拟盒组件还能够从目标设备上获取逻辑和模拟信号。动态追踪器会同时同步硬件和软件的数据,并将这些数据通过同一个时间图表实时显示在多波示波器上。

这个工具在排除嵌入式软件故障方面的功能的确非常强大!
将 DT10 的动态追踪器和模拟盒结合起来,能非常有效地帮助嵌入式工程师来定位引发难以重现的软件问题的根源。
功能显示
近程检测器设备使用传感器来计算正在靠近的目标的距离。在该设备上运行的软件是用来计算距离的,然后再利用所得到的结果,根据目标距离的远近来启动1个,2个,或3个LED信号。
在这个例子中,我们利用
DT10 来监控嵌入式软件在运行时的特征,并将其与 LED
在这期间的行为关联起来,因而在任何情况下,我们都可以准确知道该软件在硬件上执行某个指定事件时所处的状态。同样地,我们还可以利用 DT10
监控正在执行的软件的特征,并确定此时硬件上的逻辑或模拟信号的状态。

使用 DT10 动态追踪器
1. 插入测试点
通过使用 DT10,可以将测试点自动插入源代码,以获取并输出软件在目标硬件设备上运行时的特征。这些特征包括:精确的时间信息、覆盖率信息、事件、变量监控数据,等等。
2. 配置测试点输出
在这个例子中,我们通过配置测试点,将执行软件的追踪数据通过 GPIO 口发送到动态追踪器装置上。目标设备上的 GPIO 针孔与 DT10 动态追踪器的 GPIO 口相连接。
3. 捕获 LED 数字信号
DT10
模拟盒也与目标设备相连接,通过设备上的3个LED来获取逻辑信号。为了响应附近的某个目标,设备上的 LED 会自动打开或关闭,这样 DT10
就可以准确追踪并监控信号高低转变的情况了。通过使用一个单独的时钟脉冲源,动态追踪器就能够自动同步 LED 在打开和关闭状态下所获取的数据。
这样配置工作就完成了。
如果有需要的话,可以让目标设备运行尽可能长的时间,以重现有问题的行为。通过 DT10 动态追踪器所获取的所有数据都会被同步并发送到安装在所连接的主机上的 DT10 软件中。多波示波器可以对这些数据进行实时监控,而且以后还可以回放。
测试一旦完成,DT10 分析引擎就会对所获得的数据进行扫描,并自动生成一系列分析报告,以帮助解决嵌入式软件中的问题。

DT10 生成报告这一步,有效地为工程师减少了很多负担!
分析
第一部分: 根据 LED 逻辑信号特征,确定软件的执行状态
可以用多波示波器来检测逻辑或模拟信号的踪迹,并通过运行传感器 LED 找出可能存在问题的阵列,然后确定嵌入式软件执行过程中出现该阵列的具体时间。一旦发现了出现问题的具体位置,DT10就会同步生成分析报告,该报告有助于从不同视角检测软件在运行时的特征。
为了识别 LED 逻辑信号中可能存在问题的阵列,用户可以在示波器中将其缩小,并通过手动滚动来查看执行的踪迹;然后再放大,来对自己认为可能有问题的地方进行仔细检查。
或者,用户可以利用 DT10 的回放功能和自动停止条件在示波器中有效地回放执行情况,而且在符合自动停止条件的情况下(如:LED1 继续,LED2 继续,LED3 断开),DT10会自动停止回放。

既然我们已确定了可能存在的地方,我们就可以在示波器上对其进行放大。在示波器上随便点击一下,DT10 就可以根据由其生成的一系列软件分析报告,来同步那个时间点的执行情况,包括软件当时所处的状态。
下面的截图显示了由 DT10 生成了几个视图,这些视图能够帮助发现并解决问题:

这样工程师就能够,比如,在某个信号状态出现之前、之时、之后检测代码变量的转变情况,或者能够逐步跟踪执行路径,并在硬件出现某些特殊行为之前,发现是在执行了哪一行代码,哪个分支时出现该问题的。
还有很多其它非常有用的、深入的报告,能够帮助工程师分析运行时引发软件问题的根源。
第二部分:根据软件执行时的特征,确定 LED 的状态
在前面的例子中,我们先使用多波示波器来确定 LED 逻辑信号踪迹所形成的阵列,再用 DT10 将其与软件当时的运行特征联系起来。
相反地,DT10 也能够很有效地查出软件在运行时的具体特征(如:变量的状态、出现的某个软件事件、执行代码的第几行)并将其与当时的 LED 信号状态联系起来。所以,我们也能够看到软件在特定的状态下,LED 逻辑信号的情况。
这个例子中,软件中的变量“g”存储的是传感器与接近目标之间的计算距离。软件会根据这个变量值将设备 LED1,2,3 设置为启动状态。

我们还能够搜索 DT10 测试报告,找出变量呈现异常值的情况。
然后在测试报告中点击有问题的那一步,DT10 就会更新其它活动窗口,让所有窗口都显示该运行时的情况。然后我们就可以通过多波示波器放大来查看逻辑和模拟信号的状态,以了解当时的 LED 状态。

总结
DT10 多波示波器和模拟盒在发现并解决嵌入式软件的问题方面有非常独特的能力。它的功能类似于逻辑分析器和示波器,可以让软件工程师看到代码的执行情况。但是 DT10 多波示波器是专门为嵌入式软件设计的,所以它的安装和配置更为简便。
嵌入式开发项目过程中经常会遇到一些非常难以重现的问题,DT10 的解决方案可以对这些问题进行追踪,帮助解决该问题。
“原创内容,转载请标明出处”
DT10功能介绍--DT10多波示波器的更多相关文章
- .NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍
Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器 ...
- Python中生成器和迭代器的功能介绍
生成器和迭代器的功能介绍 1. 生成器(generator) 1. 赋值生成器 1. 创建 方法:x = (variable for variable in iterable) 例如:x = (i f ...
- 微信小程序产品定位及功能介绍
产品定位及功能介绍 微信小程序是一种全新的连接用户与服务的方式,它可以在微信内被便捷地获取和传播,同时具有出色的使用体验. 小程序注册 注册小程序帐号 在微信公众平台官网首页(mp.weixin.qq ...
- 带你走近AngularJS - 基本功能介绍
带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...
- MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览
之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...
- Joomla软件功能介绍与开源程序大比拼Joomla,wordpress,Drupal哪个好?
Joomla 软件功能介绍: Joomla!是一套在国外相当知名的内容管理系统 (Content Management System, CMS),它属于Portal(企业入口网站)类型,顾名思义 ...
- CentOS以及Oracle数据库发展历史及各版本新功能介绍, 便于构造环境时有个对应关系
CentOS版本历史 版本 CentOS版本号有两个部分,一个主要版本和一个次要版本,主要和次要版本号分别对应于RHEL的主要版本与更新包,CentOS采取从RHEL的源代码包来构建.例如CentOS ...
- python中列表、元组、字典内部功能介绍
一.列表(list) 常用功能的介绍:
- 网页引导:jQuery插件实现的页面功能介绍引导页效果
现在很多网站不仅是介绍,更多的是有一些功能,怎么样让客户快速的知道网站有哪些功能呢?这里pagewalkthrough.js插件能帮我们实现,它是一个轻量级的jQuery插件,它可以帮助我们创建一个遮 ...
随机推荐
- mybatis bind 标签
bind 标签可以使用 OGNL 表达式创建一个变量井将其绑定到上下文中.在前面的例子中, UserMapper.xml 有一个 selectByUser 方法,这个方法用到了 like 查询条件,部 ...
- 『与善仁』Appium基础 — 9、补充:C/S架构和B/S架构说明
目录 1.C/S架构和B/S架构概念 2.C/S结构与B/S架构的区别 3.C/S架构和B/S架构优点和缺点 (1)B/S模式的优点和缺点: (2)C/S模式的优点和缺点: 1.C/S架构和B/S架构 ...
- SeleniumLibrary 主要关键字 基于python3
关键字的解释 https://blog.csdn.net/ak739105231/article/details/88926995 click element 都是元素点击事件:不赘述 click l ...
- ICCV2021 | SOTR:使用transformer分割物体
前言 本文介绍了现有实例分割方法的一些缺陷,以及transformer用于实例分割的困难,提出了一个基于transformer的高质量实例分割模型SOTR. 经实验表明,SOTR不仅为实例分割提供了 ...
- vue属性绑定不能用双括号表达式
- Maven的pom.xml的格式与约束
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 在spring启动后执行代码
如果spring的项目直接监听tomcat启动对于 操作来说有很大难度,bean没有初始化,接口不能直接调用等等,所以我们代码执行要在spring启动之后执行项目 package com.java71 ...
- while,do...while及for三种循环结构
循环结构 while循环 while (布尔表达式) { //循环内容 } 只要布尔表达式为true循环就会一直执行 我们大多数情况会让循环停止下来,需要一个让表达式失效的方式来停止循环 while循 ...
- 洛谷 P4062 - [Code+#1]Yazid 的新生舞会(权值线段树)
题面传送门 题意: 给出一个序列 \(a\),求 \(a\) 有多少个子区间 \([l,r]\),满足这个区间中出现次数最多的数出现次数 \(>\dfrac{r-l+1}{2}\) \(1 \l ...
- CF Edu Round 71
CF Edu Round 71 A There Are Two Types Of Burgers 贪心随便模拟一下 #include<iostream> #include<algor ...