MTK平台Sensor驱动在SCP与Kernel的核心差异:SCP面向低功耗/持续采集/本地处理,Kernel面向通用控制/兼容IIO/AP直连,低功耗场景优先SCP,简单传感器可用Kernel直驱。
 
一、核心定位与运行环境
 
- SCP驱动:运行在Cortex‑M核SCP,FreeRTOS+CHRE,独立于AP,负责低功耗数据采集、本地处理(滤波/校准/计步),AP休眠时自主工作。

- Kernel驱动:运行在AP侧Linux内核,依赖IIO子系统,适配通用传感器,AP唤醒时工作,适合简单传感器或快速适配场景。
 
二、通信与交互方式
 
- SCP驱动:通过IPC与AP通信,指令经hf_manager透传,数据走共享内存,SCP自主控制传感器,仅上报结果,低功耗。

- Kernel驱动:HAL通过 /dev/hf_manager ioctl控制,IIO buffer上报数据,AP直接控制传感器,响应快但功耗较高。
 
三、驱动架构与代码路径
 
- SCP驱动: vendor/mediatek/proprietary/tinysys/freertos/source/middleware/contexthub/MEMS_Driver ;驱动为nanohub app,CHRE事件驱动,管理中断与电源 。

- Kernel驱动: kernel/drivers/iio/sensor/mtk‑sensor/ ;遵循Linux IIO框架, mtk‑sensor.ko + i2c‑mt65xx.ko ,通过sysfs配置, hf_manager 做控制代理。
 
四、功耗与实时性
 
- SCP驱动:SCP独立低功耗运行,AP可深度休眠,功耗低;FreeRTOS+CHRE,中断响应快,实时性强。

- Kernel驱动:依赖AP调度,频繁中断唤醒AP,功耗高;内核调度延迟,实时性一般。
 
五、功能与适用场景
 
- SCP驱动:支持持续采集、本地算法(计步/手势)、AP休眠工作,适合加速度计/陀螺仪/计步器等。

- Kernel驱动:适合光感/距离等简单传感器,开发快、适配成本低,适合快速验证。
 
六、调试与工具链
 
- SCP驱动:用 scp‑debugger 、CHRE日志、 tinysys‑scp.ko 调试,需交叉编译,依赖SCP固件。

- Kernel驱动:用 dmesg 、sysfs节点、 iio_info 、 sensors‑hal‑test ,调试更便捷。
 
七、控制流与数据流对比
 
- SCP驱动:控制流APP→Framework→HAL→hf_manager→IPC→SCP→传感器;数据流传感器→SCP→共享内存→hf_manager→HAL→Framework→APP,SCP本地处理数据。

- Kernel驱动:控制流APP→Framework→HAL→hf_manager→Kernel→传感器;数据流传感器→Kernel IIO buffer→HAL→Framework→APP,Kernel仅转发数据。
 
八、选型建议
 
- 选SCP驱动:需低功耗、持续采集、本地算法、AP休眠工作的场景。

- 选Kernel驱动:简单传感器、快速适配、开发调试效率优先的场景。

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐