系统休眠唤醒技术是电源管理中的关键技术。它允许系统在闲置时将功耗降至最低,将外部设备、芯片内部IP和时钟置于低功耗状态或完全关闭电源状态,以极大地延长续航时间。此外,在用户需要时,系统也能够迅速恢复电源、时钟、芯片内部IP以及外部设备的工作状态,确保用户的使用体验不受干扰。
飞凌嵌入式OK113i-S开发板支持两种休眠方式:freeze和mem。这两种方式可以通过/sys/power/state文件节点进行操作,用户可以通过在该文件节点写入freeze或mem来触发相应的休眠状态。
在进行休眠之前,系统会配置唤醒源。一旦系统进入休眠状态,可以通过这些唤醒源(如按键、RTC等)在需要时唤醒系统。这种设计允许用户根据需要选择何时以及通过何种方式快速唤醒系统,实现了功耗最小化和快速恢复的平衡。这一机制使得系统在休眠状态下能够极大地减少功耗,同时保留了用户在唤醒后迅速使用系统的便利性。
本篇内容小编会为大家介绍如何让飞凌嵌入式OK113i-S开发板进入休眠模式,以及如何通过RTC时钟实现定时唤醒。
freeze
冻结I/O设备,将它们置于低功耗状态,使处理器进入空闲状态,唤醒最快,耗电比其它方式高。实测OK113i-S开发板在只接串口线的情况下5V供电,电流约为0.112A。
mem
挂起到内存,计算机将目前的运行状态等数据存放在内存,关闭硬盘、外设等设备,进入等待状态。此时内存仍然需要电力维持其数据,但整机耗电很少。恢复时计算机从内存读出数据,回到挂起前的状态,恢复速度较快。实测OK113i-S开发板在只接串口线情况下5V供电,电流约为0.076A。
(1)cat /sys/power/state可以看到OK113i-S开发板支持的模式有哪些:
(2)echo freeze > /sys/power/state 进入freeze模式:
(3)echo mem > /sys/power/state 进入mem模式:
注意:此处需要使用内部RTC,外部RTC不支持唤醒功能,后面我们还会提及。
进入开发板的内核配置:
root@ubuntu: /home/forlinx/work/linux/OK113i-linux-sdk# ./build.sh menuconfig
根据下图框选进行功能选择:
配置完成后保存,然后修改设备树文件,打开内部RTC功能。
保存后进行编译:
编译成功后打包成镜像,烧写完成后,我们在串口终端进行测试。
进入串口终端进行测试:
echo “+15”> /sys/class/rtc/rtc0/wakealarm
此处为15秒定时,可自由设置时间,命令执行后就会生效,RTC会单独计时,如果是15秒后才进入休眠,不会触发唤醒。(注意此处需要使用内部RTC,外部RTC不支持唤醒功能)
echo mem > /sys/power/state
(这里两条指令输入时要紧凑,两条指令间,间隔太长就无效了)
(这里需要注意,我们在未打开内部RTC时,我们的外部RTC默认节点是rtc0,修改后外部rtc设备节点会变更成rtc1。)
到这里,我们就完成了在飞凌嵌入式OK113i-S开发板上实现休眠以及通过RTC定时唤醒的全部操作了,当然,不同的主控平台板卡的具体操作会有差异,但是整体思路是一样的,具体可以根据相对应的平台查看相关资料来确定具体步骤,希望本文提供的方法能够对屏幕前的工程师朋友们的项目开发有所帮助。