摘要:休眠模式是减少嵌入式系统功率消耗的一种运行模式。一般来说,系统处于休眠模式时,不执行任何功能,在一定时期内没有用户请求产生,因此它可以最大限度地减少其不必要的功耗。在文章中,硬件平台采用东南大学自主研发的SEP0611嵌入式微处理器,软件平台采用Linux2.6.32内核,设计并实现了电源管理驱动。在SEP0611电源管理驱动中,使系统进入休眠模式的代码负责保存芯片状态、自刷新DDR;使系统退出休眠模式的代码负责使得DDR退出自刷新状态、恢复芯片状态,以使系统返回正常模式。通过在测试板上让系统进入休眠并唤醒系统、同时测试系统休眠前后各路电路的电流值,从而验证了该驱动的准确性。
0 引言
系统休眠是嵌入式系统除关机外最省电的一种状态。休眠(Suspend, STR (Suspend To RAM )) ,又称为挂起或者挂起到内存,会将目前的运行状态数据存放在内存,并关闭硬盘、外设等设备,进入等待状态,此时除了内存仍然需要电力维持其数据,整机其余部分耗电很少。
恢复时处理器从内存读出数据,回到挂起前的状态,恢复速度较快。一般在电池无故障且充满电的情况下可以维持这种状态数天之久。
1 SEP0611和电源管理单元硬件设计
SEP0611是东南大学自主研发的一款基于UniCore32内核的32位高性能、低功耗RISC微处理器,是定位于手持播放设备、卫星导航产品的高性能处理器。主要分为五个部分:系统与时钟控制、外设接口、多媒体系统、GPS系统和存储系统。系统与时钟控制部分包含了电源管理单元(Power Management Unit, PMU)的设计。
PMU包括时钟控制和功耗控制两部分。功耗控制主要负责在各个工作模式下的切换,进入低功耗模式后的唤醒,以及系统的复位控制。系统工作模式主要分为三种:正常工作模式、挂起模式、休眠模式。
2 Linux APM技术
图1 Linux APM技术架构图
图1是APM技术在Linux中的架构图。用户通过用户态的APM接口或策略向BIOS申请休眠请求,BIOS设备接收到用户层的休眠请求后会调用内核低功耗层的接口函数,从而实现系统进入休眠的一系列操作;在接收到唤醒信号后内核低功耗层会执行唤醒操作,与此同时低功耗层也会调用外设驱动的电源管理接口让设备跟随系统实现唤醒。SEP0611无BIOS,系统唤醒后会回到bootloader执行。