一种基于无嵌入式控制器龙芯处理器平台的待机方法技术

技术编号:11942094 阅读:98 留言:0更新日期:2015-08-26 13:13
本发明专利技术公开了一种基于龙芯处理器平台的待机方法,其过程包括以下步骤:冻结进程;外设停止工作;关闭外设电源;关闭辅核;保存主核执行上下文;主核执行操作通过设置芯片组进入ACPI S3进入待机状态;清除ACPI事件并恢复电源指示灯状态;恢复主核执行上下文;开启辅核;开启外设电源;外设开始工作;恢复进程。该待机方法可使用于无EC的台式机或者服务器平台,不需要依赖EC,可以减少设计复杂度并且节约成本,使得待机方法可以得到更广泛的应用。

【技术实现步骤摘要】

本专利技术涉及一种计算机的待机方法,特别是涉及。
技术介绍
待机是一种电源管理方法,它让系统在空闲时候进入一种可以快速唤醒的睡眠状态,功耗很低。待机也叫Suspend To RAM(挂起到内存,简称STR),对应ACPI (高级电源配置接口)S3状态。其特征如下:CPU和外设全部断电,内存供电但处于低耗能的自刷新状态(内容保持不变),功耗为开机状态的I %左右,唤醒时间5?8秒。可以通过电源按键唤醒。中国专利CN102541246B公开了一种基于龙芯处理器平台的待机方法,由于龙芯平台与X86平台有着较大的差异,其B1S和操作系统不是ACPI感知的。该专利设计利用嵌入式控制器(EC)来管控电源。而在实际应用中,通常只有笔记本电脑会配备EC,台式机和服务器不存在EC。因此如何不依赖EC在龙芯处理器平台实现待机功能是需要解决的问题。
技术实现思路
针对上述现有技术的不足,本专利技术的目的是提供,不依赖EC在龙芯处理器平台实现待机功能。本专利技术的技术方案是这样的:,包括以下步骤:I)冻结进程;2)外设停止工作;3)关闭外设电源;4)关闭辅核;5)保存主核执行上下文;1.调整堆栈指针,留出一个栈帧来保存上下文;i1.将I?7号通用寄存器保存到栈帧;ii1.将16?23号通用寄存器保存到栈帧;iv.将26?31号中除29号寄存器外的其他通用寄存器保存到栈帧;V.将协处理器O的部分寄存器保存到栈帧;6)主核执行操作进入待机状态;1.将堆栈指针的当前值写入非易失性存储器;i1.将唤醒入口地址写入非易失性存储器;ii1.刷回并无效化一级高速缓存;iv.刷回并无效化二级高速缓;v.通过B1S调用接口,将控制权转交给B1S ;v1.B1S将内存设置成自刷新模式;vi1.B1S设置配套芯片组进入并维持在ACPI S3状态;7)清除ACPI事件并恢复电源指示灯状态;8)恢复主核执行上下文;1.从栈帧恢复协处理器O的部分寄存器;i1.从栈帧恢复I?7号通用寄存器;ii1.从栈帧恢复16?23号通用寄存器;iv.从栈帧恢复26?31号中除29号寄存器外的其他通用寄存器;V.调整堆栈指针,丢弃没有用处的栈帧;9)开启辅核;10)开启外设电源;11)外设开始工作;12) f灰复进程,其中所述协处理器O的部分寄存器为状态寄存器、配置寄存器、上下文寄存器、扩展上下文寄存器、页面掩码寄存器和页面粒度寄存器。进一步的,所述B1S设置配套芯片组进入并维持在ACPI S3状态包括以下步骤:1.清除MiscEnable寄存器的WaitStpGntEnB字段,无需等待CPU的STPGNT#信号;i1.设置PMStatus寄存器,清除WakeStatus位和PwrBtnStatus位,防止假唤醒事件;ii1.设置GPEStatus寄存器,清除所有的GPE事件,防止睡眠后自动唤醒;iv.设置PMEnable寄存器,设置PwrBtn位,使得电源键可以唤醒计算机;V.设置MiscEnable寄存器的BlinkControl字段,使电源指示灯进入闪烁状态;v1.设置PMControl寄存器,SlpType字段置为3,SlpEn位置为1,该步骤完成后,计算机进入ACPI S3状态。为了确保一次待机后不发生状态混乱以便实现多次待机,进一步的,所述清除ACPI事件并恢复电源指示灯状态包括以下步骤:1.设置PMStatus寄存器,清除WakeStatus位和PwrBtnStatus位,防止产生伪中断;i1.设置GPEStatus寄存器,清除所有的GPE事件,防止产生伪中断;ii1.设置MiscEnable寄存器的BlinkControl字段,使电源指示灯一直亮。本专利技术所提供的技术方案的有益效果是,该待机方法可使用于无EC的台式机或者服务器平台,不需要依赖EC,可以减少设计复杂度并且节约成本,使得待机方法可以得到更广泛的应用。【附图说明】图1为本专利技术方法执行流程示意图。图2为步骤5至8流程示意图。【具体实施方式】下面结合实施例对本专利技术作进一步说明,但不作为对本专利技术的限定。请结合图1和图2,龙芯平台可以使用多种类型的配套芯片组,北桥芯片如AMDRS690/RS780/SR5650/SR6570/SR5690,南桥芯片如 AMD SB600/SB700/SB710/SB800/SP5100等等,它们都支持ACPI功能。以RS780+SB700芯片组为例,计算机的待机方法如下:I)冻结进程;2)外设停止工作;3)关闭外设电源;4)关闭辅核;5)保存主核执行上下文;1.调整堆栈指针(SP寄存器),留出一个栈帧来保存上下文;i1.将I?7号通用寄存器(用于汇编器的AT寄存器、用于存放函数返回值的V系列寄存器以及用于存放函数参数的A系列寄存器)保存到栈帧;ii1.将16?23号通用寄存器(函数调用时需要调用者保存的S系列寄存器)保存到栈帧;iv.将26?31号中除29号寄存器外的其他通用寄存器(内核专用的K系列寄存器、全局指针GP,帧指针FP和返回地址RA寄存器,不包括堆栈指针SP)保存到栈帧;V.将协处理器O的当前第1页1 2 本文档来自技高网...
一种<a href="http://www.xjishu.com/zhuanli/55/CN104866377.html" title="一种基于无嵌入式控制器龙芯处理器平台的待机方法原文来自X技术">基于无嵌入式控制器龙芯处理器平台的待机方法</a>

【技术保护点】
一种基于无嵌入式控制器龙芯处理器平台的待机方法,其特征在于,包括以下步骤:1)冻结进程;2)外设停止工作;3)关闭外设电源;4)关闭辅核;5)保存主核执行上下文;i.调整堆栈指针,留出一个栈帧来保存上下文;ii.将1~7号通用寄存器保存到栈帧;iii.将16~23号通用寄存器保存到栈帧;iv.将26~31号中除29号寄存器外的其他通用寄存器保存到栈帧;v.将协处理器0的部分寄存器保存到栈帧;6)主核执行操作进入待机状态;i.将堆栈指针的当前值写入非易失性存储器;ii.将唤醒入口地址写入非易失性存储器;iii.刷回并无效化一级高速缓存;iv.刷回并无效化二级高速缓;v.通过BIOS调用接口,将控制权转交给BIOS;vi.BIOS将内存设置成自刷新模式;vii.BIOS设置配套芯片组进入并维持在ACPI S3状态;7)清除ACPI事件并恢复电源指示灯状态;8)恢复主核执行上下文;i.从栈帧恢复协处理器0的部分寄存器;ii.从栈帧恢复1~7号通用寄存器;iii.从栈帧恢复16~23号通用寄存器;iv.从栈帧恢复26~31号中除29号寄存器外的其他通用寄存器;v.调整堆栈指针,丢弃没有用处的栈帧;9)开启辅核;10)开启外设电源;11)外设开始工作;12)恢复进程,其中所述协处理器0的部分寄存器为状态寄存器、配置寄存器、上下文寄存器、扩展上下文寄存器、页面掩码寄存器和页面粒度寄存器。...

【技术特征摘要】

【专利技术属性】
技术研发人员:陈华才张福新吴少刚丁汨江
申请(专利权)人:江苏中科梦兰电子科技有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1