你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用 STM32 的 DWT 单元监控内存

[复制链接]
STMCU小助手 发布时间:2023-2-14 14:32
1. 前言关于 DWT(Data watchpoint and trace unit),相信有很多工程师都知道,其可用于 us级别的延时。
: E/ u' j" [' Z, ^今天想和大家分享的是,通过 DWT 检测特定内存变量或函数,当其被修改或被调用时时,可以触发中断,通过这样的方式,实现一些特殊的调试手段。& }+ n% e1 `; l9 N) p
3 Y3 n3 i2 F8 T2 Q  u) B
$ @  Y4 R  H' o' O# |% \$ D
2. DWT 介绍
) y1 o' J2 r9 n/ z" _2 c/ {2 j6 JU5 的 DWT comparator 有以下特性:7 ~/ z' @: o  C' e( H+ H5 T
1) 用作指令地址匹配或数据地址匹配的单一比较器。
* A0 W( V" Z3 U. V2) 在链接组中使用相关的地址范围匹配或数据地址范围匹配。: {+ |' {1 Y" }  k
当 comparator 被匹配时,可以生成以下事件:
8 p+ {( V( Z: ]6 \1) 调试事件,导致 PE 或者进入调试状态;或者,如果执行主扩展则要进行DebugMonitor 异常。8 b- p/ b8 a( P; k3 N
2) 如果实现,将与 ETM 匹配。. e  S6 p2 m: p5 r
3) 向另一个外部资源发送匹配。$ }, n. U" Y% X8 T) T$ L
DWT 由 function 和 comparator 寄存器组成,其定义是在 Armv8-M Architecture Reference Manual 文档中。
& b# t" O0 Y% r6 l- x) ?5 Q5 hDWT_COMPn:存放比较值
" Q3 k2 ]5 b4 x( a! t1 t! gDWT_FUNCTIONn:定义 comparator 的操作
: {* x5 y0 N& ?  |" t- ~
$ v% r* E1 ?1 q7 h
" J- U1 p+ i/ I. g
ON(VNPV2BQP6P@$]2(0XYLU.png 1 c8 t0 j$ f9 {/ N* O
G{MHUSS6TXE1[3K@Q3`8Z[M.png
; _% X; @8 m7 M2 Q" K
, A5 r8 l9 w5 ]1 h7 k2 F

/ Y9 E" h" C& M8 i7 D% ^6 C 3. 实验
: w3 B8 E2 ~4 |& P刚好我手中有块 STM32U575 的 Nucleo 板子,可以拿过来进行功能验证。5 \7 Y# ]' z- ^! \
首先我们通过 STM32CubeMX 实现了基本的串口输出打印的工程,然后在此工程中,按照以下步骤,添加 DWT 的配置 :
; n: i1 K. p' }7 [) P1, 使能 tracing 功能;
' f  t, P. d" Y+ B3 v# q6 P$ k2, 使能调试中断功能;
8 m. G2 j4 N$ c( |3, 配置 comparator 寄存器;% i& b4 p. X6 x1 [
4, 配置 function 寄存器
3 m2 W# Y1 j) f8 b( B$ H具体代码如图 1:
$ I& P2 u9 X# a5 ?; o/ H& a- \' Z+ L& g
5 k4 J/ [1 g6 W

; c' m9 |5 U: O2 h4 B$ i0 i8 i8 f! X8 R0 ]# k8 ~# R

. |& M* Y7 Z$ Z2 \  \' o, K这里我们配置了两个 comparator,COMP0 监控 test_var 变量的写操作, COMP1 监控 HAL_Delay 函数的调用,一旦发生 test_var 变量的写动作,或者 HAL_Delay 函数被调用,都将产生 DebugMonitor 中断事件,并且我们可以在 Debug_Mon_Handler 中断中区分这两个 comparator 事件。* `! E( o8 E" ]+ a+ H: @8 A# Y5 g

) n9 k$ X  r: B5 @

" {" R4 }0 h2 c) q完整版请查看:附件 用STM32的DWT单元监控内存_v1.0.pdf (380.17 KB, 下载次数: 65)
收藏 评论1 发布时间:2023-2-14 14:32

举报

1个回答
zrrrr 回答时间:2025-11-28 15:55:55

你好,请问我按照完整版里面的程序写出来,只要触发debugmonitor异常就会报SecureFault,走不到异常处理函数里面去,请问可能是什么导致的啊

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版