现在的手机里有多少传感器?加速度计、陀螺仪、磁力计、气压计……每个都在吃电。再加上线性马达(Haptic)动不动就震动一下,功耗加起来真不能小看。
16.1 传感器的批处理模式(Batch Mode)
先说说传感器的批处理模式。这个功能,说白了就是让传感器自己攒数据,攒够了再一次性上报给AP。而不是每采集一个数据就唤醒一次系统。
为什么要这么做?因为每次唤醒AP的代价太大了。AP从休眠到唤醒,再到处理完数据重新休眠,这个过程要消耗几十毫瓦的功率。如果传感器每秒上报100次数据,那功耗就爆炸了。
批处理模式的工作原理是这样的:
- 传感器内部有个FIFO缓冲区,可以存几百到几千个数据点
- 传感器持续采集数据,但只在FIFO满了或者达到设定的时间阈值时才触发中断
- AP被唤醒后,一次性读取整个FIFO的数据
在MTK平台上,配置批处理模式主要涉及以下几个参数:
| 参数 | 说明 | 典型值 |
|---|---|---|
| batch_timeout | 批处理超时时间 | 100ms - 1000ms |
| fifo_size | FIFO缓冲区大小 | 128 - 1024 samples |
| flush_mode | 刷新模式(定时/满触发) | FIFO_FULL |