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插件,它可以帮助我们创建一个遮 ...
随机推荐
- Go语言核心36讲(Go语言实战与应用四)--学习笔记
26 | sync.Mutex与sync.RWMutex 从本篇文章开始,我们将一起探讨 Go 语言自带标准库中一些比较核心的代码包.这会涉及这些代码包的标准用法.使用禁忌.背后原理以及周边的知识. ...
- Effective C++ 总结笔记(二)
二.构造/析构/赋值运算 05.了解C++默默编写并调用那些函数 如果自己不声明, 编译器就会暗自为class创建一个default构造函数.一个copy构造函数.一个copy assignment操 ...
- 网页视频不能自动播放?HTML5 video报错Uncaught (in promise) DOMException解决方法
话说发哥四年前写了一个网页,如上图效果,实际网址http://pano.z01.com ,话说做好时是正常的,突然某一天,客户说你这个网站动画不见了,这是什么原因? 结果检查脚本一切正常. 其实也不是 ...
- 大爽Python入门教程 3-5 习题
大爽Python入门公开课教案 点击查看教程总目录 1 求平方和 使用循环,计算列表所有项的平方和,并输出这个和. 列表示例 lst = [8, 5, 7, 12, 19, 21, 10, 3, 2, ...
- [noi1755]Trie
定义S对应的数组为$a_{i}=\min_{0\le j<i,S_{j}=S_{i}}i-j$,特别的,若不存在j,令$a_{i}=i$,那么容易发现存在双射关系就意味这两者对应的数组相同 因此 ...
- nginx反向代理出错:proxy_pass
问题描述: 一台服务器代理访问另一台服务器,代码如下图所示: 重新加载nginx后不会跳到该域名,而是出现error的页面. 查看error.log日志为以下报错: 2021/03/09 23:07: ...
- WinRAR下载
https://www.win-rar.com 垃圾7Z有的解压不了.
- HTML四种定位-固定定位
固定定位 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset=&q ...
- 洛谷 P4516 [JSOI2018]潜入行动
题面传送门 一眼树形 \(dp\) 本题有 \(2\) 大难点. 难点之一是状态的设计,这里需要四维状态,\(dp[i][j][0/1][0/1]\) 表示在以 \(i\) 为根的子树内放了 \(j\ ...
- STM32驱动直流电机的程序与电路设计(IR2110S自举电路+H桥+高级定时器和死区PWM)
https://blog.csdn.net/geek_monkey/article/details/82079435