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插件,它可以帮助我们创建一个遮 ...
随机推荐
- Sentry 官方 JavaScript SDK 简介与调试指南
系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Maps Sentry For ...
- ES6--ES12笔记整理(1)
一.let const 五个共同特点 不允许重复声明 块级作用域 不存在变量提升 不影响作用域链 暂时性死区---在代码块内,使用let/const命令声明变量之前,该变量都是不可用的.这在语法上,称 ...
- [hdu5629]Clarke and tree
首先由一个神奇的序列叫做Purfer序列,他可以表示一棵树,且每个节点出现此时为度数-1(因此总长为n-2). 然后dp,用f[i][j][k]表示用前i个点中的j个点构成了一个长度为k的Purfer ...
- [atARC109E]1D Reversi Builder
归纳每一次操作后必然是两个颜色相同的连续段(即ww...bb...或bb...ww...),对操作的位置分类讨论不难证明正确性 当$c_{1}=c_{n}$,由于端点颜色不会修改,再根据该结论,可以得 ...
- [loj3043]线段树
考虑把每一个区间单独统计,令$f[i]$表示第i个区间有标记的次数,$g[i]$表示第i个区间及其祖先中存在标记的次数,然后对于操作将所有区间分为5类(T为已执行操作个数): 1.被修改,那么$f[i ...
- [luogu5426]Balancing Inversions
由于交换是相邻交换,所以分为两类:1.左右区间内部交换,那么一定会让逆序对数量$\pm 1$,也就是说如果没有左右区间之间交换,那么答案就是$|ansL-ansR|$(ans表示逆序对数量)2.左右区 ...
- Spring MVC应用
Spring MVC简介 1.1 经典三层结构 在JavaEE开发中,几乎全部都是基于B/S架构的开发.那么在B/S架构中,系统标准的三层架构包括:表现层.业务层.持久层.三层架构在我们的实际开发中使 ...
- vue-通过name进行数据过滤
<template> <div> <h3>搜索列表</h3> <input type="text" placeholder=& ...
- java的String参数格式化
String类的format()方法用于创建格式化的字符串以及连接多个字符串对象.熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处.format()方法有两种重载形式. form ...
- C/C++ Qt TreeWidget 嵌套节点操作技巧
在上一篇博文<C/C++ Qt TreeWidget 单层树形组件应用>中给大家演示了如何使用TreeWidget组件创建单层树形结构,并给这个树形组件增加了右键菜单功能,接下来将继续延申 ...