SWD调试接口是ARM公司提出的一种调试接口,相对于传统的JTAG接口,使用更少的信号引脚。SWD调试接口信号定义如下图红线所示:

图 1

一些Cortex- M3/M4/M7等架构的芯片支持SWO Trace功能,其内置了DWT,ITM((Instrument Trace Macrocell)等单元。ITM的一个主要的用途,就是支持信息的输出。此外DWT还会跟踪中断的进入和退出,对PC计数器进行采样。

IAR支持SWO Trace调试这一强大的调试功能,利用SWD接口中的SWO串行线输出调试时产生的跟踪信息。使用SWO调试需要将调试器的SWO引脚连接到芯片的SWO。

本文将简单介绍几种SWO Trace调试的实用功能。

使用SWO Trace的硬件要求:

1.使用的仿真器支持SWD调试接口和SWO串行通信。

2.芯片支持SWD调试接口。M3/M4/M7等主流内核的芯片大多都支持,且芯片上SWO引脚应与硬件调试接口的SWO引脚连接。

使用SWO Trace的软件设置:

调试器配置中选择使用SWD接口连接。

图 2

SWO调试功能举例:

(1). 使用Terminal I/O打印调试信息

IAR提供的Terminal I/O功能可以将函数内printf语句输出的信息在Terminal I/O窗口中显示出来,printf信息的输出有两种方式,半主机模式和SWO模式.半主机模式时信息的输出速率较慢,当使用SWO模式进行信息输出时,速度很快,适用于有大量信息需要输出的时候。可以在General Options->Library Configuration选项中勾选使用SWO模式,Terminal I/O窗口在进入调试环境后从View菜单打开。

图 3

(2). 实时显示变量值的变化

借助SWO调试,可以实时监测全局变量的数值变化,并以图形化的方式进行显示。下图中的TestPoint为全局变量,在该变量处右键选择设置“Data Log”数据记录断点。

图 4

通过view->breakpoint选项打开breakpoint断点窗口,在断点处右键点击Edit选项进行编辑,选择当该变量被Write改写时触发数据记录断点。

图 5

图 6

从所使用的仿真器如I-jet调试菜单下打开Data Log和Timeline窗口,在窗口处右键选择“Enable”使能后,点击“Go”全速运行程序,在Data log窗口中将会实时显示全局变量TestPoint变量值的跟踪记录。显示的数据中包含时间戳、变量值和变量地址等信息。

图 7

在Timeline 窗口Data Log一栏再次右键选择“Enable”使能图形化显示,可获得如下TestPoint变量值的实时变化视图。

图 8

(3). 测量代码执行时间

因为Data Log窗口中显示的信息包含了变量值变化时的时间戳,这可用于测量函数的执行时间。如下图所示在排序函数 NumberSorting()执行前后添加了一个全局变量TimeStamp作为测量运行时间的监控变量。

图 9

图 10

NumberSorting这个函数执行前后修改了TimeStamp变量的值,根据Data Log窗口中TimeStamp值的变化时间可计算出函数的执行时间,TimeStamp 从 0x05 变化到 0x0A 所用的时间为:

t = 21576.23 - 20992.01 = 584.22us

由此可以知道排序函数 NumberSorting()执行所用的时间为 584.22us。

产品咨询:

北京:010-62975900

上海:021-62127690

深圳:0755-82977971

分享、在看与点赞,至少我要拥有一个吧

vs调试 右键 没有监视变量_IAR EWARM的SWO Trace调试功能相关推荐

  1. Delphi应用程序的调试(三)监视变量

    监视变量(Watching Variables) 当程序停在一个断点处时,用户做些什么呢?通常用户在断点处停下来是要检查变量的值,某个变量的值是否与预料的取值相同?或者某个变量取什么值(事先并不知道这 ...

  2. c语言程序跟踪调试,VC6断点调试之监视变量

    上两讲中,为大家介绍到了VC6编译器的断点调试技巧,教给大家如何设置\取消断点.单步和跟踪一个程序.让大家具备基本的调试一个程序的能力.今天我们将继续深入研究教大家如何更细致.深入的跟踪和分析一个C程 ...

  3. 探秘IntelliJ IDEA 13测试版新功能——调试器显示本地变量

    为什么80%的码农都做不了架构师?>>>    IntelliJ IDEA在业界被公认为最好的Java开发平台之一,JetBrains公司将在12月正式发布IntelliJ IDEA ...

  4. Visual Studio在Release模式下开启debug调试,编译器提示变量已被优化掉,因而不可用

    系列文章目录 文章目录 系列文章目录 前言 一.解决办法 1.修改工程属性 参考 前言 我们在编写代码的时候,如果用到别人的库,而别人只提供了release版本,所有我们也只能生成release版本的 ...

  5. C#自定义事件,监视变量变化

    首先监视定义类 class Event{public delegate void tempChange(object sender, EventArgs e);public event tempCha ...

  6. 关于DevC++如何调试的问题,还不会调试的同学看这里--->>>超级详细调试教程,手把手教你如何调试

    关于devc++调试问题,还不会调试的同学看这里!!!超级详细调试教程,手把手教你如何调试 DevC++该如何调试? 这篇是关于Devc该如何调试的. 刚接触c语言的同学可能还不会调试,所以我在这里就 ...

  7. mac android手机调试,mac os开发android应用通过usb真机调试

    当前开发用的ari,sublime + webstrom 开发node.js还比较流畅,还没有出现被堵被坑的局面. 尝试开发android应用时,各种坑,其中一个比较深的坑就是今天要和大家分享的. m ...

  8. 每天写代码每天调试的他坚持了二十年,出版了软件调试大全

    软件是信息时代的主角,它已经对人类社会产生了巨大的影响,而且正在产生更大的 影响.如果你在做软件方面的工作,那么你应该感觉很幸运:如果你在学习软件,那么你选择了前景无限广阔的方向,一定要坚持. 回顾作 ...

  9. 试图运行项目时出错,无法启动调试。没有正确安装调试器,请运行安装程序安装或恢复调试器。...

            用Visual Studio.net 2003调试项目时,出现错误对话框,显示如下:         试图运行项目时出错,无法启动调试.没有正确安装调试器,请运行安装程序安装或恢复调试 ...

最新文章

  1. Spring Boot 为什么这么火?
  2. 角点检测——发现图像的特征
  3. 【练习】翻转句子中单词的顺序
  4. mysql 查询正在执行的事务以及锁 常用的sql语句
  5. R语言与数据的概括性度量
  6. 视觉SLAM十四讲(3):三维空间刚体运动
  7. 白话解说:阻塞和非阻塞,同步和异步
  8. Git工作笔记003---Git常用命令总结
  9. 2020年python工资一般多少-武汉Python薪资一般是多少?真实数据告诉你
  10. AP计算机科学内容HTML,3分钟读懂AP计算机科学原理和计算机科学A的区别!
  11. list add java_list.add()和list.addAll()的区别
  12. 灰色系统理论及其应用 (七) :道路交通事故灰色 Verhulst 预测模型
  13. java excel转pdf linux_docker安装libreoffice并实现把Excel转为pdf
  14. JVM虚拟机第八章:堆
  15. 有计算机考试励志的文案,治愈·励志文案:写给即将参加考试的你
  16. 文本CSS多行溢出隐藏显示省略号
  17. 计算机格式化什么意思,格式化硬盘是什么意思?怎么格式?格式了有什么用?会有什么后果?...
  18. ubuntu 解决自动休眠问题
  19. Swift Invalid bitcode version (Producer: '802.0.41.0_0' Reader: '800.0.42.1_0')
  20. Android 围绕图片中心的旋转动画

热门文章

  1. 一杯水怎么测试_天气渐热食欲差、体质虚怎么办?每天一杯能量水——驼奶
  2. eclipse使用ModelGoon插件自动生成java类的UML图
  3. 浙江省计算机二级c语言分数构成,计算机二级C语言题型和评分标准
  4. linux中pad命令,1.1Linux初级命令(附例子)
  5. 炒菜机器人放食材的顺序_2年要开1000家 碧桂园旗下千玺机器人餐厅开业
  6. MS SQL Server和Oracle对数据库事务处理的差异性
  7. 常用的C#正则表达式! [转]
  8. Learning opencv续不足(七)线图像的设计D
  9. appium 切换native/ webview,findby,还有页面元素定位一直小于0的问题的解决
  10. 固定顶部(广告栏效果)