关于mini2440的开发板的移植,第一步是要多读两遍S3C2440.pdf,以及mini2440原理图.pdf。
在移植设备驱动的时候,更要针对相应的spec来研究。
首先我们从bootloader开始,可以从我前段时间s3c2440学习系列。
开始看起:
在bootloader里面有一个match-type的问题
MACH_TYPE = 782
kernel include/asm/mach-types.h
uboot include/asm_arm/mach-types.h
MACH_TYPE_MINI2440 782
vivi include/platform/smdk2440.h MACH_TYPE 782
要全部对应起来
下面部分是copy网络上的介绍(转过来的)
<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} -->
关于 Android 内核与主线 Linux 内核不同的地方,夜猫子大侠已经做了分析,分析的比较到位,现在拷贝在这里,标注红色的为与硬件相关的,标注蓝色的是硬件无关的,黑色的部分是笔者目前还不清楚的,有待研究:
( 1 )基于 ARM 架构增加 Gold-Fish 平台 , 相应增加的目录如下 :
kernel/arch/arm/mach-goldfish
kernel/include/asm-arm/arch-goldfish
( 2 )增加了 yaffs2 FLASH 文件系统 , 相应增加的目录为 :
kernel/fs/yaffs2
实际上, Android 包经过编译后生成的 system.img 和 ramdisk.img 文件就是 yaffs2 格式的包 .
3. 增加了 Android 的相关 Driver, 相应目录为 :
kernel/drivers/android
主要分为 :
Android IPC 系统 : Binder (binder.c)
Android 日志系统 : Logger (logger.c)
Android 电源管理 : Power (power.c)
Android 闹钟管理 : Alarm (alarm.c)
Android 内存控制台 : Ram_console (ram_console.c)
Android 时钟控制的 gpio: Timed_gpio (timed_gpio.c)
4. 增加了 switch 处理 , 相应的目录为 :
kernel/drivers/switch/
5. 增加了一种新的共享内存处理方式 , 相应增加的文件为 :
kernel/mm/ashmem.c
6. 其他为 Linux-2.6.25 内核所做的补丁等等,例如 BlueTooth, 在此不做详细分析
另外 GoldFish 平台相关的驱动文件如下 :
1. 字符输出设备 :
kernel/drivers/char/goldfish_tty.c
2. 图象显示设备 : (Frame Buffer)
kernel/drivers/video/goldfishfb.c
3. 键盘输入设备 :
kernel/drivers/input/keyboard/goldfish_events.c
4. RTC 设备 : (Real Time Clock)
kernel/drivers/rtc/rtc-goldfish.c
5. USB Device 设备 :
kernel/drivers/usb/gadget/android_adb.c
这里只要用了支持 Android 的 ADB 工具,用于调试
6. SD 卡设备 :
kernel/drivers/mmc/host/goldfish.c
7. FLASH 设备 :
kernel/drivers/mtd/devices/goldfish_nand.c
kernel/drivers/mtd/devices/goldfish_nand_reg.h
8. LED 设备 :
kernel/drivers/leds/ledtrig-sleep.c
9. 电源设备 :
kernel/drivers/power/goldfish_battery.c
10. 音频设备 :
kernel/arch/arm/mach-goldfish/audio.c
11. 电源管理 :
kernel/arch/arm/mach-goldfish/pm.c
12. 时钟管理 :
kernel/arch/arm/mach-goldfish/timer.c