在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
相关产品推荐
相关产品推荐

