设计嵌入式系统,越来越要求更长的待机时间,并延长电池寿命。优化电池寿命的能力有助于降低现场维护成本,并确保客户无需连续更换电池或充电即可获得良好的产品体验。
团队使用很多标准技术来帮助延长电池寿命。例如,将处理器置于低功耗模式、关闭未使用的外设等。但是,有些开发团队经常忽略一些标准技术。
在今天的文章中,将探讨几种经常被忽视但可以产生巨大影响的低功耗设计技术。
放弃 GCC,使用商业编译器
作为软件开发人员和团队,我们已经习惯使用免费和开源工具。我们常常忘记,在大多数情况下,一分钱一分货。虽然 GCC 是一个很棒的工具,但它并不适合所有情况。其中之一是低功耗、电池供电的设备。
最近做了一些性能测量来比较 GCC 和 IAR 的 EWARM 编译器之间的代码执行情况。使用相同的设置为相同的处理器编译相同的代码可以使代码的性能提高 20 - 30%。结果因操作而异,但这些数字是惊人的。
这意味着使用商业编译器,可能能够更快地执行相同的代码,这意味着您可以更快地返回睡眠模式。处于睡眠模式的时间越长意味着电流消耗越少,电池续航时间就越长。
使用商业编译器可能是一些容易实现的目标,您不仅可以利用它来获得更好的代码性能,而且还可以节省电池寿命。
注意:结果会根据您优化代码的程度而有所不同。但是,大部分时间商业编译器都要好于开源编译器。
使用无滴答模式延长睡眠时间
低功耗模式的一个问题是,如果您使用 RTOS,内核滴答(Tikless)将定期唤醒系统。将刻度设置为一毫秒的情况并不罕见。如果您希望设备在唤醒前休眠整整一分钟,会发生什么情况?好吧,在那一分钟内,您会比您希望的醒来次数多 6,000 次,从而浪费了宝贵的电池寿命。
许多 RTOS 中的一种简单解决方案是使用无滴答模式。该模式背后的想法是,当系统进入睡眠状态时,它会调整低功耗计时器,以便 RTOS 不会每毫秒发生一次。它甚至可能不会在几分钟、几小时甚至一天内发生。
这可以使系统保持睡眠状态并防止其唤醒并运行一堆不必要的 CPU 指令周期。从而使用的电流更少,相当于电池寿命更长。
注意:启用无滴答模式的方法以及作为开发人员可能需要投入的工作因 RTOS 而异。
利用内部缓存
多年来,微控制器没有缓存。它们是资源有限的设备。但今天的情况并非如此。如果您查看 ST、NXP 和许多其他公司的微控制器部件,您会发现大多数都有内部缓存。如果您正在设计低功耗,则可以利用缓存来降低能耗。
缓存有多种机制可以帮助您减少电流消耗。大多数与高速缓存的主要功能相关:提供对常用数据或指令的更快访问,从而减少 CPU 访问速度较慢的主内存所花费的时间。
例如,您可以使用缓存来优化内存访问模式。缓存可以显着优化具有可预测内存访问模式的应用程序中的能源使用。通过有效地预取和缓存所需的数据和指令,微控制器最大限度地减少了对主存储器的高能耗访问。
与其他板载内存相比,该高速缓存提供更低的延迟和更高的访问速度。内存访问花费的时间更少,这使得 CPU 的空闲周期更少。更快的访问还意味着 CPU 可以更快地完成任务,从而减少总体活动 CPU 时间。所有这些都有助于降低处理器的整体能耗,从而延长电池寿命。
结论
当开发人员和团队考虑低功耗设计时,他们通常会直接跳到睡眠模式、时钟门控和其他技术来降低能耗。虽然这些都是很棒的技术,但他们有时会忽略一些简单的唾手可得的技术。
低功耗设计需要考虑很多因素。您可以无限期地优化能源,但优化过程中通常会出现“拐点”,这会导致电池寿命的收益减少。因此需要始终跟踪这些技术如何延长电池寿命。