Edit online

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 配置

模块放开复位一般在驱动初始化中操作,复位配置有两种方式:

  1. 和时钟一起操作,使能时钟的同时放开复位。例如:
    // 使能时钟 & 放开复位
    hal_clk_enable_deassertrst(CLK_PWM);
  2. 单独操作,独立的放开复位。例如:
    // 放开复位
    hal_reset_deassert(RESET_PWM);