crust:低功耗深度睡眠解决方案
项目介绍
Crust 是一款面向 Allwinner(全志科技)sunxi 系列SoC的低级开源固件。它的命名灵感来源于美味的果馅饼的最外层,正如它的名字一样,Crust 作为最底层的固件组件,运行在 Banana、Orange、Lichee Pi 等单板计算机以及其他基于 Allwinner 芯片的各种设备上,例如 Olimex TERES-I 笔记本电脑和 Pine64 PinePhone。
Crust 旨在通过实现深度睡眠状态来提高电池续航和热性能。在深度睡眠期间,CPU核心、DRAM控制器以及大多数板载外设都会被关闭,与空闲设备相比,功耗可以降低80%或更多。在没有 PMIC(电源管理集成电路)的板上,Crust 还负责设备的有序关机和开机。
为实现这一功能,Crust 在主 CPU 和 DRAM 之外运行,使用一个专门的常开微处理器——系统控制处理器(SCP)。Crust 设计运行在特定的 SCP 实现,即 Allwinner 的 AR100 上。
需要注意的是,Crust 仅提供深度睡眠的机制,并不指定任何系统睡眠策略。具体来说,Crust 不决定何时进入睡眠状态;这是由 Linux 内核或用户空间决定的。同样,除了监听红外遥控器按键外,Crust 也不决定何时唤醒系统;这是由硬件通过 Linux 编程实现的。Crust 被设计成 Linux 电源管理接口的一个几乎不可见的实现细节。
项目技术分析
Crust 支持主线 Linux,完全替代了 Allwinner 的专有固件,提供支持标准协议(如 SCPI)的开源解决方案,并在社区参与下完全开放开发。目前,项目正在努力将所有更改上流到第三方项目,但仍有部分补丁尚未合并。
Crust 的构建依赖于几个关键组件:
- ARM Trusted Firmware-A:Crust 的上游支持已合并到提交 c335ad480d41 中,并包含在所有从 v2.3 开始的版本中。
- Linux:尽管 Linux 直接与 Crust 无通信,但它需要一些小补丁以干净地与 Crust 共享时钟控制器和 PMIC 总线控制器硬件。
- U-Boot:支持将 Crust 加载到 SRAM 的上游支持已合并到提交 18261b855223 中,并包含在所有从 v2021.01-rc1 开始的版本中。
项目及技术应用场景
Crust 的主要应用场景是在基于 Allwinner SoC 的设备上实现深度睡眠,以显著降低功耗,从而延长电池续航时间。这对于移动设备和便携式设备尤其重要,例如:
- 单板计算机(如 Banana Pi、Orange Pi、Lichee Pi)在节能模式下的长时间运行。
- 笔记本电脑和智能手机在待机状态下的低功耗运行。
- 工业和物联网设备中的节能操作。
项目特点
Crust 具有以下特点:
- 深度睡眠状态:通过深度睡眠实现高达80%的功耗降低。
- 完全开源:遵循自由软件许可证,代码完全开放,社区驱动开发。
- 硬件兼容性:支持多种 Allwinner SoC,无需板级特定代码。
- 系统独立性:Crust 不决定系统的睡眠和唤醒策略,而是由 Linux 内核或用户空间决定。
- 易于构建:提供详细的构建指南和 Makefile,简化了构建过程。
通过这些特点,Crust 为开发者提供了一个稳定、高效且易于集成的低功耗解决方案,尤其适用于需要节能操作的场景。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考