开发板:JZ2440V3
内核版本:linux-4.16.16
函数的调用关系如下:
在项目主文件中定义了machine_desc结构体变量:
MACHINE_START(S3C2440, "SMDK2440")
/* Maintainer: Ben Dooks <ben-linux@fluff.org> */
.atag_offset = 0x100,
.init_irq = s3c2440_init_irq,
.map_io = smdk2440_map_io,
.init_machine = smdk2440_machine_init,
.init_time = smdk2440_init_time,
MACHINE_END
在开机初始化时会去调用smdk2440_init_time函数;现在来看这个函数做了什么东西:
static void __init smdk2440_init_time(void)
{
s3c2440_init_clocks(12000000); /* 根据晶振频率去设置clk */
samsung_timer_init(); /* 去设置关于系统定时器方面的东东 */
}
s3c2440_init_clocks()函数的定义如下:
void __init s3c2440_init_clocks(int xtal)
{
s3c2410_common_clk_init(NULL, xtal, 1, S3C24XX_VA_CLKPWR);
}
有代码可知,此函数又调用了s3c2410_common_clk_init()函数;函数定义如下: