CN104866377B - 一种基于无嵌入式控制器龙芯处理器平台的待机方法 - Google Patents
一种基于无嵌入式控制器龙芯处理器平台的待机方法 Download PDFInfo
- Publication number
- CN104866377B CN104866377B CN201510283803.7A CN201510283803A CN104866377B CN 104866377 B CN104866377 B CN 104866377B CN 201510283803 A CN201510283803 A CN 201510283803A CN 104866377 B CN104866377 B CN 104866377B
- Authority
- CN
- China
- Prior art keywords
- registers
- register
- stack frame
- positions
- acpi
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Power Sources (AREA)
Abstract
本发明公开了一种基于龙芯处理器平台的待机方法,其过程包括以下步骤:冻结进程;外设停止工作;关闭外设电源;关闭辅核;保存主核执行上下文;主核执行操作通过设置芯片组进入ACPI S3进入待机状态;清除ACPI事件并恢复电源指示灯状态;恢复主核执行上下文;开启辅核;开启外设电源;外设开始工作;恢复进程。该待机方法可使用于无EC的台式机或者服务器平台,不需要依赖EC,可以减少设计复杂度并且节约成本,使得待机方法可以得到更广泛的应用。
Description
技术领域
本发明涉及一种计算机的待机方法,特别是涉及一种基于无嵌入式控制器龙芯处理器平台的待机方法。
背景技术
待机是一种电源管理方法,它让***在空闲时候进入一种可以快速唤醒的睡眠状态,功耗很低。待机也叫Suspend To RAM(挂起到内存,简称STR),对应ACPI(高级电源配置接口)S3状态。其特征如下:CPU和外设全部断电,内存供电但处于低耗能的自刷新状态(内容保持不变),功耗为开机状态的1%左右,唤醒时间5~8秒。可以通过电源按键唤醒。
中国专利CN102541246B公开了一种基于龙芯处理器平台的待机方法,由于龙芯平台与X86平台有着较大的差异,其BIOS和操作***不是ACPI感知的。该专利设计利用嵌入式控制器(EC)来管控电源。而在实际应用中,通常只有笔记本电脑会配备EC,台式机和服务器不存在EC。因此如何不依赖EC在龙芯处理器平台实现待机功能是需要解决的问题。
发明内容
针对上述现有技术的不足,本发明的目的是提供一种基于无嵌入式控制器龙芯处理器平台的待机方法,不依赖EC在龙芯处理器平台实现待机功能。
本发明的技术方案是这样的:一种基于无嵌入式控制器龙芯处理器平台的待机方法,包括以下步骤:
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的部分寄存器为状态寄存器、配置寄存器、上下文寄存器、扩展上下文寄存器、页面掩码寄存器和页面粒度寄存器。
进一步的,所述BIOS设置配套芯片组进入并维持在ACPI S3状态包括以下步骤:
i.清除MiscEnable寄存器的WaitStpGntEnB字段,无需等待CPU的STPGNT#信号;
ii.设置PMStatus寄存器,清除WakeStatus位和PwrBtnStatus位,防止假唤醒事件;
iii.设置GPEStatus寄存器,清除所有的GPE事件,防止睡眠后自动唤醒;
iv.设置PMEnable寄存器,设置PwrBtn位,使得电源键可以唤醒计算机;
v.设置MiscEnable寄存器的BlinkControl字段,使电源指示灯进入闪烁状态;
vi.设置PMControl寄存器,SlpType字段置为3,SlpEn位置为1,该步骤完成后,计算机进入ACPI S3状态。
为了确保一次待机后不发生状态混乱以便实现多次待机,进一步的,所述清除ACPI事件并恢复电源指示灯状态包括以下步骤:
i.设置PMStatus寄存器,清除WakeStatus位和PwrBtnStatus位,防止产生伪中断;
ii.设置GPEStatus寄存器,清除所有的GPE事件,防止产生伪中断;
iii.设置MiscEnable寄存器的BlinkControl字段,使电源指示灯一直亮。
本发明所提供的技术方案的有益效果是,该待机方法可使用于无EC的台式机或者服务器平台,不需要依赖EC,可以减少设计复杂度并且节约成本,使得待机方法可以得到更广泛的应用。
附图说明
图1为本发明方法执行流程示意图。
图2为步骤5至8流程示意图。
具体实施方式
下面结合实施例对本发明作进一步说明,但不作为对本发明的限定。
请结合图1和图2,龙芯平台可以使用多种类型的配套芯片组,北桥芯片如AMDRS690/RS780/SR5650/SR6570/SR5690,南桥芯片如AMD SB600/SB700/SB710/SB800/SP5100等等,它们都支持ACPI功能。以RS780+SB700芯片组为例,计算机的待机方法如下:
1)冻结进程;
2)外设停止工作;
3)关闭外设电源;
4)关闭辅核;
5)保存主核执行上下文;
i.调整堆栈指针(SP寄存器),留出一个栈帧来保存上下文;
ii.将1~7号通用寄存器(用于汇编器的AT寄存器、用于存放函数返回值的V系列寄存器以及用于存放函数参数的A系列寄存器)保存到栈帧;
iii.将16~23号通用寄存器(函数调用时需要调用者保存的S系列寄存器)保存到栈帧;
iv.将26~31号中除29号寄存器外的其他通用寄存器(内核专用的K系列寄存器、全局指针GP,帧指针FP和返回地址RA寄存器,不包括堆栈指针SP)保存到栈帧;
v.将协处理器0的部分寄存器(状态寄存器、配置寄存器、上下文寄存器、扩展上下文寄存器、页面掩码寄存器和页面粒度寄存器)保存到栈帧;
6)主核执行操作进入待机状态;
i.将堆栈指针的当前值写入非易失性存储器;
ii.将唤醒入口地址写入非易失性存储器;
iii.刷回并无效化一级高速缓存;
iv.刷回并无效化二级高速缓存;
v.通过BIOS调用接口,将控制权转交给BIOS;
vi.BIOS将内存设置成自刷新模式;
vii.BIOS设置配套芯片组进入并维持在ACPI S3状态,具体的包括步骤:
a.清除MiscEnable寄存器的WaitStpGntEnB字段,无需等待CPU的STPGNT#信号;
b.设置PMStatus寄存器,清除WakeStatus位和PwrBtnStatus位,防止假唤醒事件;
c.设置GPEStatus寄存器,清除所有的GPE事件,防止睡眠后自动唤醒;
d.设置PMEnable寄存器,设置PwrBtn位,使得电源键可以唤醒计算机;
e.设置MiscEnable寄存器的BlinkControl字段,使电源指示灯进入闪烁状态;
f.设置PMControl寄存器,SlpType字段置为3,SlpEn位置为1,该步骤完成后,计算机进入ACPI S3状态;通过该步骤使配套芯片组进入并维持ACPI S3状态,否则进入S3状态后将马上自动唤醒;
7)清除ACPI事件并恢复电源指示灯状态,具体的包括步骤:
i.设置PMStatus寄存器,清除WakeStatus位和PwrBtnStatus位,防止产生伪中断;
ii.设置GPEStatus寄存器,清除所有的GPE事件,防止产生伪中断;
iii.设置MiscEnable寄存器的BlinkControl字段,BlinkControl字段一共是两位,写00长灭,写11长亮,写01/10为闪烁,这里写11使电源指示灯一直亮;
8)恢复主核执行上下文;
i.从栈帧恢复协处理器0的部分寄存器;
ii.从栈帧恢复1~7号通用寄存器;
iii.从栈帧恢复16~23号通用寄存器;
iv.从栈帧恢复26~31号中除29号寄存器外的其他通用寄存器;
v.调整堆栈指针,丢弃没有用处的栈帧;
9)开启辅核;
10)开启外设电源;
11)外设开始工作;
12)恢复进程,
其中所述协处理器0的部分寄存器为状态寄存器、配置寄存器、上下文寄存器、扩展上下文寄存器、页面掩码寄存器和页面粒度寄存器。
Claims (2)
1.一种基于无嵌入式控制器龙芯处理器平台的待机方法,其特征在于,包括以下步骤:
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事件并恢复电源指示灯状态,所述清除ACPI事件并恢复电源指示灯状态包括以下步骤:
i.设置PMStatus寄存器,清除WakeStatus位和PwrBtnStatus位;
ii.设置GPEStatus寄存器,清除所有的GPE事件;
iii.设置MiscEnable寄存器的BlinkControl字段,使电源指示灯一直亮;
8)恢复主核执行上下文;
i.从栈帧恢复协处理器0的部分寄存器;
ii.从栈帧恢复1~7号通用寄存器;
iii.从栈帧恢复16~23号通用寄存器;
iv.从栈帧恢复26~31号中除29号寄存器外的其他通用寄存器;
v.调整堆栈指针,丢弃没有用处的栈帧;
9)开启辅核;
10)开启外设电源;
11)外设开始工作;
12)恢复进程,
其中所述协处理器0的部分寄存器为状态寄存器、配置寄存器、上下文寄存器、扩展上下文寄存器、页面掩码寄存器和页面粒度寄存器。
2.根据权利要求1所述的基于无嵌入式控制器龙芯处理器平台的待机方法,其特征在于,所述BIOS设置配套芯片组进入并维持在ACPI S3状态包括以下步骤:
i.清除MiscEnable寄存器的WaitStpGntEnB字段;
ii.设置PMStatus寄存器,清除WakeStatus位和PwrBtnStatus位;
iii.设置GPEStatus寄存器,清除所有的GPE事件;
iv.设置PMEnable寄存器,设置PwrBtn位,使得电源键可以唤醒计算机;
v.设置MiscEnable寄存器的BlinkControl字段,使电源指示灯进入闪烁状态;
vi.设置PMControl寄存器,SlpType字段置为3,SlpEn位置为1。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510283803.7A CN104866377B (zh) | 2015-05-28 | 2015-05-28 | 一种基于无嵌入式控制器龙芯处理器平台的待机方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510283803.7A CN104866377B (zh) | 2015-05-28 | 2015-05-28 | 一种基于无嵌入式控制器龙芯处理器平台的待机方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104866377A CN104866377A (zh) | 2015-08-26 |
CN104866377B true CN104866377B (zh) | 2018-01-16 |
Family
ID=53912226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510283803.7A Active CN104866377B (zh) | 2015-05-28 | 2015-05-28 | 一种基于无嵌入式控制器龙芯处理器平台的待机方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104866377B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984217A (zh) * | 2018-07-06 | 2018-12-11 | 郑州云海信息技术有限公司 | 一种主机工作状态调整方法和*** |
CN110750304B (zh) * | 2019-09-30 | 2022-04-12 | 百富计算机技术(深圳)有限公司 | 提升任务切换效率的方法及终端设备 |
CN115061562A (zh) * | 2022-06-27 | 2022-09-16 | 南昌华勤电子科技有限公司 | 一种ec功耗分级控制装置及方法、电子设备、存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101539803A (zh) * | 2009-04-30 | 2009-09-23 | 威盛电子股份有限公司 | 待机管理方法及其相关待机管理模块 |
CN101661404A (zh) * | 2008-08-29 | 2010-03-03 | 佛山市顺德区汉达精密电子科技有限公司 | 电脑***及其进入待机模式的方法 |
CN102184122A (zh) * | 2011-05-16 | 2011-09-14 | 曙光信息产业股份有限公司 | 一种龙芯CPU主板bios及中断的实现方法 |
CN102541246A (zh) * | 2011-12-15 | 2012-07-04 | 江苏中科梦兰电子科技有限公司 | 一种基于龙芯处理器平台的待机方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100471056B1 (ko) * | 2000-11-18 | 2005-03-07 | 삼성전자주식회사 | 컴퓨터시스템 및 컴퓨터시스템의 대기모드제어방법 |
-
2015
- 2015-05-28 CN CN201510283803.7A patent/CN104866377B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661404A (zh) * | 2008-08-29 | 2010-03-03 | 佛山市顺德区汉达精密电子科技有限公司 | 电脑***及其进入待机模式的方法 |
CN101539803A (zh) * | 2009-04-30 | 2009-09-23 | 威盛电子股份有限公司 | 待机管理方法及其相关待机管理模块 |
CN102184122A (zh) * | 2011-05-16 | 2011-09-14 | 曙光信息产业股份有限公司 | 一种龙芯CPU主板bios及中断的实现方法 |
CN102541246A (zh) * | 2011-12-15 | 2012-07-04 | 江苏中科梦兰电子科技有限公司 | 一种基于龙芯处理器平台的待机方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104866377A (zh) | 2015-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7725750B2 (en) | Method of transitioning between active mode and power-down mode in processor based system | |
CN104024980B (zh) | 连接的待机睡眠状态 | |
TWI464571B (zh) | A power saving electronic device for a computer motherboard in a standby dormant state and a computer motherboard | |
US7325100B2 (en) | Apparatus and method for entering and exiting low power mode | |
US8156362B2 (en) | Hardware monitoring and decision making for transitioning in and out of low-power state | |
KR101182222B1 (ko) | 컴퓨터시스템 및 그 제어방법 | |
EP3329345B1 (en) | Masking a power state of a core of a processor | |
TWI528284B (zh) | 切換作業系統的方法及使用此方法的電子裝置 | |
TWI360045B (en) | Method for switching automatically power state | |
CN104866377B (zh) | 一种基于无嵌入式控制器龙芯处理器平台的待机方法 | |
US8984316B2 (en) | Fast platform hibernation and resumption of computing systems providing secure storage of context data | |
CN104111850B (zh) | 一种降低微控制单元mcu功耗的方法及*** | |
CN107077184B (zh) | 具有快速恢复的***待机仿真 | |
JP5885881B2 (ja) | コンピューティングデバイスにおける電源オフ状態の実施 | |
CN105353864A (zh) | 电子设备静态功耗管理方法和*** | |
CN102385531B (zh) | 定时器管理装置与方法 | |
CN102866934A (zh) | 基于非易失随机存储器的嵌入式设备的休眠及唤醒*** | |
US7886177B2 (en) | Method and apparatus of collecting timer ticks | |
US11106271B2 (en) | System, apparatus and method for dynamically controlling error protection features of a processor | |
CN104460925A (zh) | 一种基于申威平台的电源管理实现方法 | |
CN101149637A (zh) | 计算机***节电状态下的电源管理方法 | |
CN105547491B (zh) | 一种望远镜式激光测距热像仪的自动节电方法 | |
CN102541246B (zh) | 一种基于龙芯处理器平台的待机方法 | |
CN106814840A (zh) | 用于处理器的低电力状态保持模式 | |
CN102609074A (zh) | 平板电脑的节能方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |