1. MTK平台概述
1.1 MTK平台发展历程
联发科技(MediaTek,简称MTK)成立于1997年,是全球领先的半导体公司之一。其发展历程可划分为以下几个关键阶段:
| 阶段 | 时间 | 标志性事件 | 技术特征 |
|---|---|---|---|
| 起步期 | 1997–2004 | 光存储芯片组、DVD播放器芯片 | 数字多媒体芯片设计能力积累 |
| 功能机爆发期 | 2005–2012 | MT62xx系列、Turnkey Solution | 单芯片集成基带+多媒体,降低手机开发门槛 |
| 智能机转型期 | 2013–2018 | MT65xx/MT67xx系列、4G LTE | 多核ARM Cortex-A系列、Mali GPU、Android生态 |
| 高端化与5G期 | 2019–至今 | 天玑(Dimensity)系列、6nm/4nm制程 | 5G SoC、APU(AI处理器)、ISP升级、Sensor Hub |
关键洞察: MTK从功能机时代的"交钥匙"方案,到智能机时代的"一站式"SoC,再到5G时代的"全场景"计算平台,其软件生态的成熟度和驱动适配的标准化是支撑硬件迭代的核心竞争力。
1.2 MTK芯片架构特点
MTK SoC(System on Chip)采用异构多核与模块化总线设计,典型架构包含以下关键组件:
- CPU集群: 采用ARM DynamIQ或big.LITTLE架构,如Cortex-X3 + Cortex-A715 + Cortex-A510组合,通过CCI/CMN互联总线通信。
- GPU: 集成ARM Mali或Imagination PowerVR系列,支持Vulkan/OpenGL ES。
- APU / NPU: 独立AI加速单元,用于Sensor数据融合、场景识别等轻量级推理。
- ISP(图像信号处理器): 多路MIPI CSI接口,支持多摄像头并发与HDR处理。
- Sensor Hub / SCP: 专用低功耗协处理器(Cortex-M系列),负责Sensor数据轮询、FIFO管理、Always-On场景。
- 内存子系统: 支持LPDDR4x/LPDDR5,通过DRAMC控制器与系统总线连接。
- 外设总线: SPI、I2C、UART、I3C等,用于连接外部Sensor芯片。
开发提示: Sensor驱动开发重点关注 Sensor Hub / SCP 和 外设总线 两个模块。SCP负责Sensor数据的前端处理,外设总线决定Sensor芯片的物理通信方式。理解这两者的协同关系是移植Sensor驱动的关键。
1.3 MTK软件平台简介
MTK提供两套主要的软件平台,分别面向功能机和智能机市场:
1.3.1 MRE(MediaTek Runtime Environment)
- 定位: 轻量级嵌入式运行时环境,用于功能机、IoT设备。
- 特点: 无MMU(内存管理单元)支持,任务调度基于协作式或简单抢占式内核,API接口精简。
- Sensor支持: 通过MRE Sensor Service抽象层访问,驱动直接操作寄存器或通过SPI/I2C总线。
1.3.2 Android(基于Linux内核)
- 定位: 智能机、平板、智能汽车等高性能设备。
- 特点: 完整Linux内核(支持MMU、进程调度、内存管理),硬件抽象层(HAL),Treble架构。
- Sensor支持: 通过Linux内核驱动 → Sensor HAL → Android Framework 的层级结构实现。
| 对比维度 | MRE | Android(Linux内核) |
|---|---|---|
| 内核类型 | 轻量级RTOS / 无MMU | 完整Linux内核(MMU) |
| 驱动模型 | 直接寄存器操作 / 简单总线封装 | Linux设备驱动模型(platform/i2c/spi) |
| Sensor抽象层 | MRE Sensor Service | Sensor HAL + HIDL / AIDL |
| Buffer管理 | 静态分配 / 简单环形缓冲 | DMA-BUF / ION / 内核环形缓冲 |
| 适用场景 | 功能机、IoT、低功耗设备 | 智能机、高性能计算设备 |
注意: 本课程以 Android + Linux内核 平台为主,但MRE平台的驱动移植思路(如寄存器配置、时序适配)同样具有参考价值。在后续章节中,我们会专门对比两种平台的Buffer管理差异。
1.4 Sensor子系统在MTK平台中的位置
Sensor子系统是MTK平台中连接物理世界与应用层的关键桥梁。其层级结构如下:
- 物理层: 加速度计、陀螺仪、磁力计、环境光传感器(ALS)、接近传感器(PS)、气压计等,通过SPI/I2C/I3C总线与SoC连接。
- 内核驱动层: 位于Linux内核中,负责寄存器读写、中断处理、FIFO数据读取、电源管理。使用i2c_driver/spi_driver框架注册。
- Sensor HAL层: 实现Android定义的
sensors.h接口,将内核上报的原始数据转换为Android标准传感器事件(sensors_event_t)。 - Sensor Service层: Android系统服务,管理Sensor的激活、休眠、数据订阅,向应用层提供统一API。
- 应用层: 通过
SensorManagerAPI获取数据,用于计步、屏幕旋转、游戏控制等。
课程聚焦: 本课程的核心内容集中在内核驱动层和Sensor HAL层。你将学习如何为MTK平台编写Sensor内核驱动(包括设备树配置、中断注册、FIFO读取),以及如何适配Sensor HAL以实现数据上报。Buffer管理适配(如DMA-BUF、ION、环形缓冲)是贯穿这两层的核心技术难点。
1.5 本章小结
- MTK平台经历了从功能机到5G SoC的跨越式发展,其Turnkey模式和软件生态是成功的关键。
- MTK SoC采用异构多核 + 模块化总线架构,Sensor Hub / SCP是Sensor子系统的核心协处理器。
- MTK软件平台分为MRE(轻量级)和Android(Linux内核)两条路线,本课程以Android平台为主。
- Sensor子系统在MTK平台中位于物理层 → 内核驱动层 → Sensor HAL → Sensor Service → 应用层的完整链路中,驱动开发者的工作重点在内核驱动层和HAL层。