基于PXAxxx平台的Andriod(Linux kernel 2.6.29)内核移植到Meego(linux kernel 2.6.35)过程三
2010-09-17 14:09
465 查看
移植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了。
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了。
相关文章推荐
- 基于PXAxxx平台的Andriod(Linux kernel 2.6.29)内核移植到Meego(linux kernel 2.6.35)过程四--device driver 移植---内核初始化优化宏
- 基于PXAxxx平台的Andriod(Linux kernel 2.6.29)内核移植到Meego(linux kernel 2.6.35)过程二
- 基于PXAxxx平台的Andriod(Linux kernel 2.6.29)内核移植到Meego(linux kernel 2.6.35)过程一
- 基于2.6.29内核的x86平台Android编译过程
- 基于Linux2.6.35内核的zImage启动过程研究
- 移植linux2.6.29内核+yaffs2文件系统过程
- 基于Linux-2.6.35内核的wifi驱动移植
- 【学习笔记】编译Linux内核(上)--编译基于x86平台的Linux内核的过程
- 基于S3C2410平台移植Linux 2.6内核指南
- 基于FL2440的Linux-2.6.35内核移植--触摸屏
- 基于ubuntu-2.6.35内核的SDIO-WiFi驱动移植使其支持WAP
- 基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程
- 基于S3C2440的Linux内核移植和yaffs2文件系统制作--Bootloader的执行过程
- 基于S3C2410平台移植Linux 2.6.14内核&驱动指南
- 基于AT91RM9200与LINUX2.6.26内核的嵌入式平台开发全过程
- 基于S3C2410平台的Linux 2.6.14内核+平台驱动的移植指南(最终版)
- 基于android内核的Busybox移植过程
- 基于ubuntu-2.6.35内核的SDIO-WiFi驱动移植
- 基于ubuntu-2.6.35内核的SDIO-WiFi驱动移植使其支持WAP
- 基于2.6.35内核的SDIO-WiFi驱动移植