3.6 德州仪器OMAP平台的内核和驱动

↘3.6.1 平台概述

OMAP(Open Multimedia Application Platform)是德州仪器(TI)系列的处理器,是基于Android系统的常用的几种处理器之一。OMAP表示开放式多媒体应用平台,是一种为满足新一代多媒体信息处理及第三代无线通信应用开发出来的高性能、高集成度嵌入式处理器。OMAP采用一种独特的双核结构,把控制性较强的ARM处理器和高性能低功耗的DSP核结合起来,是一种开放式的、可编程体系结构。TI独特的DSP/BIOS桥,允许开发者在RISC和DSP之间优化地分配任务。

OMAP44xx处理器(双ARM核+DSP核)及其外围结构如图3-3所示。

图3-3 OMAP44xx处理器(双ARM核+DSP核)及其外围结构

使用git下载omap内核的方法如下所示:

    $ git clone https://android.googlesource.com/kernel/omap

代码仓库中包含了不同的分支:

    $ git branch -r
      origin/HEAD -> origin/master
      origin/android-omap-3.0
      origin/android-omap-panda-3.0
      origin/android-omap-steelhead-3.0-ics-aah
      origin/android-omap-tuna-3.0
      origin/android-omap-tuna-3.0-ics-mrl
      origin/android-omap-tuna-3.0-jb-prel
      origin/android-omap-tuna-3.0-mr0
      origin/android-omap-tuna-3.0-mr0.l
      origin/linux-omap-3.0
      origin/master

几个以android开头的分支为Android系统的内核,panda、tuna都是基础板的名称。Nexus Galaxy系统的硬件就是基于tuna板的,可以看做是一种硬件上的“继承关系”。Nexus Galaxy系统使用了TI OMAP4460的处理器,PowerVR SGX540的图形芯片,TI TWL6040的集成芯片,这些都是OMAP系统的核心部分;而Wifi、蓝牙、传感器、摄像头的内容,则来自于处理器之外的芯片。

↘3.6.2 体系结构移植

OMAP处理器的Linux移植部分主要涉及以下3个目录。

·arch/arm/plat-omap/:OMAP平台部分移植。

·arch/arm/mach-omap2/:OMAP处理器部分的移植。

·arch/arm/plat-omap/include/:OMAP平台的头文件目录,其中包含两个子目录:mach和dspbridge。dspbridge目录表示DSP桥,用于ARM方面控制DSP。

mach-omap2/目录中的board-*.c文件为板级别的配置文件,其中board-tuna.c也就是Nexus Galaxy手机使用的板级配置,机器定义方面的内容如下所示:

    MACHINE_START(TUNA, "Tuna")
      .boot_params  = 0x80000l00,
      .reserve      = tuna_reserve,
      .map_io       = tuna_map_io,
      .init_early   = tuna_init_early,
      .init_irq     = gic_init_irq,
      .init_machine = tuna_init,
      .timer        = &omap_timer,
    MACHINE_END

tuna_init()为板级初始化函数,gic_init_irq()为中断初始化函数,在omap4-common.c中实现,omap_timer是内核系统定时器在timer-gp.c中的定义。

board-tuna.c中还包括了一些平台设备的定义,相关的文件还有board-tuna-*.c等。

↘3.6.3 驱动程序部分

德州仪器的OMAP系列处理器的驱动程序集中在几个重点目录中。

·driver/tty/serial/omap-serial.c:OMAP的串口驱动。

·drivers/video/omap2/:OMAP的帧缓冲和显示子系统的内容。

·drivers/media/video/:摄像头和视频输出方面。

·drivers/i2c/busses/i2c-omap.c:OMAP的I2C总线的驱动。

·drivers/input/keyboard/:键盘驱动。

·sound/soc/omap/:OMAP的音频驱动。

·driver/mmc/host/:OMAP的MMC/SD主控制器驱动。

·drivers/dsp/bridge:OMAP平台的DSP桥驱动。

·driver/gpu/:GPU图形处理器的驱动。

在运行时,驱动通常表现/dev/目录中的设备节点和sys文件系统中的文件。