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

Cortex-M中的DWT(Data Watchpoint and Trace,数据观察点与跟踪单元)

Cortex-M中的DWT(Data Watchpoint and Trace,数据观察点与跟踪单元)

一句话概括

DWT (Data Watchpoint and Trace)数据观察点与跟踪单元,它是 Cortex-M 处理器内核中的一个调试组件,主要用于提供高级的调试、性能分析和实时系统跟踪功能。


详细解释

1. 全称与定位
  • 全称: Data Watchpoint and Trace
  • 定位: 它是 ARM Cortex-M 处理器中嵌入式跟踪宏单元(ETM)调试访问端口(DAP) 等共同构成的调试系统的一部分。DWT 位于处理器内核内部,因此它可以访问到非常核心的信号和数据。
2. 主要功能

DWT 的功能可以大致分为三类:

a) 数据观察点

这是其名称的直接体现。你可以配置 DWT 的比较器,使其在特定内存地址被访问(读取、写入或两者)时触发一个事件。

  • 触发的事件可以是
    • 调试中断: 就像设置一个硬件断点,当地址被访问时,处理器会暂停,进入调试状态。
    • ETM 触发: 启动或停止更详细的指令跟踪流。
    • 数据地址匹配: 用于其他调试功能。
  • 应用场景: 当某个关键变量被意外修改时,通过设置数据观察点,可以快速定位到修改它的代码。

b) 系统性能分析

这是 DWT 一个极其有用的功能,它内置了多个计数器,可以无干扰地(即不需要修改代码)监控处理器的运行状况。

  • 主要计数器包括
    • CYCCNT周期计数器。这是最常用的一个计数器,它记录从启动开始经过的处理器时钟周期数。常用于:
      • 精确的性能剖析: 在代码段开始和结束时读取 CYCCNT,相减即可得到该段代码执行的确切时钟周期数。
      • 高精度延时: 实现比 SysTick 定时器更精确的微秒或纳秒级延时函数。
    • CPICNT指令折叠次数计数器。记录由于分支预测成功而节省的指令周期数。
    • EXCCNT异常开销计数器。记录处理异常所花费的周期数。
    • SLEEPCNT睡眠周期计数器。记录处理器在睡眠模式下的周期数。
    • LSUCNT加载/存储单元计数器。记录加载和存储指令的周期数。
    • FOLDCNT指令折叠计数器。记录被折叠的指令数量。

c) 程序流跟踪

DWT 可以与 ITM 或 ETM 协同工作,提供程序执行流的信息。

  • PC 采样: DWT 可以定期将程序计数器(PC)的值通过跟踪接口(如 SWO)发送出去。调试主机(如 Keil MDK, IAR EWARM)可以接收这些数据并重建函数的调用历史和执行时间分布图,这就是所谓的性能分析功能。

如何使用 DWT(以 CYCCNT 为例)

在 Cortex-M3/M4/M7 等处理器上,使用 DWT 进行性能分析非常普遍。以下是一个典型的步骤:

  1. 启用 DWT
    首先需要解锁调试功能,允许使用 DWT 和 ITM。

    #define DEMCR_TRCENA (1 << 24) // Debug Exception and Monitor Control Register 的 TRCENA 位// 启用 DWT 和 ITM 的跟踪功能
    CoreDebug->DEMCR |= DEMCR_TRCENA;
    
  2. 启用 CYCCNT 计数器
    在 DWT 控制寄存器中使能周期计数器。

    #define DWT_CTRL_CYCCNTENA (1 << 0) // DWT Control Register 的 CYCCNTENA 位// 启用周期计数器
    DWT->CTRL |= DWT_CTRL_CYCCNTENA;
    
  3. 复位并读取计数器
    计数器是 32 位无符号整数,会不断累加直至溢出后回绕。

    // 复位计数器(可选)
    DWT->CYCCNT = 0;// 在代码段开始前读取
    uint32_t start_cycle = DWT->CYCCNT;// ... 要测量的代码段 ...// 在代码段结束后读取
    uint32_t end_cycle = DWT->CYCCNT;// 计算消耗的周期数
    uint32_t cycles_taken = end_cycle - start_cycle;
    

总结

特性描述
名称数据观察点与跟踪单元
核心功能调试、性能分析、实时跟踪
关键特性1. 硬件数据观察点(监控内存访问)
2. 性能计数器(如 CYCCNT,用于精确计时和分析)
3. 程序流跟踪支持(PC 采样)
开发者价值提供了一种非侵入式的手段来剖析代码性能、定位复杂的内存访问错误,是进行嵌入式系统优化的强大工具。
注意事项并非所有 Cortex-M 型号都实现完整的 DWT 功能(例如,Cortex-M0/M0+ 的功能非常有限)。需要查阅具体芯片的数据手册。

总而言之,DWT 是 Cortex-M 处理器为嵌入式开发者和调试器提供的一个功能强大且高效的“内窥镜”,让你能清晰地看到内核内部正在发生的事情。

http://www.dtcms.com/a/513057.html

相关文章:

  • 自助建网站系统看电影pexels免费素材网站
  • 做评选活动的网站网站建设费会计处理
  • 私人程序定制:综合能源混合博弈
  • 蓝色网站源码室内展厅设计公司
  • 西电信息化建设网站山东网站制作设计
  • Django 的动态特性:从 Python 动态机制到框架设计思想
  • 矽塔 SA8204 输入耐压36V 2.5A可调过流保护 集成故障报告的智能过压/过流保护芯片
  • 十堰微网站建设网络交友的网站建设
  • Spring—注解开发
  • Hugging Face 2025年10月21日 Top 10 热门AI模型
  • 事件网站推广杭州平面设计公司
  • 粮食网站建设的背景及意义大型网站制作怎么样
  • LangGraph 入门,层级介绍LangGraph
  • 360doc 网站怎么做江西专业网站建设
  • 青岛贸易公司 网站制作济南网站制作定制公司
  • 西部数码网站管理助手 ftp密码重庆市建设工程信息网怎么录项目信息
  • Linux | i.MX6ULL 网络测试方法
  • 网站建设案例收费吗靖江网站定制
  • debug - eclipseCPP + openocd + 引入arm-gcc makefile工程来单步调试
  • 数据结构——十字链表
  • 怎么自己编程做网站北京建设工程主管部门网站
  • 基于文本+视觉混合输入的恶意流量检测方法猜想
  • spark实战:python股票数据分析可视化系统 Flask框架 金融数据分析 Echarts可视化 大数据技术 ✅
  • 连云港网站关键字优化市场自己做网站背景图片
  • wordpress文章加预览图外贸seo推广
  • Java面试精选:如何轻松的拿下offer?
  • 网站前瞻性_新流量机会内容建设分析华为邮箱注册
  • Java-集合(开发的重点)
  • docker技术之container与docker介绍
  • 如何做外贸soho做网站网站开发html5技术