| Crates.io | rockchip-pm |
| lib.rs | rockchip-pm |
| version | 0.4.0 |
| created_at | 2025-11-25 05:31:11.430024+00 |
| updated_at | 2025-11-26 03:23:35.367695+00 |
| description | Driver for Rockchip Power Management Unit (PMU) supporting RK3588 and similar SoCs. |
| homepage | |
| repository | https://github.com/drivercraft/rockchip-pm |
| max_upload_size | |
| id | 1949221 |
| size | 114,742 |
一个用于 Rockchip SoC 的 Rust 电源管理驱动库,提供基础的电源域控制功能。
#![no_std] 设计,适用于嵌入式环境use rockchip_pm::{RockchipPM, RkBoard, PowerDomain};
use core::ptr::NonNull;
// 初始化 RK3588 PMU(基础地址通常来自设备树)
let pmu_base = unsafe { NonNull::new_unchecked(0xfd8d8000 as *mut u8) };
let mut pm = RockchipPM::new(pmu_base, RkBoard::Rk3588);
// 使用 ID 控制电源域
let npu_domain = PowerDomain::new(8); // NPU 主域
pm.power_domain_on(npu_domain)?;
// 通过名称查找电源域
if let Some(npu) = pm.get_power_dowain_by_name("npu") {
pm.power_domain_on(npu)?;
}
// 关闭电源域
pm.power_domain_off(npu)?;
pub struct RockchipPM {
// 私有字段:板型信息、寄存器接口、电源域配置
}
pub enum RkBoard {
Rk3588, // 已实现
Rk3568, // 未实现(占位符)
}
pub struct PowerDomain {
// 电源域 ID
}
impl PowerDomain {
pub fn new(id: u32) -> Self
pub fn id(&self) -> u32
}
pub enum NpuError {
DomainNotFound, // 电源域不存在
Timeout, // 操作超时
HardwareError, // 硬件错误
}
pub type NpuResult<T> = Result<T, NpuError>;
impl RockchipPM {
/// 创建新的电源管理器实例
pub fn new(base: NonNull<u8>, board: RkBoard) -> Self
/// 通过名称查找电源域
pub fn get_power_dowain_by_name(&self, name: &str) -> Option<PowerDomain>
/// 开启指定电源域
pub fn power_domain_on(&mut self, domain: PowerDomain) -> NpuResult<()>
/// 关闭指定电源域
pub fn power_domain_off(&mut self, domain: PowerDomain) -> NpuResult<()>
}
rockchip-pm/
├── src/
│ ├── lib.rs # 主 API 和 RockchipPM 结构
│ ├── registers/mod.rs # 寄存器定义和访问抽象
│ └── variants/ # 芯片特定实现
│ ├── mod.rs # PowerDomain 类型和通用结构
│ ├── _macros.rs # 电源域定义宏
│ └── rk3588.rs # RK3588 电源域定义
├── tests/
│ └── test.rs # NPU 电源控制集成测试
├── Cargo.toml # 项目配置和依赖
├── build.rs # 构建脚本
├── rust-toolchain.toml # Rust 工具链配置
└── README.md # 项目文档
# 添加目标架构支持
rustup target add aarch64-unknown-none-softfloat
# 构建库
cargo build
# 构建发布版本
cargo build --release
# 检查代码
cargo check
项目包含 1 个集成测试,验证 NPU 电源域控制功能:
# 在开发板上运行测试(需要 U-Boot 环境)
cargo uboot
测试内容:
unimplemented!() 占位符)使用本库需要确保:
0xfd8d8000(请从设备树验证)⚠️ 重要: 本库直接操作硬件寄存器。使用前请确保:
本项目采用 MIT 许可证。
欢迎贡献!请提交 Issue 和 Pull Request。
# 克隆项目
git clone https://github.com/drivercraft/rockchip-pm.git
cd rockchip-pm
# 安装开发工具
rustup component add rustfmt clippy
# 格式化代码
cargo fmt
# 运行代码检查
cargo clippy
drivers/soc/rockchip/pm_domains.c注意: 本驱动是底层系统软件。确保硬件寄存器操作符合芯片规格。在生产环境中使用前请进行充分测试。