CMU 配置
驱动配置
因为 CMU 是每个系统的必需模块,CMU 驱动默认会被编译进系统,所以不需要在 scons --menuconfig
菜单中进行使能。
系统 Clock 配置
Luban-Lite 中时钟配置的位置有两处:一处在板级初始化,一处在模块驱动初始化。
板级初始化时配置的时钟是一些系统时钟和部分模块时钟,可以通过两种方式对这部分时钟进行配置
-
通过
scons --menuconfig
菜单进行配置scons --menuconfig Board options ---> Clocks options --->
-
通过修改源文件
具体的配置路径在luban-lite\target\$chip\$board\sys_clk.c
。例如:struct aic_sysclk aic_sysclk_config[] = { {1200000000, CLK_PLL_INT1}, {491520000, CLK_PLL_FRA1}, {840000000, CLK_PLL_FRA2}, {240000000, CLK_AXI0}, {240000000, CLK_AHB0}, {100000000, CLK_APB0}, {24000000, CLK_APB1}, {600000000, CLK_CPU}, {25000000, CLK_OUT2}, #ifdef AIC_USING_UART0 {48000000, CLK_UART0}, #endif } void aic_board_sysclk_init(void) { uint32_t i = 0; // 设置时钟频率 for (i=0; i<sizeof(aic_sysclk_config)/sizeof(struct aic_sysclk); i++) { hal_clk_set_freq(aic_sysclk_config[i].clk_id, aic_sysclk_config[i].freq); } }
模块 Clock 配置
部分模块把时钟配置放在驱动初始化中。例如:
int hal_pwm_init(void) { // 设置时钟频率 hal_clk_set_freq(CLK_PWM, PWM_CLK_RATE); // 使能时钟 hal_clk_enable(CLK_PWM); }
模块 Reset 配置
模块放开复位一般在驱动初始化中操作,复位配置有两种方式:
-
和时钟一起操作,使能时钟的同时放开复位。例如:
// 使能时钟 & 放开复位 hal_clk_enable_deassertrst(CLK_PWM);
-
单独操作,独立的放开复位。例如:
// 放开复位 hal_reset_deassert(RESET_PWM);