Cortex M0+ 上的计数周期
Counting cycles on Cortex M0+
我有一个用于性能测试的 Cortex M0+ (SAML21) 板。我想测量一段给定的代码需要多少个周期。我尝试使用 DWT (DWT_CONTROL
),但从未产生结果;无论代码是什么 运行.
,它都返回 0 个周期
// enable the use DWT
*DEMCR = *DEMCR | 0x01000000;
// Reset cycle counter
*DWT_CYCCNT = 0;
// enable cycle counter
*DWT_CONTROL = *DWT_CONTROL | 1 ;
// some code here
// .....
// number of cycles stored in count variable
count = *DWT_CYCCNT;
有没有一种方法可以计算周期(也许有中断和计数器?)就像我可以查询毫秒一样(例如 Arduino 上的 millis()
)?
根据 M0+ 的 CMSIS 头文件 (core_cm0plus.h),核心调试寄存器只能通过调试访问端口访问,不能通过处理器访问。我只能建议使用一些免费的 运行 计时器(也许是 SysTick),或者您的调试器可能有助于访问所需的寄存器。
我有一个用于性能测试的 Cortex M0+ (SAML21) 板。我想测量一段给定的代码需要多少个周期。我尝试使用 DWT (DWT_CONTROL
),但从未产生结果;无论代码是什么 运行.
// enable the use DWT
*DEMCR = *DEMCR | 0x01000000;
// Reset cycle counter
*DWT_CYCCNT = 0;
// enable cycle counter
*DWT_CONTROL = *DWT_CONTROL | 1 ;
// some code here
// .....
// number of cycles stored in count variable
count = *DWT_CYCCNT;
有没有一种方法可以计算周期(也许有中断和计数器?)就像我可以查询毫秒一样(例如 Arduino 上的 millis()
)?
根据 M0+ 的 CMSIS 头文件 (core_cm0plus.h),核心调试寄存器只能通过调试访问端口访问,不能通过处理器访问。我只能建议使用一些免费的 运行 计时器(也许是 SysTick),或者您的调试器可能有助于访问所需的寄存器。