上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
6.1.2 OMAP适用于Android的Linux内核的结构
OMAP处理器的Zoom平台Linux内核和标准的Linux内核的差别主要体现在以下几个方面:
OMAP Zoom平台机器的移植
OMAP Zoom平台的驱动程序
Android中特有的驱动程序和组件
其中,OMAP Zoom机器的移植和OMAP Zoom平台的驱动程序是硬件相关的内容,而Android中特有的驱动程序和组件是Android中特有的部分,这种内容在Android平台的Linux内核中是基本相同的。
在Android开源工程的网站上,使用git工具得到goldfish内核的方式如下所示:
$ git clone git://android.git.kernel.org/kernel/common.git
编译goldfish内核的过程如下所示:
$ make ARCH=arm goldfish_defconfig .config $ make ARCH=arm CROSS_COMPILE={path}/arm-none-linux-gnueabi-
使用OMAP处理器的Zoom平台config文件的路径为arch/arm/configs目录中的zoom2_defconfig,这个文件关于体系结构方面的片断如下所示:
CONFIG_ARM=y CONFIG_MMU=y # # System Type # CONFIG_ARCH_OMAP=y
OMAP Zoom的config文件后面的内容是OMAP处理器使用的特性和板级类型,主要内容如下所示:
# # TI OMAP Implementations # CONFIG_ARCH_OMAP_OTG=y CONFIG_ARCH_OMAP3=y # # OMAP Feature Selections # CONFIG_ARCH_OMAP3_GP=y # CONFIG_ARCH_OMAP3_HS is not set # CONFIG_OMAP_DEBUG_POWERDOMAIN is not set # CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set CONFIG_OMAP_SMARTREFLEX=y # CONFIG_OMAP_SMARTREFLEX_TESTING is not set CONFIG_OMAP_RESET_CLOCKS=y CONFIG_OMAP_BOOT_TAG=y CONFIG_OMAP_BOOT_REASON=y # ...... 省略中间的内容 # # OMAP Board Type # CONFIG_MACH_OMAP_ZOOM2=y CONFIG_WIFI_CONTROL_FUNC=y # ......
在以上选项中,CONFIG_ARCH_OMAP3、CONFIG_MACH_OMAP_ZOOM2等几个选项选定了所使用机器的类型和详细的配置内容。
由于这里使用的是OMAP3430处理器,它使用了ARVv7体系结构的Context A8的CPU核心,因此后面的CPU部分的配置如下所示:
# # Processor Type # CONFIG_CPU_32=y CONFIG_CPU_32v6K=y CONFIG_CPU_V7=y CONFIG_CPU_32v7=y CONFIG_CPU_ABRT_EV7=y CONFIG_CPU_PABRT_IFAR=y CONFIG_CPU_CACHE_V7=y CONFIG_CPU_CACHE_VIPT=y CONFIG_CPU_COPY_V6=y CONFIG_CPU_TLB_V7=y CONFIG_CPU_HAS_ASID=y CONFIG_CPU_CP15=y CONFIG_CPU_CP15_MMU=y
由于ARVv7中的A系列是当前ARM功能最强的体系结构,因此在这里打开了ARM CPU所有的特性。