主要观点总结
文章主要围绕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是奇数时功耗就相对
………………………………