在嵌入式系统设计中,休眠与唤醒技术是优化电源管理、延长设备续航的关键。飞凌嵌入式基于全志T113-i处理器开发设计的OK113i-S开发板提供了两种休眠模式:freeze和mem,以满足不同应用场景下的功耗与恢复速度需求。本文将详细介绍如何让OK113i-S开发板进入休眠状态,并通过内部RTC实现定时唤醒。
一、休眠模式简介
- freeze模式:
- 此模式下,I/O设备被冻结,进入低功耗状态,处理器处于空闲。
- 唤醒速度快,但相比其他模式耗电量稍高。
- 实测在仅接串口线的情况下,5V供电时电流约为0.112A。
- mem模式:
- 系统将当前运行状态等数据存储在内存中,关闭硬盘和外设等。
- 内存需保持供电以维持数据,但整体功耗很低。
- 恢复时从内存读取数据,快速回到休眠前状态。
- 实测在仅接串口线的情况下,5V供电时电流约为0.076A。
二、查看与设置休眠模式
- 查看支持的休眠模式:
- 通过命令cat /sys/power/state可以查看OK113i-S开发板支持的休眠模式。
- 通过命令cat /sys/power/state可以查看OK113i-S开发板支持的休眠模式。
- 进入休眠模式:
- 使用echo freeze > /sys/power/state命令进入freeze模式。
- 使用echo freeze > /sys/power/state命令进入freeze模式。
- 使用echo mem > /sys/power/state命令进入mem模式。
三、通过RTC定时唤醒
注意:此功能需使用内部RTC,外部RTC不支持唤醒。
- 配置内核支持:
- 进入开发板的内核配置界面:
root@ubuntu: /home/forlinx/work/linux/OK113i-linux-sdk# ./build.sh menuconfig。
- 根据界面提示,选择并启用内部RTC相关功能。
1. 修改设备树文件:
- 打开设备树文件,启用内部RTC功能,并保存修改。
2. 编译与烧写:
- 保存配置后,进行编译。
- 编译成功后,将镜像打包并烧写到开发板。
3. 设置RTC定时唤醒:
- 通过串口终端连接开发板。
- 使用命令以下设置15秒后唤醒(时间可根据需要调整)。
echo "+15" > /sys/class/rtc/rtc0/wakealarm
- 注意,RTC定时是独立计时的,如果设置定时后在15秒内进入休眠,则不会立即触发唤醒。
echo mem > /sys/power/state
- 紧接着使用echo mem > /sys/power/state命令进入mem休眠模式(两条命令需紧凑输入,间隔过长可能无效)。
特别提示:
- 在未开启内部RTC时,外部RTC默认节点为rtc0。开启内部RTC后,外部RTC设备节点会变更为rtc1。
四、总结
通过上述步骤,我们成功在飞凌嵌入式T113-i开发板上实现了休眠及通过RTC定时唤醒的功能。不同主控平台板卡的具体操作可能有所差异,但整体思路相似。
工程师们可根据具体平台查阅相关资料,确定详细步骤。希望本文能为工程师们的项目开发提供有益参考。