You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在QEMU的AN505模型中测量Arm Cortex-M33 CPU周期遇阻

QEMU模拟Arm Cortex-M33(AN505模型)周期计数问题

我正在使用QEMU模拟Arm Cortex-M33,采用AN505模型,以指定Git仓库为起点。项目已成功构建并能正常调试,但尝试测量CPU消耗的周期时始终失败。

尝试通过DWT寄存器计数

我使用以下代码尝试访问DWT寄存器:

#define  ARM_CM_DEMCR      (*(uint32_t *)0xE000EDFC)
#define  ARM_CM_DWT_CTRL   (*(uint32_t *)0xE0001000)
#define  ARM_CM_DWT_CYCCNT (*(uint32_t *)0xE0001004)

main()
{
        if (ARM_CM_DWT_CTRL != 0) {        /* 检查DWT是否可用 */
            ARM_CM_DEMCR      |= 1 << 24;  /* 设置第24位 */
            ARM_CM_DWT_CYCCNT  = 0;
            ARM_CM_DWT_CTRL   |= 1 << 0;   /* 设置第0位 */
        }
}

但ARM_CM_DWT_CTRL的值始终为0,说明DWT寄存器未配置。这段代码在我实际的M33硬件上可以正常运行。我查阅了AN505的官方文档,未找到关于DWT的相关内容。这是否意味着此方法在AN505模型上行不通?FPGA实现的AN505是否可能未包含DWT寄存器?

尝试使用SysTick计数

之后我尝试使用SysTick API进行周期计数,但访问SysTick->VAL时其值为0;我还按照官方文档说明读取STCVR(地址0xE000E018),结果同样为0。我是否忽略了某些关键配置要点?


内容的提问来源于stack exchange,提问作者cberk1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 21:55:15