基于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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值