Android Goldfish详解之一
来源:互联网 发布:数据库入侵痕迹 编辑:程序博客网 时间:2024/06/07 06:39
一. Goldfish介绍
Goldfish是一种虚拟的ARM处理器,在Android的仿真环境中使用。Android模拟器通过运行它来运行arm926t指令集(arm926t属于armv5构架,goldfish处理器有ARMv5和ARMv7两个版本,在一般情况下,使用ARMv5的版本即可)。
编译生成的linux内核镜像在android的模拟器中使用。启动模拟器时,Linux Kernel镜像默认使用:prebuilt/android-arm/kernel目录下的kernel-qemu文件。
在linux的内核中,Goldfish作为ARM体系结构的一种“mach”,它的核心内容存放在:arch/arm/mach-goldfish。
goldfish_defconfig 位置:kernel/arch/arm/configs
在android的发展过程中,Goldfish内核的版本也从linux2.6.25升级到了linux2.6.29.这个处理器的linux内核和标准的linux内核的差别有以下几方面:
1. goldfish机器的移植。
2. goldfish一些虚拟设备的驱动程序。
3. android中特有的驱动程序和组件。
二. 编译Goldfish内核
从android开源工程的代码仓库中,使用git工具得到goldfish内核的方式为:
$ git clone git://android.git.kernel.org/kernel/common.git
在其linux源代码的根目录中,配置和编译goldfish内核的过程如下所示:
- LD vmlinux
- SYSMAP system.map
- SYSMAP .tmp_system.map
- OBJCOPY arch/arm/boot/Image
- Kernel: arch/arm/boot/Image is ready
- AS arch/arm/boot/compressed/head.o
- GZIP arch/arm/boot/compressed/piggy.gz
- AS arch/arm/boot/compressed/piggy.o
- CC arch/arm/boot/compressed/misc.o
- LD arch/arm/boot/compressed/vmlinux
- OBJCONPY arch/arm/boot/zImage
- Kernel: arch/arm/boot/zImage is ready
vmlinux是linux进行编译和连接之后生成的Elf格式的文件,Image是未经过压缩的二进制文件,piggy是一个解压缩程序,zImage是解压缩程序和压缩内核的组合。
在android源代码的根目录中vmlinux和zImage分别对应android代码prebuilt中的预编译的arm内核。
使用zImage,替换prebuilt中的prebuilt/android-arm/目录中的goldfish_defconfig,这个文件的一些片断如下所示:
- CONFIG_ARM=y
- #
- # System Type
- #
- CONFIG_ARCH_GOLDFISH=y
- #
- # Goldfish options
- #
- CONFIG_MACH_GOLDFISH=y
- # CONFIG_MACH_GOLDFISH_ARMV7 is not set
由于GoldFish是arm处理器,因此CONFIG_ARM宏需要被使能,CONFIG_ARCH_GOLDFISH和CONFIG_MACH_GOLDFISH宏是GoldFish处理器这类机器使用的配置宏。
goldfish_defconfig中的几个与android系统相关的宏如下:
- # android
- #
- CONFIG_ANDROID=y
- CONFIG_ANDROID_BUNDER_IPC=y #binder ipc驱动程序
- CONFIG_ANDROID_LOGGER=y #log记录器驱动程序
- # CONFIG_ANDROID_RAM_CONSOLE is not set
- CONFIG_ANDROID_TIMED_OUTPUT=y #定时输出驱动程序框架
- CONFIG_ANDROID_LOW_MEMORY_KILLER=y
- CONFIG_ANDROID_PMEM=y #物理内存驱动程序
- CONFIG_ASHMEM=y #匿名共享内存驱动程序
- CONFIG_RTC_INTF_ALARM=y
- CONFIG_HAS_WAKELOCK=y 电源管理相关的部分wakelock和earlysuspend
- CONFIG_HAS_EARLYSUSPEND=y
- CONFIG_WAKELOCK=y
- CONFIG_WAKELOCK_STAT=y
- CONFIG_USER_WAKELOCK=y
- CONFIG_EARLYSUSPEND=y
goldfish_defconfig配置文件中,另外有一个宏是处理器虚拟设备的“驱动程序”,其内容如下:
- CONFIG_MTD_GOLDFISH_NAND=y
- CONFIG_KEYBOARD_GOLDFISH_EVENTS=y
- CONFIG_GOLDFISH_TTY=y
- CONFIG_BATTERY_GOLDFISH=y
- CONFIG_FB_GOLDFISH=y
- CONFIG_MMC_GOLDFISH=y
- CONFIG_RTC_DRV_GOLDFISH=y
在goldfish处理器的各个配置选项中,体系结构和goldfish的虚拟驱动程序基于标准linux的内容的驱动程序框架,但是这些设备在不同的硬件平台的移植方式不同;android专用的驱动程序是android中特有的内容,非linux标准,但是和硬件平台无关。
- Android Goldfish详解之一
- Android Goldfish详解之二
- Android之Goldfish
- Android之Goldfish
- android之Goldfish介绍
- Android之Goldfish
- android goldfish 内核编译
- 编译Android goldfish内核源码
- 编译Android模拟器内核goldfish
- Android之Qemu和Goldfish
- android动画详解之一
- Android的GoldFish内核与ARM处理器
- git checkout -b android-goldfish-2.6.29
- Ubuntu12.04下载android-goldfish-2.6.29
- android kernel goldfish 3.4.0 编译
- 编译并测试 android goldfish kernel x86
- Mac下编译Android以及goldfish内核
- Android布局详解之一:FrameLayout
- 什么是经验
- 网络编程
- Spring MVC 教程,快速入门,深入分析
- oracle数据导出方式汇总
- android 画图之setXfermode
- Android Goldfish详解之一
- 焦点图
- linux异常系列:【如何消除vi中的^M】
- 如何编写 Nagios 插件
- replace(str, "union", "union", 1, -1, 1)
- Android之Bluetooth
- Ipad1老设备滑动卡顿解决方案
- android adb启动失败问题 adb server is out of date. killing... ADB server didn't ACK * failed to start daem
- android pbap client