基于PXAxxx平台的Andriod(Linux kernel 2.6.29)内核移植到Meego(linux kernel 2.6.35)过程三

来源:互联网 发布:java科研管理系统源码 编辑:程序博客网 时间:2024/06/13 12:00

移植mach-mmp/下面的ttc_dkb.c 文件。

 

ttc_dkb.c 文件是整个平台init各种device drivers 入口。整个平台的device drivers 都是从这里开始init。

first, 看一下在mach-mmp目录树下的内容:

|-- aspenite.c

|-- avengers_lite.c

|-- clock.c---------------------------------(6)
|-- clock.h

|-- common.c
|-- common.h

|-- devices.c----------------------------(5)

|-- flint.c
|-- include--------------------------------(3,4,5,6,7,8)
|-- irq-mmp2.c
|-- irq-pxa168.c

|-- jasper.c
|-- Kconfig-------------------------(2)
|-- Makefile------------------------(1)
|-- Makefile.boot
|-- mmp2.c
|-- pxa168.c-------------------------(3)

|-- pxa910.c--------------------------(4)

|-- pxa910-squ.c

|-- resource
|-- tavorevb.c

|-- time.c-------------------------------(7)

|-- ttc_dkb.c---------------------------(8)

 

1,2 参考Android 平台对mach--mmp的Kconfig 和makefile的修改,来修改mach--mmp的kconfig 和Makefile。

下面我们看一下ttc_dkb.c 的2.6.35内核中初始化函数的内容。

 

MACHINE_START(TTC_DKB, "PXA910-based TTC_DKB Development Platform")
    .phys_io        = APB_PHYS_BASE,
    .boot_params    = 0x00000100,
    .io_pg_offst    = (APB_VIRT_BASE >> 18) & 0xfffc,
    .map_io        = pxa_map_io,
    .init_irq       = pxa910_init_irq,
    .timer          = &pxa910_timer,
    .init_machine   = ttc_dkb_init,
MACHINE_END

 

map_io 的入口是pxa_map_io函数 在common.c 文件中init。

init_irq 指向的函数是 pxa910_init_irq,其定义在pxa910.c和.h中。这个文件需要修改。主要定义的CPU interrupt,GPIO, Address等内容。

time.c 先不要改动。

 

然后进行编译,中间会出一些小错误,编译成功后,flash到版子上以后,可以启动,并可以看见trace的输出。

这说明板子的ARCH架构的移植基本上完成了。

 

 

然后看一下ttc_dkb.c的init函数:ttc_dkb_init(void)

static void __init ttc_dkb_init(void)
{
   printk(KERN_NOTICE "<ttc_dkb.c>ttc_dkb_init(void) init ->start/n");
    mfp_config(ARRAY_AND_SIZE(ttc_dkb_pin_config));

    /* on-chip devices */
    pxa910_add_uart(1);
    pxa910_add_uart(2);
    pxa910_add_uart(3);


    //你可以在这里按照一定的顺序添加驱动程序

    /* off-chip devices */
    //platform_add_devices(ARRAY_AND_SIZE(ttc_dkb_devices));
}

从这个函数开始初始化各种device drivers。

在ttc_dkb_init(void)中可以开始添加相关的设备驱动了。

我这里添加了pxa910_add_uart 2和3。 后面我们可以开始移植device driver了。