Chinaunix首页 | 论坛 | 博客
  • 博客访问: 626901
  • 博文数量: 121
  • 博客积分: 8469
  • 博客等级: 中将
  • 技术积分: 1065
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 10:32
文章分类

全部博文(121)

文章存档

2013年(1)

2012年(15)

2010年(2)

2009年(8)

2008年(95)

我的朋友

分类: LINUX

2008-07-17 08:51:59

以mainstone开发板为例
mainstone.c文件的最后几行:
MACHINE_START(MAINSTONE, "Intel HCDDBBVA0 Development Platform (aka Mainstone)")
    MAINTAINER("MontaVista Software Inc.")
    BOOT_MEM(0xa0000000, 0x40000000, io_p2v(0x40000000))
    MAPIO(mainstone_map_io)
    INITIRQ(mainstone_init_irq)
    INITTIME(pxa_init_time)
    INIT_MACHINE(mainstone_init)
MACHINE_END

以中断为例,其中的INITIRQ(mainstone_init_irq)初始化结构struct machine_desc中的函数指针init_irq。

在setup_arch(char **cmdline_p)函数中
    init_arch_irq = mdesc->init_irq;

arch/arm/kernel/irq.c的init_IRQ()函数
void __init init_IRQ(void)
{
    struct irqdesc *desc;
    extern void init_dma(void);
    int irq;

    for (irq = 0, desc = irq_desc; irq < NR_IRQS; irq++, desc++) {
        *desc = bad_irq_desc;
        INIT_LIST_HEAD(&desc->pend);
    }

    init_arch_irq();
    init_dma();
}
调用init_arch_irq()实现中断的初始化。

阅读(875) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~