Android系统级深入开发
上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所有的特性。