1. 项目概述与AWO模式核心价值
在电池供电的物联网设备、便携式医疗仪器或者长时间值守的工业传感器节点中,功耗是决定产品成败的关键指标之一。我们常常面临一个矛盾:设备需要具备强大的应用处理能力(比如运行Linux系统处理复杂逻辑),同时又需要在大部分时间保持极低的待机功耗。传统的解决方案要么是让整个系统周期性唤醒,牺牲实时性;要么是增加一颗独立的超低功耗MCU来负责值守,增加了系统的复杂性和成本。
瑞萨电子的RZ/G3S系列微处理器提供了一个非常优雅的解决方案:AWO(Always-On)低功耗模式。这种模式允许设备的主应用处理器(通常是高性能的Cortex-A55核心)及其大部分外设进入深度休眠状态,而一颗独立的、功耗极低的Cortex-M33协处理器则保持运行,继续处理实时任务、监控外部中断或维持必要的通信链路。这就像让一个团队中的“大脑”(A55)去休息,而留下一个精力充沛的“哨兵”(M33)站岗,一旦有情况,“哨兵”可以立刻唤醒“大脑”。这种异构多核架构的电源域划分,是实现高性能与长续航并存的关键。
本文将以RZ/G3S SMARC EVK开发板为硬件平台,深入剖析一个基于FreeRTOS的AWO示例项目。这个项目完整演示了如何配置系统从全速运行(ALLON)状态平滑切换到AWO状态,并在M33核心上运行一个简单的监控任务,等待用户输入后再将系统唤醒回ALLON状态。我将结合官方指南和实际调试经验,不仅告诉你每一步“怎么做”,更会解释清楚“为什么这么做”,并分享在环境搭建、代码理解和系统调试中可能遇到的“坑”以及如何避开它们。无论你是刚开始接触瑞萨RZ平台,还是正在为产品设计低功耗方案,这篇详尽的实践指南都能提供直接的参考。
2. 环境准备与软件栈解析
在开始动手之前,理清整个项目所依赖的软件生态至关重要。RZ/G3S的软件开发并非一个孤立的IDE工程,它背后是一套由瑞萨精心构建的、面向Linux+RTOS混合系统的完整软件包集合。盲目安装只会导致编译错误和部署失败。
2.1 核心软件组件及其作用
这个AWO示例项目依赖于三个核心的软件包,它们各司其职,共同构成了开发环境的基础。
1. e² studio (2025-12或更高版本) 这是瑞萨官方的集成开发环境,基于Eclipse打造。它不仅仅是CM33 FreeRTOS项目的代码编辑和调试工具,更重要的是其深度集成了瑞萨的配置工具和调试插件。对于CM33项目,e² studio负责管理FreeRTOS的工程配置、代码编译和通过JTAG/SWD接口进行源码级调试。选择2025-12或更高版本是为了确保对RZ/G3S最新硬件特性的完全支持以及与后续软件包的兼容性。
2. RZ Flexible Software Package (FSP) v4.0.0 FSP是瑞萨为自家MCU/MPU提供的软件抽象层和驱动库。你可以把它理解为瑞萨版的“HAL库”或“设备驱动框架”。在AWO项目中,CM33端的代码大量调用了FSP提供的API来操作寄存器,例如配置时钟生成单元(CPG)、控制电源管理IC(PMIC)、管理外设的启停等。使用v4.0.0版本是因为该示例项目是基于此版本开发和测试的,不同版本的FSP API可能会有细微变动,直接使用指定版本能避免不必要的适配问题。
3. RZ/G Verified Linux Package (VLP) 这是整个项目的基石,也是最容易出错的环节。VLP不是一个简单的工具,它是一个基于Yocto Project构建的、包含完整BSP(板级支持包)的Linux发行版构建系统。它为我们生成三样关键东西:
- Linux内核与根文件系统 :运行在Cortex-A55上的主操作系统。
- Trusted Firmware-A (TF-A) :ARMv8-A架构下的安全启动固件,负责系统初始化和电源状态管理。 AWO模式的核心状态切换逻辑,正是由TF-A与CM33固件协同完成的。
- 系统镜像 :最终烧录到开发板存储介质(如eMMC或QSPI Flash)中的完整镜像。
项目支持两个VLP版本:v3.0.7和v4.0.1。你需要根据手头的开发板资源和项目需求选择其一。简单来说,v4.0.1通常包含更新的内核和驱动,但两者的核心构建流程和AWO支持方式是相似的。
2.2 关键依赖:Multi-OS Feature Package
这是实现AWO功能的“钥匙”。默认的VLP构建出的系统,只包含运行在A55上的Linux。要让CM33核心也能运行独立的FreeRTOS固件,并与Linux协同工作进入AWO模式,就必须向VLP的构建系统中“注入”多操作系统支持。这个 r01an8260ej0400-rz-multi-os-pkg.zip 包提供了必要的Yocto层( meta-layer ),其中包含了:
- CM33固件的编译框架。
- TF-A中与CM33通信、进行电源状态切换的补丁。
- 将CM33固件打包进最终系统镜像的脚本。
实操心得:路径与权限 在按照指南解压和添加层时,务必注意两点:
- 绝对路径 vs 相对路径 :指南中的
~/rzg_vlp_<pkg ver>和<Multi-OS download dir>需要替换为你自己的实际路径。建议先通过pwd命令确认当前目录,再使用绝对路径进行操作,避免因路径错误导致脚本执行失败。 - 脚本执行权限 :从ZIP包中解压出的
add_meta_layer.sh脚本可能没有执行权限。在运行bash ../meta-rz-features/meta-rz-multi-os/add_meta_layer.sh前,最好先用chmod +x命令为其添加执行权限,或者直接使用bash来执行,这是更稳妥的做法。
2.3 环境搭建步骤精讲与避坑指南
官方指南的步骤是线性的,但在实际操作中,以下几个环节需要格外留意:
步骤一:VLP基础环境构建 这部分完全遵循《RZ/G3S Linux Start-up Guide》。关键在于确保网络通畅,因为Yocto构建过程中需要从网络下载大量的软件包( recipes )。建议使用稳定的网络连接,并提前配置好代理(如果需要)。首次构建可能会花费数小时,请耐心等待。
步骤二:启用AWO支持层 这是整个环境配置的核心。你需要编辑对应VLP版本的 layer.conf 文件。以VLP v3.0.7为例,文件路径通常为: meta-rz-features/meta-rz-multi-os/meta-rzg/meta-rzg3s/meta-rzg3s-vlp3/conf/layer.conf 。
你需要找到类似下面的行,并取消 RZG3S_AWO_SUPPORT 的注释(移除行首的 # ):
#MACHINE_FEATURES_append = " RZG3S_CM33_REMOTEPROC"
MACHINE_FEATURES_append = " RZG3S_CM33_FIRMWARE_LOAD"
#MACHINE_FEATURES_append = "




被折叠的 条评论
为什么被折叠?



