首页 » 技术文章 » 找出能量泄漏,降低嵌入式系统功耗

找出能量泄漏,降低嵌入式系统功耗

作者:  时间:2011-07-21 19:18  来源:EDN

  功耗调试技术使软件工程师得以了解嵌入式系统的软件对系统功耗的影响。通过建立源代码和功耗之间的联系,使得测试和调整系统功耗成为可能,即所谓功耗调试。传统上,降低功耗仅是硬件工程师的设计目标;然而在实际运行的系统中,功耗不仅取决于硬件的设计,而且还与硬件如何被使用有关,而后者则是由系统软件来控制的。

1IAR SystemsC-SPY调试器能够在不同的视图中显示静态和动态的功耗数据。

  功耗调试技术基于对功耗进行采样,并建立每个采样数据与程序的指令序列(以及源代码)之间的关联。其中的难点之一在于实现高精度的采样。理想情况下,对功耗的采样频率应该与系统时钟相同,但系统中的电容性元件会降低此类测量的可靠性。从软件工程师的角度来看,更感兴趣的是功耗与源代码以及程序运行期间的各种事件之间的联系,而非个别的指令,因此所需的采样分辨率将大大低于对每个指令进行采样的频率。

  对功耗的测量由调试工具完成。例如,IAR Embedded Workbench所支持的调试工具是IAR J-Link Ultra。它能够测量芯片的供电电源经过一个串联小电阻之后的压降,见图2。该压降是使用差分放大器进行测量,并通过模数转换器进行采样的。 

2IAR J-Link Ultra能够测量芯片的供电电源经过一个串联小电阻之后的压降。

  要提高功耗调试的精确性,关键在于建立指令跟踪与功耗采样之间的良好关联。最佳的关联仅当能够进行完全的指令跟踪时才能实现,但其缺点在于并非所有芯片都能支持这一功能;即便支持,也通常需要特殊的调试工具。

  要在较低的精确性下达到较好的关联度,可以使用一些现代片上调试架构所支持的PC采样功能。该功能周期性地对PC进行采样,并给出每个采样的时间戳。与此同时,调试工具使用模数转换器对芯片的功耗进行采样。通过比对功耗采样值和PC采样值的时间戳,调试器就能够在同一根时间轴上显示功耗数据以及中断纪录、变量监控等图形,并且将功耗数据与源代码关联起来,见图3 

3PC和功耗采样校正。

  一般来说,功耗优化与速度优化是非常相似的。一个任务运行得越快,低功耗模式持续的时间就能越长。因此,将处理器的空闲时间最大化可以降低系统的功耗。

  想要找出系统中不必要的能耗以及在何处能够降低这些能耗是有难度的。通常它们并非源代码中显而易见地暴露出来的缺陷,而更多地存在于对硬件使用方式的调整之中。

  等待设备的状态

  一个导致不必要能耗的常见错误是使用轮询来等待某个外设状态的改变。下面的例子中,代码一直不中断地运行,直到状态变量变为预期的值。

  while (USBD_GetState() < USBD_STATE_CONFIGURED);

  while ((BASE_PMC->MC_SR & MC_MCKRDY) != PMC_MCKRDY);

  另一种类似的代码是在forwhile循环中实现软件延时,例如:

   i = 10000; // SW Delay

  do i--;  

  while (i != 0);

  这段代码使得CPU一直忙于执行除了计时之外没有任何作用的指令。

  在上述这些情况中,可以通过改写代码来降低功耗。延时最好是通过硬件定时器来实现。CPU在设置好定时器中断之后就可以进入低功耗模式直到被中断唤醒。同样,对外设状态的轮询若有可能也应该通过中断来解决,或者使用定时器中断从而使得CPU在两次轮询之间可以进入休眠。

  DMA vs polLED I/O  

  传统上,DMA被用于提高传输速度。在某些架构中,CPU即使在DMA传输过程中也可以进入休眠模式。功耗调试使得开发者能够试验并通过调试器看到与传统由CPU驱动的传输方式相比,DMA技术所带来的效果。  

相关推荐

找出能量泄漏,降低嵌入式系统功耗

功耗  2011-07-21

AP3765在超低待机功耗充电器方案上的应用

充电器  功耗  AP376X  2011-02-10

如何控制IC的功耗

功耗  RTL  2011-01-21

在嵌入式设计中降低CPLD的功耗

功耗  CPLD  嵌入式  2010-05-06

2010 年将是LED背光液晶电视年?

LED  液晶电视  功耗  2009-12-28

美国国家半导体推出全新白光LED驱动器,可以灵活控制便携式系统的显示屏背光,并降低55%的功耗

在线研讨会
焦点