什么样的代码/指令可以使MCU以最大功耗运行



我正在尝试评估MCU(瑞萨RX722N或RX651(的最大功耗。它不是电池供电的,而且从来没有在睡眠模式下运行过。我想我可以写一段基准代码,当然是用C,它应该可以做很多复杂的计算。当MCU执行计算时,我可以测量MCU消耗的电流,并推断出它的最大功耗水平。我的理解正确吗?如果是的话,你认为我应该写什么样的代码,或者已经有一些开源代码可以用于此目的吗?

提前谢谢。-木质

一般来说,你只需要进行实验。没有固定的答案。首先检查一下数据表,你肯定想打开闪光灯,所有外围设备都不重置。最快的时钟可能是好的,但要明白,从闪存运行并不一定会扩大规模,这取决于部件(它们是否有一个相对于处理器时钟速度的表的等待状态(。

改变状态会消耗能量。所以你想尽可能多地翻转。但这可能是因为你想翻转gpio或其他外部引脚,而不是试图让处理器核心获得更多功率。

你会想要一个很好的仪表,可以测量毫安或毫瓦。

理论上,乘法和除法之类的东西占用了很大比例的芯片空间,如果它们在一个时钟中实现,但其中一些MCU自然不会这样做,指令将是多时钟的,或者有时芯片供应商可以选择(例如,如果他们购买arm内核(。但您可能需要处理数据模式以获得更多的消费。对于核心内容,你可能想做与读取/保存到内存一样多的基于寄存器的内容。

您可能想要用汇编语言编写测试代码。想要从一个无限循环开始,分支到自身,测量功率/电流。使循环、额外的内存周期或alu操作复杂化,看看你是否能检测到功率差异(你可能会发现你无法与核心产生太大差异(。根据mcu的设计,您可能/应该从ram中获得更好的执行性能,但这当然取决于具体情况。ram在mcus中往往比flash更快。然后做一些事情,比如翻转gpio引脚,让它们高高的,等等。如果你有LED,它们会自然打开,等等。

对此没有一个答案,所以没有一个基准测试或一个解决方案最难推动任何随机芯片。假设如果可能的话,可以看到特定芯片的显著差异,测试将针对该芯片,而不一定是同一公司的其他芯片的相同解决方案,更不用说其他公司的芯片了。

最新更新