- Android板级支持与硬件相关子系统
- 韩超等
- 910字
- 2020-08-28 12:21:34
3.5 三星平台的内核和驱动
↘3.5.1 平台概述
三星(SAMSUNG)的平台处理器也在Android手机中有所使用。此处的三星平台一般专指三星处理器的平台,而不是三星公司所出的手机。
Exynos由两个希腊语单词组合而来:Exypnos和Prasinos,分别代表“智能”与“环保”之意。三星公司Cortex A8核心的处理器被称为Hummingbird(蜂鸟),它使用PowerVR VXD370作为视频硬件解码单元,PowerVR SGX540作为图形处理器,支持OPENGL ES2.0/1.1和OPENVG。S5PC110用于智能手机。就是Nexux S手机所使用的S5PC110处理器也被称为Exynos3110。
Exynos3110处理器和外围结构如图3-2所示。
图3-2 Exynos3110处理器和外围结构
Exynos3110使用的内核工程为kernel/samsung,使用git取得方法如下所示:
$ git clone https://android.googlesource.com/kernel/samsung
三星herring平台可以进行如下选择和配置:
$ git checkout origin/android-samsung-2.6.35-gingerbread $ make ARCH=arm herring_defconfig .config
使用arch/arm/configs/目录中的herring_defconfig作为其配置文件,也就是三星平台的Nexux S手机的配置文件。
Exynos内核工程实际上对应于Exynos4x和Exynos5x系列的处理器,使用git取得和选择方法如下所示:
$ git clone https://android.googlesource.com/kernel/exynos $ git checkout origin/android-exynos-3.4
对Exynos4x和Exynos5x系列的处理器进行配置的方法分别如下所示:
$ make ARCH=arm exynos4_defconfig .config $ make ARCH=arm exynos5_defconfig .config
↘3.5.2 体系结构移植
以三星herring平台为例,体系结构移植部分主要包括几个目录。
·arch/arm/plat-s5p/:平台共用部分,CPU、中断、定时器、电源管理。
·arch/arm/mach-s5pv210/:板级部分,mach-herring.c为移植核心文件。
·arch/arm/plat-samsung/:三星的全局设备。
mach-herring.c文件中的机器定义部分如下所示:
MACHINE_START(HERRING, "herring") .phys_io = S3C_PA_UART & 0xfff00000, .io_pg_offst = (((u32)S3C_VA_UART) >> 18) & 0xfffc, .boot_params = S5P_PA_SDRAM + 0x100, .fixup = herring_fixup, .init_irq = s5pv210_init_irq, .map_io = herring_map_io, .init_machine = herring_machine_init, .timer = &s5p_systimer, MACHINE_END
以上是通过MACHINE_START宏所定义,针对一个ARM平台的通用的移植格式,其中定义了地址和中断,并由herring_machine_init()函数执行了主要初始化工作。
arch/arm/plat-s5p/目录中的hr-time-rtc.c文件定义了内核定时器和实时时钟的部分,s5p_systimer就是内核移植所需要使用的定时器。
此外,drivers/serial/目录中的samsung.c和s5pv210.c是系列处理器的串口驱动。
↘3.5.3 驱动程序部分
三星系列处理器的驱动程序集中在几个重点目录中。
·drivers/gpu/pvr:PowerVR SGX图形处理器的支持。
·drivers/video/samsung/:三星的Framebuffer驱动,建立s3cfb设备。
·drivers/mtd/onenand/:One Nand Flash存储器驱动,建立s5pc110-onenand设备。
·drivers/media/video/samsung/fimc/:三星Video视频输出驱动,建立s3c-fimc.N设备。drivers/media/video/samsung/jpeg_v2/:三星的JPEG驱动,建立s3c-jpg设备。
·drivers/media/video/samsung/mfc50/:三星的Multi Format Codec驱动,建立s3c-mfc设备。
·drivers/misc/samsung_modemctl/:三星的Modem控制驱动。
·sound/soc/s3c24xx/:三星处理器的音频驱动,建立soc-audio.0设备。
·sound/soc/codecs/中的几个文件:三星音频Codec的处理部分。
根据Linux的sys文件系统,其中很多设备在/sys/bus/platform/devices/目录中根据名称找到。三星处理器的内部设备常常以s3c或者s5等字符串为前缀。例如,s3c2410-wdt为看门狗,s3c2410-rtc为实时时钟,s3c2440-i2c.N为各个I2C的控制器,s3c24xx-pwm.N为各个PWM,s5pv210-uart.N为各个串口。