MCU软件优化之能源调试
时间:2023-09-25 22:54来源: 作者: 点击: 次现在人们更加重视可配置和可编程的解决方案,主要是因为在微控制器中,能源消耗很大程度上直接来自于处理内核和许多外围设备的活动,这也是为什么现在半导体产业对'超低功耗'微控制器解决方案的需求量急剧增加的原因。
传统上,在大多数能源敏感的应用中人们一直采用8位或16位的设备,因为这些设备的内核很小,门相对较少, 泄漏电流的水平较低。然而今天的应用要求的处理能力要比8位或16位内核所能集合的更强大。
过去人们普遍假定32位内核产生的电流在节能模式下就会有益于能量敏感的应用。今天看来这是一种误解。利用现有的全套低功耗设计技术, 32位内核才可以实现低功耗模式,节能效果和8位内核一样好,甚至更好。
Energy Micro生产的EFM32 Gecko微控制器是一种新的节能设备,是专门开发来用在操作所有阶段的产品,可减少电流和时间(即: 真正的能量)。图1简要说明了与尺寸较小的处理器内核相比,这种以ARM Cortex™- M3为基础的设备完成任务的时间更快,更能在低功耗模式下花更多的时间,从而进一步降低平均功耗。
图1:一个节能内核可通过完整的唤醒/操作/返回睡眠周期节省几个不同区域的能量。蓝色区域表示一个更强大的32位内核完成任务所节省的能量,所需的周期比一个8位内核需要的少,在活跃和睡眠模式下消耗的电流也较少。
如图2所示,Gecko已证明了它所消耗的能量仅为8位、16位或32位解决方案所需能量的四分之一。这一性能在很大程度上是通过一个低能量的外围设备套装组合实现的,这个组合包括外围反射系统(使得外围设备围绕内核自动运作)、五个不同的和分级的低能量模式和非常快速的唤醒时间。
Energy Micro的ARM ®Cortex™- M3芯片结构是以EFM32 Gecko微控制器为基础的。
要实现目标应用中尽可能低的能源消耗,我们不能忽视应用源代码所发挥的关键作用。如果电池寿命被充分最大化了, 源代码的设计就要尽量使用低能量的外围设备和低能量模式。
由于源代码库规模的增长,源代码变得越来越难以识别,例如,当需要中断服务程序来取代循环时:一个简单的代码疏忽可能会导致处理器继续保持全面活跃,同时等待某个外部事件的发生,而不是进入节能睡眠模式。
在检查代码或在理想条件下进行测试时,这种伪随机事件很容易被忽略,而且在浸泡试验中很难捕捉到它。同样,即使是最有经验的工程师可能也无法独自从一张纯粹的代码列表中识别出消耗了不定量能源的代码。
虽然通过万用表阅读或示波器跟踪可能会测出给定时间内的能耗平均水平,它却不能测出特定事件所消耗的电流。同样,逻辑分析仪可以显示某个特别程序开始运行的时间和次数,但却不能将此与电涌联系起来。
利用创新科技,Energy Micro开发了一种克服这些限制的解决方案,该方案不仅提供了所用的瞬时能量水平,也将信息与当时实际采用的代码联系了起来。
energyAware Profiler是用于PC的一种'能量调试'工具,它采用了现有的EFM32 Gecko开发工具包中的专用Advanced Energy Monitoring (先进能源监控AEM)系统。AEM能显示开发工具包里印刷线路板上液晶显示器应用的实时耗电量,如图3所示,在运用Profiler软件时,的真正能量才得以实现。
图3:节能的EFM32 Gecko微控制器开发工具包里有Advanced Energy Monitoring (先进能源监控)。
该软件通过USB接口在Windows和开发工具包界面上运行。来自开发工具包里的基本数据使PC显示出运行在目标上的应用代码的实时能量剖面。
默认配置显示出时间推移中的能量水平,使工程师能识别出某个关注区域里使用的能源可能比预期的高了。随着时间的推移, 系统推断出的电池供电应用的预期寿命指标比通过一张数据表中估算出最好和最差情况下的数据更准确。
在与energyAware Profiler一同使用时,AEM系统采用一个基于ARM的串行接口收集应用中的其它信息。传递给它的数据采用AEM系统的硬件进行解码,然后再传到PC上。这项活动的非侵入性意味着目标的能源剖面不以任何方式改变。
其它数据包括重要的调试信息,包括Program Counter(程序计数器),它使energyAware Profiler能及时识别在某个特定时刻采用的实际源代码,如能量图所示。这会立刻向工程师指出该程序产生高能耗的任何区域,将代码进行优化以降低整体能源消耗。见图4。
图4:energyAware Profiler同时提供三个角度、一张实时电流消耗图、一张设备代码列表和一个单独应用功能的能量剖面。
该图通过宽度和高度的轨迹和快速的量级来代表能量的使用。下面是独立的峰值 – 很容易通过使用示波器来监控电源的电流进行识别- 实际上可能并不需要进一步调查,而长期以来相对较少的活动其实也代表无用循环可以轻易被中断驱动的事件所取代,这将使设备进入一个节能睡眠模式的过渡期。
通过查看这些与源代码紧密相关的图表资料,工程师很快就能够在一个项目中识别、放弃和优先考虑具体的程序,避免不必要的能源使用量。这很容易转化为一个量级的低能源消耗,因此,是更为有效的应用。
在为一个设备或应用设定额定功率时,参考数据表对工程队而言是司空见惯的。然而,正如我们之前提到的,能源和功率根本不一样,很多低功耗设备使用更多的能源,因为它们在一个较长时期内很活跃。由于这个原因,我们不能忽视电源管理的时间轴,但很少能以一个可靠的方式实现它。
显然在这种情况下该软件的剖面是至关重要的。可惜大多数的软件工程师并未深刻意识到哪个代码具有公开的“能源效率”。这不是批评,而是观察的结果,我们不能把软件看成先天资源不足,说它超出了传统的时钟周期和记忆的条件。不过,今天每个时钟周期仍在消耗能源, 减少消耗是工程师们开发超低能源应用时所要面对的主要挑战。
此外,减少时钟周期直接关系到使用较少的能量,正确优化时钟周期提供了较佳的整体能量剖面。很明显,一个功能上正确的程序不一定能通过设计优化能源效率。
为EFM32 Gecko MCU开发的energyAware Profiler技术有一个从0.1μA至100mA的动态范围,应用的精细调试与功能调试同时进行,从而将开发时间的结果最大化了。
以及软件描述在超低功耗应用和技术中变得越来越关键。虽然EFM32 Gecko MCU是一种固有的低功率技术,随着时间的推移, 保持较低的能源消耗与应用的性能之间有着内在的联系。这使得它在短期内受面向应用的条件限制,很难模拟。虽然数据表可能会帮助一位工程师了解在一定条件下某个设备使用的能源数量,但是只有当应用程序真的实际运行了,该数据表的数字才真的会得到检验。