Goldfish是一种虚拟的ARM处理器,在android的仿真环境中使用。
在linux的内核中,Goldfish作为ARM体系结构的一种“机器”。在android的发展过程中,Goldfish内核的版本也从linux2.6.25升级到了linux2.6.29.这个处理器的linux内核和标准的linux内核的差别有以下几方面:
1、goldfish机器的移植。
2、goldfish一些虚拟设备的驱动程序。
3、android中特有的驱动程序和组件。
goldfish处理器有ARMv5和ARMv7两个版本,在一般情况下,使用ARMv5的版本即可。
从android开源工程的代码仓库中,使用git工具得到goldfish内核的方式为:
$ git clone git://android.git.kernel.org/kernel/common.git
在其linux源代码的根目录中,配置和编译goldfish内核的过程如下所示:
$make ARCH=arm goldfish_defconfig .config
$make ARCH=arm CROSS_COMPILE={path}/arm-none-linux-gnueabi-
其中,在CROSS_COMPILE=指定交叉编译工具的路径。
编译结果:
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处理器这类机器使用的配置宏。
gildfish_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` 处理器,其配置文件位于 `arch/arm/mach-goldfish`。该配置文件定义了多项特定于 Android 的配置选项,包括但不限于: - `CONFIG_ARCH_GOLDFISH=y`: 表示使用 goldfish ...
- `kernel/include/asm-arm/arch-goldfish` - Gold-Fish平台主要用于Google的G1手机,预计未来的G2手机也将采用这一平台。这些设备通常采用QualComm的MSM7201A芯片组,该芯片集成了高性能的ARM11应用处理器和ARM...
- **Gold-Fish平台**:在内核源码中,对于该平台的支持主要位于`kernel/arch/arm/mach-goldfish`目录下,同时相关的架构特定代码可以找到在`kernel/include/asm-arm/arch-goldfish`目录。 - **MSM7201A平台**:尽管...
- **基于ARM架构增加Gold-Fish平台**:针对ARM架构增加了Gold-Fish平台,相关文件位于`kernel/arch/arm/mach-goldfish`和`kernel/include/asm-arm/arch-goldfish`目录下。 - **Gold-Fish平台示例设备**:以G1手机为...
**Android Linux 内核概述** Android操作系统基于Linux内核构建,这使得它能够利用Linux内核的稳定性和安全性。Android早期版本(例如Android 1.0、1.5、1.6)分别采用了Linux 2.6.25、2.6.27和2.6.29等版本的核心...
第4章 Android的GoldFish内核和驱动 第5章 Android的MSM内核和驱动 第6章 Android的OMAP内核和驱动 第7章 显示系统 第8章 用户输入系统 第9章 传感器系统 第10章 音频系统 第11章 视频输出系统 第12章 照相机系统 第...
- 文章提到了几个内核相关的仓库,如 `kernel/common`, `kernel/goldfish`, `kernel/msm`, `kernel/omap`, `kernel/samsung`, 和 `kernel/tegra`。 - 这些仓库包含了特定硬件平台下的内核源代码,对于定制不同...
2.4.1 获取goldfish内核代码 47 2.4.2 获取msm内核代码 50 2.4.3 获取omap内核代码 50 2.4.4 编译Android的Linux内核 50 2.5 运行模拟器 52 2.5.1 Linux环境下运行模拟器的方法 53 ...
#### 一、Android内核概述 Android作为一个开源的操作系统,其核心基于Linux内核。Google所提供的内核源代码不仅仅包括标准Linux内核的部分,还包括了与虚拟处理器QEMU和模拟硬件平台Goldfish相关的代码。这部分...
2.4.1 获取goldfish内核代码 47 2.4.2 获取msm内核代码 50 2.4.3 获取omap内核代码 50 2.4.4 编译Android的Linux内核 50 2.5 运行模拟器 52 2.5.1 Linux环境下运行模拟器的方法 53 ...
- **键盘输入设备**:`goldfish_events.c` - **RTC设备**:`rtc-goldfish.c` - **USB Device设备**:`android_adb.c`,用于支持Android调试桥(ADB)工具。 - **SD卡设备**:`goldfish.c` 通过以上步骤,可以较为...
2.4.1 获取goldfish内核代码 47 2.4.2 获取msm内核代码 50 2.4.3 获取omap内核代码 50 2.4.4 编译Android的Linux内核 50 2.5 运行模拟器 52 2.5.1 Linux环境下运行模拟器的方法 53 ...
2.2.1 goldfish /37 2.2.2 yaffs2 /38 2.2.3 蓝牙 /39 2.2.4 调度器(scheduler)/39 2.2.5 android新增的驱动 /40 2.2.6 电源管理 /41 2.2.7 杂项 /41 2.3 android对linux内核的增强 /42 2.3.1 alarm(硬件时钟)/...
下载Android4.0及Goldfish(Android模拟器)源码的过程包括创建源码目录、初始化repo工具,并使用repo init命令准备访问Google的源码仓库。由于网络连接的原因,有时候可能需要指定不同的URL或者使用代理。 在初始...
2.2.1 goldfish /37 2.2.2 yaffs2 /38 2.2.3 蓝牙 /39 2.2.4 调度器(scheduler)/39 2.2.5 android新增的驱动 /40 2.2.6 电源管理 /41 2.2.7 杂项 /41 2.3 android对linux内核的增强 /42 2.3.1 alarm(硬件...
Android基于Linux version 2.6.23内核构建,特别引入了一个称为Goldfish的虚拟CPU,以及一系列特定的驱动代码,以满足Android运行所需的基础服务。这一层负责提供安全机制、内存管理、进程管理、网络堆栈等功能,...
此外,还添加了一个名为Goldfish的虚拟CPU以及Android运行所需的特定驱动代码。 2. **Android运行时库和其他库层**:包含了核心库和Dalvik虚拟机。核心库提供了Java语言核心库的大部分功能;Dalvik虚拟机则负责...