针对电池寿命设计嵌入式系统已成为许多团队的重要设计考虑因素。优化电池寿命的能力有助于降低现场维护成本,并确保客户不必不断更换电池或为电池充电,从而获得良好的产品体验。
团队使用许多标准技术来帮助提高电池寿命。例如,将处理器置于低功耗模式、关闭未使用的外设等。然而,开发团队经常忽略一些标准技术。
在今天的帖子中,我们将探讨几种低功耗设计技术,们可以带来很大的不同。
技巧1–放弃GCC,使用商业编译器
作为软件开发人员和团队,我们越来越满足于使用免费和开源工具。虽然GCC是一个很棒的工具,但它并不适合所有情况。其中一个例子是低功耗电池供电设备。
我最近做了一些性能测量,以比较GCC和IAR的EWARM编译器之间的代码执行。使用相同的设置为相同的处理器编译相同的代码会使测试代码的性能提高20–30%。手术的结果各不相同,但这些数字是惊人的。
这是什么意思?这意味着使用商业编译器,你可以更快地执行相同的代码,这意味着你可以更快地返回睡眠模式。处于睡眠模式的时间越长,意味着电流消耗越少,电池续航时间越长的可能性越大!
使用商业编译器可能是一些唾手可得的成果,不仅可以提高代码性能,还可以节省电池寿命。
注意:结果将根据你手头优化代码的能力而有所不同。但是当工具可以为你完成时,为什么要浪费那么多时间呢?
技巧2——使用无备忘录模式来延长睡眠时间
低功耗模式的一个问题是,如果你使用RTOS,内核时钟会定期唤醒系统。将节拍设定为1毫秒并不罕见。如果你想让你的设备在醒来前休眠整整一分钟,会发生什么?在这一分钟里,你会比你希望的多醒来6000次,浪费宝贵的电池寿命。
在许多RTOS中,一个直接的解决方案是使用无备忘录模式。该模式背后的想法是,当系统进入睡眠状态时,它会调整低功耗计时器,以使RTOS滴答不会每毫秒发生一次。相反,它可能在几分钟、几小时甚至一天内都不会发生!
正如你所想象的那样,这使系统保持睡眠状态,并防止它醒来并运行一堆不必要的CPU周期。结果是使用更少的电流,相当于更长的电池寿命。
注意:启用无备忘录模式的方法以及开发人员可能需要做的工作因RTOS而异。
技术3–利用内部缓存
多年来,微控制器没有缓存。它们是资源受限的设备,与功能更丰富的同类产品相比相对简单。今天的情况并非如此。如果你看看ST、恩智浦和许多其他公司的微控制器器件,你会发现高性能器件都有一个内部缓存。如果你设计的是低功耗,你可以利用高速缓存来降低能耗。
有几种机制允许缓存帮助你降低电流消耗。大多数与高速缓存的主要功能有关:提供对频繁使用的数据或指令的更快访问,从而减少CPU访问较慢的主存储器所花费的时间。
例如,你可以使用缓存来优化内存访问模式。在具有可预测内存访问模式的应用中,高速缓存可以显著优化能源使用。通过有效地预取和缓存所需的数据和指令,微控制器最大限度地减少了对主存储器的高能耗访问。
与其他板载内存相比,高速缓存可提供更低的延迟和更高的访问速度。结果是花在内存访问上的时间更少,这使得CPU有更少的空闲周期。更快的访问速度也意味着CPU可以更快地完成任务,从而减少总的活动CPU时间。所有这些都有助于降低处理器的整体能耗,从而延长电池寿命。
结论
当开发人员和团队着眼于低功耗设计时,他们通常会直接跳到睡眠模式、时钟门控和其他降低能耗的技术。虽然这些都是很棒的技巧,但是他们有时会忽略一些简单的技巧,这些技巧也是唾手可得的。我们在这篇文章中看到了几种方法,你可以用它们来帮助延长你的设备的电池寿命,或者降低你的设备的能耗。