Arduino 测量运行代码的能力
Posted
技术标签:
【中文标题】Arduino 测量运行代码的能力【英文标题】:Arduino measuring power to run code 【发布时间】:2015-06-11 16:52:09 【问题描述】:我在熊金属上运行 c 代码(无操作系统)。代码接收一些传感器数据,执行计算,形成数据包并传输。该板由电池供电。
我有兴趣了解 Jules 中每个操作所消耗的能量。这可能吗?一个人会怎么做呢?
【问题讨论】:
也许……以焦耳计?无论如何,将一个(小)电阻与电池串联,以便您测量电流。还要测量电压。这样就可以获得瞬时功率。把它融入时间,你就会得到能量。 【参考方案1】:每条指令使用的焦耳数取决于您使用的处理器以及您正在查看的指令。我相信 ARM 和 Atmel AVR 处理器没有真正的硬件电源管理,这让事情变得更简单。
一条指令使用多少能量与它使用的硅上电路的数量和类型有关。这意味着尝试从理论上计算焦耳数会很复杂,因为它不仅仅与指令使用的周期数有关。
所以你必须通过实验来做。这就是我要做的。
-
删除所有编译器优化
进行频率分析以找到您的热门操作并挑选出最常用的操作。 (我假设我们说的不是 ASM 指令,而是“C”指令。)
编写一个循环来重复该指令,例如 20 次,并让循环至少运行几秒钟
用电源更换电池。
使用串联电阻测量功率,如评论中所述,但(当然)适当调整电压。
运行循环程序并获取功率的统计采样。
对所有热门操作执行此操作。
计算程序的耗电量
根据程序执行的实际功率测量验证功率使用情况
适当调整(即标准化)您的计算
您还必须考虑内存层次结构。访问片外存储器需要能量。当操作或数据被缓存时,它会改变你的能量方程。
我认为这应该可行,但不知道。祝你好运。
【讨论】:
以上是关于Arduino 测量运行代码的能力的主要内容,如果未能解决你的问题,请参考以下文章