基于飞腾平台的PCIE链路设备待机与恢复方法的制作方法
- 格式:pdf
- 大小:153.09 KB
- 文档页数:14
一种基于飞腾平台的PCIE链路设备待机与恢复方法,步骤包括:由应用层发起、系统进入待机流程;发送所述PCIE链路设备的待机信号给所述CPLD复杂可编程逻辑器件;CPU保存上下文,进入等待中断状态;收到唤醒中断后,开始系统恢复流程;发送所述PCIE链路设备的恢复信号给所述CPLD;进入PCIE链路训练流程并进行链路训练,若失败则报错并退出;所述系统进行恢复性操作,之后操作系统恢复正常运行。
本申请的有益效果是:能够针对基于PCIE总线的ARM64平台的待机功能问题,解决PCIE链路状态机链路状态异常驻留的问题,从而实现飞腾平台的电源管理待机恢复功能。
权利要求书
1.一种基于飞腾平台的PCIE链路设备待机与恢复方法,步骤包括:
S301:应用层发起待机流程;
S302:系统进入所述待机流程;
S303:发送所述PCIE链路设备的待机信号给CPLD;
S304:CPU保存上下文,进入等待中断状态;
S305:收到唤醒中断后,开始系统恢复流程;
S306:发送所述PCIE链路设备的恢复信号给所述CPLD;
S307:进入PCIE链路训练流程;若进入成功,则进行所述PCIE链路训练兵进入下一步,若进入失败,则系统报错并退出所述系统恢复流程;
S308:所述系统进行恢复性操作,之后操作系统恢复正常运行。
2.根据权利要求1所述基于飞腾平台的PCIE链路设备待机与恢复方法,其特征在于:所述S307中所述PCIE链路训练流程步骤包括:
S401:所述PCIE链路设备复位;
S402:PCIE控制器软复位;
S403:所述PCIE控制器关闭链路训练;
S404:所述PCIE控制器初始化各个通道的地址域;
S405:所述PCIE控制器中各个通道的使能IO解码;
S406:所述PCIE控制器各个通道强制链路训练,读取PCIE链路训练状态寄存器,判断链路
是否建立;若建立则直接进入后续操作系统待机恢复流程,若建立失败则进入下一步;
S407:判断所述PCIE链路训练状态寄存器读取次数是否超过第一预设次数,若是进入下一步,若否返回所述S406;
S408:判断链路训练是否达到第二预设次数,若不够则重新回到所述S401,进入下一次链路训练流程;否则,循环失败,报错退出。
3.根据权利要求2所述基于飞腾平台的PCIE链路设备待机与恢复方法,其特征在于:所述S402具体为:延时第一设定时间后,经局部复位寄存器对整个所述PCIE控制器进行复位。
4.根据权利要求2所述基于飞腾平台的PCIE链路设备待机与恢复方法,其特征在于:所述S404具体为:延迟第二设定时间后,通过地址域控制寄存器来配置所述PCIE控制器中的地址域参数。
5.根据权利要求2-4任一所述基于飞腾平台的PCIE链路设备待机与恢复方法,其特征在于:所述S406中判断链路是否建立的方式是:通过读取链路状态寄存器中的LTSSM字段来判断所述链路是否建立。
6.根据权利要求1-4任一所述基于飞腾平台的PCIE链路设备待机与恢复方法,其特征在于:所述S303中所述系统通过GPIO发送所述PCIE链路设备待机控制信号给所述CPLD,所述CPLD再通过控制电源域、时钟域和/或复位信号将所述PCIE链路设备置于待机状态。
7.根据权利要求1-4任一所述基于飞腾平台的PCIE链路设备待机与恢复方法,其特征在于:所述S306具体为:所述系统发送所述恢复信号,所述系统通过GPIO发送所述PCIE链路设备的恢复信号给所述CPLD,所述CPLD控制电源域、时钟域和/或复位信号将所述PCIE链路设备置于恢复工作状态。
8.根据权利要求1-4任一所述基于飞腾平台的PCIE链路设备待机与恢复方法,其特征在于:所述S305中所述恢复流程包括:所述CPU初始化和/或恢复所述上下文;优选的,所述S308中所述恢复性操作包括:设备恢复、中断恢复和/或进程恢复。
9.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-4任一所述PCIE链路设备待机与恢复方法的步骤。
10.一种PCIE链路设备待机与恢复的终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现如权利要求1-4任一所述PCIE链路设备待机与恢复方法的步骤。
技术说明书
一种基于飞腾平台的PCIE链路设备待机与恢复方法
技术领域
本申请属于电源管理技术领域,具体地说,涉及一种基于飞腾平台的PCIE链路设备待机与恢复方法。
背景技术
电源管理待机功能可以使系统进入低功耗的状态,能够大大增强电池的续航能力,同时它唤醒恢复时间短,需要专门的电源域设计,是桌面PC和便携式计算机领域不能缺少的技术。
现有Linux操作系统的电源管理待机功能实现基本上都是基于传统的X86架构的硬件平台,或者非PCIE总线的ARM64架构的硬件平台。
而国产飞腾处理器平台主要是基于ARM64架构而设计的,特别是飞腾1500A处理器,它采用了片上系统(SOC)结构,内部集成了多个PCIE控制器,是自主可控的国产处理器平台,已经
被广泛应用到桌面、嵌入式、服务器等领域。
与传统的x86硬件平台和非PCIE总线的ARM64硬件平台相比,飞腾平台由于采用了PCIE总线而导致其电源管理逻辑实现方式更复杂、差异性更大。
由于飞腾处理器的特殊性,在电源管理系统进入待机和恢复的过程中,会出现所有的PCIE 设备起不来的情况,具体体现为基于飞腾平台的PC或笔记本电脑设备显卡、串口硬盘设备等所有基于PCIE的设备在重新构建PCIE配置空间的时候出错,系统因此而崩溃卡死。
据悉,目前还没有解决飞腾平台上电源管理待机和唤醒功能的方法被提出。
如果继续沿用现有的电源管理待机技术,就会出现PCIE设备在待机后唤醒,由于PCIE链路状态机没有能够完成链路的重新训练,一直驻留在了某一异常状态,从而导致所有PCIE设备都不能正常恢复的问题。
中国技术专利“一种基于龙芯处理器平台的待机方法”(申请号CN201110419255.8),该技术提供了一种基于龙芯处理器平台的待机方法,其过程包括以下步骤:1)冻结进程;2)外设停止工作;3)关闭外设电源;4)关闭辅核;5)保存主核执行上下文;6)主核执行操作进入待机状态;7)恢复主核执行上下文;8)开启辅核;9)开启外设电源;10)外设开始工作;11)恢复进程。
虽然该技术不需要ACPI表来动态维护大量的信息,BIOS和操作系统都变得易于实现,健壮性好,并且待机功能只需要和BIOS进行一次交互,性能高效。
但是该技术并没有考虑到本技术中所涉及到国产飞腾处理器平台的特殊性。
中国技术专利“一种PCIE设备动态节能方法、装置及其通信系统”(申请号
CN201210114678.3),该技术提供了一种PCIE设备动态节能方法、装置及其通信系统,所述方法包括:获取系统节能策略设置;根据获取到的系统节能策略通过PCIE节能模块控制PCIE设备及链路进入相应的联动节能状态。
虽然该技术通过将PCIE设备D状态和链路L状态进行关联组成新的联动节能状态,按照预先配置的节能策略控制设备与链路进入相应联动节能状态,能够提高节能效率,但是并没有考虑到本技术中基于国产飞腾平台的PCIE链路设备待机与恢复问题。
中国技术专利“计算机设备与计算机设备的配置管理方法”(申请号CN201410853336.2),该技术公开了一种计算机设备和计算机设备的配置管理方法,通过在系统启动的不同阶段控制
SMM和CPU与PCIE Switch连接,在实现PCIE设备管理时,不依赖于计算机设备CPU的参与,不仅在不需要计算机设备操作系统参与的情况下实现PCIE设备的配置管理,还节省了CPU的资源;提升了计算机设备的可管理性,满足大型数据中心对计算设备简化管理的要求;同时PCIE设备通过下行端口与PCIE Switch相连,不需要配置特殊的接口与SMM相连,简化了系统的配置。
虽然该技术可以解决计算机设备对PCIE设备配置管理需要依赖计算机设备的操作系统,不够灵活和系统配置复杂的问题,但是并没有涉及到本技术中所考虑的国产飞腾平台的PCIE链路设备待机与恢复问题。
PCIE:(Peripheral Component Interconnect Express的缩写)是一种高速串行计算机扩展总线标准,是由英特尔在2001年提出的,旨在替代旧的PCI,PCI-X和AGP总线标准。
PCIE属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理、错误报告、端对端的可靠性传输、热插拔以及服务质量等功能。
它的主要优势是数据传输速率高。
PCIE的主要优势在于其减少延迟的能力。
PCIE设备和PCIE总线直接相连,使缓存和数据更接近CPU。
SoC:System on Chip的缩写,称为芯片级系统,也有称片上系统,意指它是一个产品,是一个有专用目标的集成电路,其中包含完整系统并有嵌入软件的全部内容。
GPIO:General Purpose Input Output的缩写,称为通用输入/输出,或称为总线扩展器,它是人们利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。
当微控制器或芯片组没有足够的I/O端口,或当系统需要采用远端串行通信或控制时,GPIO产品能够提供额外的控制和监视功能。
CPLD:Complex Programmable Logic Device的缩写,称为复杂可编程逻辑器件,是从PAL和GAL器件发展出来的器件。
CPLD主要是由可编程逻辑宏单元围绕中心的可编程互连矩阵单元组成。
由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。
PCI-E-SATA3.0扩展卡:属于常见的PCIE总线扩展硬件之一,它实现PCIE总线扩展SATA3.0接口,SATA是Serial ATA的缩写,即串行ATA。
它是一种电脑总线,主要功能是用作主板和大量存储设备(如硬盘及光盘驱动器)之间的数据传输之用。
PCI-USB口扩展卡:属于扩展硬件之一。
例如USB口扩展卡可以扩展出5个USB口,其中4个在外面,1个在机箱内,用来插打印机等固定的USB设备。
技术内容
有鉴于此,本申请为了解决现有技术存在的缺陷和不足,提供了一种基于飞腾平台的PCIE 链路设备待机与恢复方法,能够解决PCIE链路状态机链路状态异常驻留的问题,从而实现飞腾平台的电源管理待机恢复功能。
为了解决上述技术问题,本申请公开了一种基于飞腾平台的PCIE链路设备待机与恢复方法,并采用以下技术方案来实现。
一种基于飞腾平台的PCIE链路设备待机与恢复方法,步骤包括:
S301:应用层发起待机流程;
S302:系统进入所述待机流程;
S303:发送所述PCIE链路设备的待机信号给CPLD;
S304:CPU保存上下文,进入等待中断状态;
S305:收到唤醒中断后,开始系统恢复流程;
S306:发送所述PCIE链路设备的恢复信号给所述CPLD;
S307:进入PCIE链路训练流程;若进入成功,则进行所述PCIE链路训练兵进入下一步,若进入失败,则系统报错并退出所述系统恢复流程;
S308:所述系统进行恢复性操作,之后操作系统恢复正常运行。
进一步的,所述S307中所述PCIE链路训练流程步骤包括:
S401:所述PCIE链路设备复位;
S402:PCIE控制器软复位;
S403:所述PCIE控制器关闭链路训练;
S404:所述PCIE控制器初始化各个通道的地址域;
S405:所述PCIE控制器中各个通道的使能IO解码;
S406:所述PCIE控制器各个通道强制链路训练,读取PCIE链路训练状态寄存器,判断链路是否建立;若建立则直接进入后续操作系统待机恢复流程,若建立失败则进入下一步;
S407:判断所述PCIE链路训练状态寄存器读取次数是否超过第一预设次数,若是进入下一步,若否返回所述S406;
S408:判断链路训练是否达到第二预设次数,若不够则重新回到所述S401,进入下一次链路训练流程;否则,循环失败,报错退出。
进一步的,所述S402具体为:延时第一设定时间后,经局部复位寄存器对整个所述PCIE控制器进行复位。
进一步的,所述S404具体为:延迟第二设定时间后,通过地址域控制寄存器来配置所述PCIE控制器中的地址域参数。
进一步的,所述S406中判断链路是否建立的方式是:通过读取链路状态寄存器中的LTSSM 字段来判断所述链路是否建立。
进一步的,所述S302具体为:所述系统开始执行文件系统同步、进程冻结、中断关闭和/或设备待机。
进一步的,所述S303中所述系统通过GPIO发送所述PCIE链路设备待机控制信号给所述CPLD,所述CPLD再通过控制电源域、时钟域和/或复位信号将所述PCIE链路设备置于待机状态。
进一步的,所述S305中所述恢复流程包括:所述CPU初始化和/或恢复所述上下文。
进一步的,所述S306具体为:所述系统发送所述恢复信号,所述系统通过GPIO发送所述PCIE链路设备的恢复信号给所述CPLD,所述CPLD控制电源域、时钟域和/或复位信号将所述PCIE链路设备置于恢复工作状态。
进一步的,所述S308中所述恢复性操作包括:设备恢复、中断恢复和/或进程恢复。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现上述任一所述PCIE链路设备待机与恢复方法的步骤。
一种PCIE链路设备待机与恢复的终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于:所述处理器执行所述计算机程序时实现上述任一所述PCIE链路设备待机与恢复方法的步骤。
与现有技术相比,本申请可以获得包括以下技术效果:能够针对基于PCIE总线的ARM64平台的待机功能问题,解决PCIE链路状态机链路状态异常驻留的问题,从而实现飞腾平台的电源管理待机恢复功能。
当然,实施本申请的任一产品必不一定需要同时达到以上所述的所有技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性
实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
在附图中:
图1是本申请一个实施例的硬件设计框架结构示意图。
图2是本申请一个实施例的PCIE设备待机、恢复时序控制示意图。
图3是本申请一个实施例的PCIE链路设备待机与恢复机制流程示意图。
图4是本申请一个实施例的PCIE链路训练软件流程示意图。
具体实施方式
以下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据以实施。
图1是本技术实施例的基于飞腾平台的PCIE链路设备硬件逻辑结构图,它用于实现PCIE链路设备的待机与恢复机制及方法。
图中双实线标识PCIE链路设备复位控制,虚线表示电源域和时钟域控制。
硬件逻辑结构主要包括飞腾处理器、PCIE总线设备、待机控制单元、PCIE电源域控制逻辑、PCIE时钟域控制逻辑和待机恢复中断源。
其中,所述的PCIE总线设备包括:显卡、PCIE-SATA3.0扩展卡、PCI-USB扩展卡;所述的待机控制单元是通过复杂可编程逻辑器件(CPLD)来实现,它主要的工作就是首先接收CPU的PCIE链路设备待机信号和恢复信号,这两个信号都是通过GPIO的高低电平来实现。
图2是本技术实施例的基于飞腾平台的PCIE设备待机和恢复时序控制机制示意图。
因为飞腾平台中SOC的特性导致PCIE链路双方设备无法同时进行链路训练,所以图2中时序控制机制参考PCIE设计手册,实现PCIE链路设备待机与恢复机制的硬件控制,具体控制机制如下:
控制1:当CPLD接收到电源管理待机信号后,先拉低复位信号,使所有的PCIE设备复位;再经过500ms的延迟之后,接着关断PCIE设备的外部时钟信号;最后经过100ms延迟,CPLD
关断PCIE设备的电源。
控制2:当CPLD接收到电源管理恢复信号后,先打开PCIE设备的电源;经过100ms的延迟之后,接着打开PCIE设备的外部时钟信号;再经过500ms延迟,CPLD拉高复位信号,使设备进入正常工作状态,这个时候PCIE链路上就可以尝试链路训练。
控制3:当PCIE链路恢复时序后,通过加入额外的PCIE设备复位控制,PCIE设备复位控制逻辑和PCIE链路训练流程可以结合起来使用。
图3为本技术从系统开始进入待机状态到从待机状态中恢复系统流程的一个实施例。
具体实施例步骤包括:
S301:系统开始待机流程,应用层发起操作系统的待机流程;
S302:操作系统进入待机流程;系统开始执行文件系统同步、进程冻结、中断关闭、设备待机等一系列的待机过程;
S303:系统发送PCIE链路设备待机信号给CPLD;系统通过GPIO发送PCIE链路设备待机控制信号给CPLD,CPLD再通过控制电源域、时钟域、复位信号将PCIE链路设备置于待机状态;
S304:CPU保存上下文,进入等待中断状态;整个系统环境冻结,CPU进入等待中断的状态;
S305:收到唤醒中断后,开始CPU初始化,恢复上下文;开始操作系统恢复流程;
S306:发送PCIE链路设备恢复信号给CPLD;系统发送恢复控制信号,系统通过GPIO发送PCIE链路设备恢复控制信号给CPLD,CPLD控制电源域、时钟域、复位信号将PCIE链路设备置于恢复工作状态;
S307:进入PCIE链路训练流程,若进入成功则进行链路训练并进入下一步,若进入失败则
系统报错并退出整个系统恢复流程;是否进入成功的判断是PCIE链路是否恢复成正常状态;
S308:操作系统进行设备恢复、中断恢复、进程恢复等一系列操作,之后操作系统恢复正常运行。
本技术通过控制PCIE控制器的复位寄存器、配置寄存器、其他控制寄存器进行复位、初始化、链路训练操作,解决PCIE控制器链路训练状态机异常状态驻留的问题。
其流程是结合PCIE复位控制逻辑来进行,以确保每一次PCIE链路训练流程对端PCIE设备的链路训练状态机的状态一致。
图4是本技术的PCIE链路训练流程的一个具体实施例,具体实施例步骤包括:
S401:PCIE链路设备复位;通过GPIO信号发起一次PCIE链路设备的复位控制;
S402:PCIE控制器软复位;延时第一设定时间后(第一设定时间为500ms),经过软件局部复位寄存器对整个PCIE控制器进行复位;
S403:PCIE控制器关闭链路训练;通过PCIE链路训练使能寄存器关闭PCIE控制器中所有通道的链路训练;
S404:PCIE控制器初始化各个通道的地址域;延迟第二设定时间(例如:100ms)后,通过地址域控制寄存器来配置PCIE控制器中的IO空间、内存空间等地址域参数;
S405:PCIE控制器中各个通道的使能IO解码;通过配置PCIE控制器通道中的IO基地址寄存器和可预测内存基地址寄存器使得使能IO解码;
S406:PCIE控制器各个通道强制链路训练,读取PCIE链路训练状态寄存器,判断链路是否建立;若建立则直接进入后续操作系统待机恢复流程,若建立失败则进入下一步;
系统通过PCIE控制寄存器、强制链接寄存器、端口链接控制寄存器来强制PCIE各个通道进行链路训练,设定延时(例如500ms),循环n次(例如n=5)读取链路状态寄存器中的
LTSSM(PCIE设备链路训练状态机)字段来判断链路是否建立;可读取n次,n次中任一次读取结果显示建立,则判定建立成功,若n次均未建立,则建立失败。
如果一旦读取链路状态寄存器中LTSSM字段的值是十六进制0x11,则表示链路训练状态机进入正常工作状态,如果当前PCIE链路已创建,跳过下一步,直接进入后续的操作系统待机恢复流程;否则,进入下一步。
S407:判断PCIE链路训练状态寄存器是否读取超过n次,若是进入下一步,若否进入S406;
S408:判断链路训练是否够n次,若不够则重新回到步骤S401,进入下一次链路训练流程;否则,循环失败,报错退出;
开始新的链路训练流程时设定与上一次相同的延时,再次循环n次进行PCIE控制器链路训练,如果某次循环中PCIE控制器各个通道强制链路训练完成后,符合步骤S406判断链路已创建的条件,则退出PCIE链路训练流程,进入后续的操作系统待机恢复流程;否则,当n次循环失败后报错退出。
本申请的有益效果是:能够针对基于PCIE总线的ARM64平台的待机功能问题,解决PCIE链路状态机链路状态异常驻留的问题,从而实现飞腾平台的电源管理待机恢复功能。
以上对本申请实施例所提供的一种基于飞腾平台的PCIE链路设备待机与恢复方法,进行了详细介绍。
以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
如在说明书及权利要求当中使用了某些词汇来指称特定组件。
本领域技术人员应可理解,不同机构可能会用不同名词来称呼同一个组件。
本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。
如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。
“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。
说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。
本申请的保护范围当视所附权利要求所界定者
为准。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系统所固有的要素。
在没有更多限制的情况下,由语
句“包括一个……”限定的要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。
上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述技术创造构想范围内,通过上述教导或相关领域的技术或知识进行改动。
而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申请所附权利要求的保护范围内。