在Rockchip RK3399平台上,如何利用clk-uclass通用框架进行时钟频率的配置?请结合具体的操作步骤和示例代码进行说明。
时间: 2024-11-25 07:35:43 浏览: 28
了解如何在Rockchip RK3399平台上通过clk-uclass通用框架进行时钟频率配置,对于嵌入式系统开发者来说是非常关键的。这里提供一个基于《Rockchip SoC时钟驱动详解:以RK3399为例》的指南,以帮助你完成配置。
参考资源链接:[Rockchip SoC时钟驱动详解:以RK3399为例](https://wenku.csdn.net/doc/7f96kd9jnz?spm=1055.2569.3001.10343)
首先,需要熟悉Rockchip RK3399的时钟框架。RK3399使用了一个基于U-Boot的clk-uclass通用框架,它通过设备树(Device Tree)来描述时钟树和初始化设置。
时钟框架的操作通常开始于对`rkclk_init`函数的调用,该函数负责设置PLL(相位锁环)、CPU和总线的时钟频率。例如,在RK3399的启动过程中,APLL可能被设置为600MHz来加快SPL阶段的启动速度。
在时钟设置的代码中,`rk3399_cru`结构体用于配置时钟分频器,它将计算并设置PERIHP的A、H、P时钟频率。这个计算需要确保分频后的频率是正确的,并且分频值在允许的范围内。
下面是一个示例代码片段,展示了如何设置时钟频率:
```c
#include <clk-uclass.h>
int rk3399_clk_set_defaults(void)
{
struct udevice *cru_dev;
int ret;
ret = uclass_get_device_by_name(UCLASS_CLK,
参考资源链接:[Rockchip SoC时钟驱动详解:以RK3399为例](https://wenku.csdn.net/doc/7f96kd9jnz?spm=1055.2569.3001.10343)
阅读全文