android内核分析 j,Android内核的简单分析-Fun言

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[2.6.29]内核所做的补丁等等,例如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

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

以下为Android内核启动信息:

Uncompressing Linux………………………………………………………………………… done, booting the kernel.

emulator: emulator window was out of view and was recentred

Linux version 2.6.25-00350-g40fff9a (android-build@apa27.mtv.corp.google.com) (gcc version 4.2.1) #1 Wed Jul 23 18:10:44 PDT 2008

CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=00003137

Machine: Goldfish

Memory policy: ECC disabled, Data cache writeback

CPU0: D VIVT write-through cache

CPU0: I cache: 4096 bytes, associativity 4, 32 byte lines, 32 sets

CPU0: D cache: 65536 bytes, associativity 4, 32 byte lines, 512 sets

Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 24384

Kernel command line: qemu=1 console=ttyS0 android.checkjni=1 android.qemud=ttyS1 android.ndns=2

Unknown boot option `android.checkjni=1′: ignoring

Unknown boot option `android.qemud=ttyS1′: ignoring

Unknown boot option `android.ndns=2′: ignoring

PID hash table entries: 512 (order: 9, 2048 bytes)

Console: colour dummy device 80×30

Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)

Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)

Memory: 96MB = 96MB total

Memory: 94268KB available (2380K code, 445K data, 100K init)

Mount-cache hash table entries: 512

CPU: Testing write buffer coherency: ok

net_namespace: 152 bytes

android_power_init

android_power_init done

NET: Registered protocol family 16

NET: Registered protocol family 2

IP route cache hash table entries: 1024 (order: 0, 4096 bytes)

TCP established hash table entries: 4096 (order: 3, 32768 bytes)

TCP bind hash table entries: 4096 (order: 2, 16384 bytes)

TCP: Hash tables configured (established 4096 bind 4096)

TCP reno registered

checking if image is initramfs… it is

Freeing initrd memory: 136K

goldfish_new_pdev goldfish_interrupt_controller at ff000000 irq -1

goldfish_new_pdev goldfish_device_bus at ff001000 irq 1

goldfish_new_pdev goldfish_timer at ff003000 irq 3

goldfish_new_pdev goldfish_rtc at ff010000 irq 10

goldfish_new_pdev goldfish_tty at ff002000 irq 4

goldfish_new_pdev goldfish_tty at ff011000 irq 11

goldfish_new_pdev smc91x at ff012000 irq 12

goldfish_new_pdev goldfish_fb at ff013000 irq 13

goldfish_new_pdev goldfish_audio at ff004000 irq 14

goldfish_new_pdev goldfish_memlog at ff006000 irq -1

goldfish_new_pdev goldfish-battery at ff014000 irq 15

goldfish_new_pdev goldfish_events at ff015000 irq 16

goldfish_new_pdev goldfish_nand at ff016000 irq -1

goldfish_new_pdev goldfish-switch at ff017000 irq 17

goldfish_new_pdev goldfish-switch at ff018000 irq 18

goldfish_pdev_worker registered goldfish-switch

goldfish_pdev_worker registered goldfish-switch

goldfish_pdev_worker registered goldfish_nand

goldfish_pdev_worker registered goldfish_events

goldfish_pdev_worker registered goldfish-battery

goldfish_pdev_worker registered goldfish_memlog

goldfish_audio_probe

goldfish_pdev_worker registered goldfish_audio

goldfish_pdev_worker registered goldfish_fb

goldfish_pdev_worker registered smc91x

goldfish_pdev_worker registered goldfish_tty

goldfish_pdev_worker registered goldfish_tty

goldfish_pdev_worker registered goldfish_rtc

goldfish_pdev_worker registered goldfish_timer

goldfish_pdev_worker registered goldfish_device_bus

goldfish_pdev_worker registered goldfish_interrupt_controller

ashmem: initialized

Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

yaffs Jul 23 2008 18:10:35 Installing.

io scheduler noop registered

io scheduler anticipatory registered (default)

io scheduler deadline registered

io scheduler cfq registered

allocating frame buffer 320 * 480, got ffc10000

Console: switching to colour frame buffer device 40×30

console [ttyS0] enabled

brd: module loaded

loop: module loaded

nbd: registered device at major 43

smc91x.c: v1.1, sep 22 2004 by Nicolas Pitre

No IRQF_TRIGGER set_type function for IRQ 12 (goldfish)

eth0: SMC91C11xFD (rev 1) at c6800000 IRQ 12 [nowait]

eth0: Ethernet addr: 52:54:00:12:34:56

goldfish nand dev0: size 4000000, page 2048, extra 64, erase 131072

goldfish nand dev1: size 4000000, page 2048, extra 64, erase 131072

goldfish nand dev2: size 4000000, page 2048, extra 64, erase 131072

mice: PS/2 mouse device common for all mice

*** events probe ***

events_probe() addr=0xc6804000 irq=16

events_probe() keymap=qwerty2

input: qwerty2 as /class/input/input0

goldfish_rtc goldfish_rtc: rtc core: registered goldfish_rtc as rtc0

logger: created 64K log ‘log_main’

logger: created 64K log ‘log_events’

logger: created 64K log ‘log_radio’

IPv4 over IPv4 tunneling driver

GRE over IPv4 tunneling driver

TCP cubic registered

NET: Registered protocol family 1

NET: Registered protocol family 17

RPC: Registered udp transport module.

RPC: Registered tcp transport module.

802.1Q VLAN Support v1.8 Ben Greear

All bugs added by David S. Miller

VFP support v0.3: implementor 41 architecture 1 part 10 variant 9 rev 0

goldfish_rtc goldfish_rtc: setting system clock to 2009-01-02 07:43:01 UTC (1230882181)

Freeing init memory: 100K

init: cannot open ‘/initlogo.rle’

yaffs: dev is 32505856 name is “mtdblock0”

yaffs: passed flags “”

yaffs: Attempting MTD mount on 31.0, “mtdblock0”

yaffs: dev is 32505857 name is “mtdblock1”

yaffs: passed flags “”

yaffs: Attempting MTD mount on 31.1, “mtdblock1”

yaffs: dev is 32505858 name is “mtdblock2”

yaffs: passed flags “”

yaffs: Attempting MTD mount on 31.2, “mtdblock2”

sh: can’t access tty; job control turned off

# init: cannot find ‘/system/bin/playmp3’, disabling ‘bootsound’

eth0: link up

warning: `rild’ uses 32-bit capabilities (legacy support in use)

init: sys_prop: mis-match msg size recieved: -1 expected: 128

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值