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标准,但是和硬件平台无关。
分享到:
相关推荐
GoogleSource 下载的goldfish 2.6.29内核源码,亲测可编译。为下载速度慢的同学贡献一下,顺便赚点下载积分,谢谢~由于上传大小限制,里面是一个文本,文本里面是下载地址。
GoogleSource 下载的 4.4 goldfish内核源码,为下载速度慢的同学贡献一下,顺便赚点下载积分,谢谢~
GoogleSource 下载的goldfish 3.4内核源码,亲测可编译。为下载速度慢的同学贡献一下,顺便赚点下载积分,谢谢~由于上传大小限制,里面是一个文本,文本里面是下载地址。
goldfish-android-goldfish-2.6.29 goldfish-android-goldfish-2.6.29
这是从Google官网下载的Android内核源码,版本为goldfish3.4,对于Android4.4及以上的版本无法编译goldfish2.6版本的,因此需要使用goldfish3.4,因为上传资源大小的限制,用winrar分成了两部分上传,下载这两个部分...
GoogleSource 下载的 4.14 goldfish内核源码,为下载速度慢的同学贡献一下,顺便赚点下载积分,谢谢~
Android系统内核goldfish 3.4版,提供给不能下载的朋友们。
如何下载并编译Android4.0内核源码goldfish(图文)
GoogleSource 下载的 3.18 goldfish内核源码,为下载速度慢的同学贡献一下,顺便赚点下载积分,谢谢~
android / kernel / goldfish / refs/heads/android-goldfish-3.4
GoogleSource 下载的goldfish 3.18内核源码,亲测可编译。为下载速度慢的同学贡献一下,顺便赚点下载积分,谢谢~
android / kernel / goldfish.git / refs/heads/android-goldfish-2.6.29
部署taingdroid,获得YAFFS2 XATTR内核支持,goldfish-android-goldfish-2.6.29.tar.gz
这是从Google官网下载的Android内核源码,版本为goldfish3.4,对于Android4.4及以上的版本无法编译goldfish2.6版本的,因此需要使用goldfish3.4,因为上传资源大小的限制,用winrar分成了两部分上传,下载这两个部分...
GoogleSource 下载的goldfish 3.10内核源码,亲测可编译。为下载速度慢的同学贡献一下,顺便赚点下载积分,谢谢~由于上传大小限制,里面是一个文本,文本里面是下载地址。
android ice cream sandwich kernel goldfish
Goldfish
Goldfish Aquarium v1.0 金鱼水族馆 超级逼真的金鱼水族箱荧幕保护程式。 注:要执行 Goldfish Aquarium,电脑配备最好强一点,尤其是显示卡....。 注册序号:3qs3e-2unzs-nis3w-nuytn
godfish 一天到晚游来游去的两条鱼
全书分为19章,依次讲解驱动移植的必要性,何为hal层深入分析,goldfish、msm、map内核和驱动解析,显示系统、输入系统、振动器系统、音频系统、视频输出系统的驱动,openmax多媒体、多媒体插件框架,传感器、照相机...