感谢支持
我们一直在努力

基于i.MX51的Linux时钟体系分析<1>

以Freesclae的i.MX51为基础进行分析。


先分析下面的代码:



arch/arm/kernel/setup.c


extern struct sys_timer *system_timer;
672 void __init setup_arch(char **cmdline_p)
673 {

675 struct machine_desc *mdesc;

681 mdesc = setup_machine(machine_arch_type);

741 system_timer = mdesc->timer;

752 }


arch/arm/kernel/time.c


161 void __init time_init(void)
162 {
163 system_timer->init();
164 }


init/main.c


539 asmlinkage void __init start_kernel(void)
{

573 setup_arch(&command_line);

623 time_init();

}


arch/arm/mach-mx5/mx51_babbage.c


1367 static void __init mx51_babbage_timer_init(void)
1368 {

1378 mx51_clocks_init(32768, 24000000, 22579200, 24576000);

1382 }


1384 static struct sys_timer mxc_timer = {
1385 .init = mx51_babbage_timer_init,
1386 };


1470 MACHINE_START(MX51_BABBAGE, “Freescale MX51 Babbage Board”)
..
1482 .timer = &mxc_timer,
1483 MACHINE_END
在arch/arm/mach-mx5/mx51_babbage.c中完成对结构体struct machine_desc *中timer成员的赋值。


在内核初始化的时候执行start_kernel(),该函数先调用setup_arch(),完成对system_timer的赋值。再后执行time_init(),最终执行mx51_babbage_timer_init()函数,完成对i.MX51的clocks的初始化。

赞(0) 打赏
转载请注明出处:服务器评测 » 基于i.MX51的Linux时钟体系分析<1>
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏