专栏名称: 21ic电子网
即时传播最新电子科技信息,汇聚业界精英精彩视点。
目录
相关文章推荐
今天看啥  ›  专栏  ›  21ic电子网

为什么插入了几条NOP指令,MCU的功耗就变了?

21ic电子网  · 公众号  · 半导体  · 2024-10-21 16:53
    

主要观点总结

文章主要围绕MCU的运行功耗展开测试,通过插入不同数量的NOP指令发现功耗存在明显变化,作者对此现象进行分析并给出可能的原因。

关键观点总结

关键观点1: 测试M0+ MCU运行功耗的方式

采用最简单的测试方式,即只运行一个while(1)空循环,并在循环前插入不同数量的NOP指令,测试MCU的电流变化。

关键观点2: 测试结果

测试发现,插入奇数NOP指令时功耗相对较低,而插入偶数NOP指令时功耗相对较高。在RAM中运行程序时,功耗稳定在一个较低的水平。

关键观点3: 对测试结果的分析

作者从CPU执行指令的过程进行分析,解释了指令地址的变化对功耗的影响。同时提到优化等级和程序存储位置(Flash或RAM)对功耗的影响。

关键观点4: 文章的价值与局限性

文章提供了对MCU功耗的深入理解和实验分析,但分析结果仅为猜测,可能存在不准确之处,欢迎指正。


文章预览

我最近在测试一个M0+ MCU的运行功耗,测试代码采用如下最简单的方式,即main函数里只跑一个while(1)空循环,测试出来的电流是1.11mA,使用的IDE为KEIL MDK,优化等级为0 当我在while(1)的前面插入3条NOP指令,测出来的电流却变成了0.89mA。 这是怎么回事?是测量误差,还是事实就是如此?这可是足足差了200多uA啊,为此我又做了如下几个对比实验。 测试条件 功耗 优化等级0,while(1)前不加NOP 1.11mA 优化等级0,while(1)前插入1个NOP 0.90mA 优化等级0,while(1)前插入2个NOP 1.11mA 优化等级0,while(1)前插入3个NOP 0.89mA 优化等级0,while(1)前插入4个NOP 1.12mA 优化等级0,while(1)前插入5个NOP 0.91mA 优化等级0,while(1)前插入6个NOP 1.11mA 优化等级0,while(1)前插入7个NOP 0.88mA 优化等级0,while(1)前插入8个NOP 1.11mA 上述实验可以看到明显的规律,只要while(1)前插入的NOP是奇数时功耗就相对 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览