一种消除表征盲点的处理器心跳计数方法
文献发布时间:2023-06-19 09:36:59
技术领域
本申请涉及航空机载嵌入式计算机领域可靠性设计技术,具体涉及一种消除表征盲点的处理器心跳计数方法。
背景技术
在多处理器体系结构的嵌入式计算机系统中,每个处理器通常会采取心跳计数的方式向其他处理器表征自身是否处于正常的周期循环运行状态中,这种处理器间交互数据的基本模型如图1所示,具体心跳计数的方法如图2所示,图2中HeartbeatCount就是用于心跳计数的变量,采用每周期自增的方式更新内容,并将数值通过写入数据交互接口(具体可以是双口存储器或串行通讯接口等)向对方处理器表明自身的运行状态。该种计数方法存在一种不足之处就是,对方处理器通过数据交互接口读取到的心跳数值无法支持准确用于对自身运行状态的识别,如单方面复位:当处理器1自身因为由于不可预知的因素重新复位启动运行后,处理器2通过处理器1提供的心跳计数值不能准确的识别出该状态;或者处理器2自身因为由于不可预知的因素重新复位启动运行后,处理器2不能准确通过处理器1提供的心跳计数值识别出自身曾经出现过的复位启动事件。如图2所示的常规心跳计数方法必须进行重新设计,以消除表征盲点。
发明内容
针对上述技术背景,本申请提供一种消除表征盲点的处理器心跳计数方法,能够准确用于对自身运行状态的识别。
本申请提供一种消除表征盲点的处理器心跳计数方法,所述方法包括:
预先设置心跳计数变量HeartbeatCount和常量K,所述HeartbeatCount由N个二进制存储位组成,所述K表示需要保留的高位个数;
初始化所述心跳计数变量HeartbeatCount;
处理器开始执行应当完成的周期任务,本周期任务执行完后,判断所述HeartbeatCount的数值是否等于2
若相等,则对HeartbeatCount心跳计数变量的低N-K个位清0;
若不相等,则HeartbeatCount心跳计数变量自增数值1。
具体的,方法还包括:
HeartbeatCount心跳计数变量数值写入数据交互接口,供其他处理器获取识别。
具体的,在处理器开始执行应当完成的周期任务之前,方法还包括:
预先设置心跳周期状态字HeartbeatCycle,所述HeartbeatCount用于表示是否出现过计数满值;
初始化所述HeartbeatCycle。
具体的,在本周期任务执行完后,方法还包括:
判断所述心跳计数变量HeartbeatCount的数值是否等于2
若相等,则对HeartbeatCount心跳计数变量清0,将状态字变量HeartbeatCycle设置为预设数值;
若不相等,则HeartbeatCount心跳计数变量自增数值1。
具体的,方法还包括:
将心跳计数变量HeartbeatCount、状态字变量HeartbeatCycle写入数据交互接口,供其他处理器获取使用。
具体的,所述状态字变量HeartbeatCycle设置为A5A5。
具体的,所述初始化所述HeartbeatCycle,具体包括:
将所述HeartbeatCycle的初值设置为0。
具体的,初始化所述心跳计数变量HeartbeatCount,具体包括:
将所述心跳计数变量HeartbeatCount的初值设置为0。
综上所述,在多处理器体系结构的嵌入式计算机系统中,每个处理器通常会采取心跳计数的方式向其他处理器表征自身是否处于正常的周期循环运行状态,本提案给出了一种较为健壮的心跳计数方法,一方面可以表征自己的活跃状态,另一方面支持在不增加额外资源的情况下无表征盲点的支持其他处理器对其运行状态的准确识别,并能够辅助其他处理器对自身的运行状态进行识别。具体特征包括:无限循环计数;心跳计数变量计满后保留部分高位并清除剩余低位;心跳计数寄存器计满后清0,心跳周期状态字置1。
附图说明
图1为现有技术中的处理器间数据交互通用模型;
图2为现有技术中的心跳计数在实时任务中的使用图示;
图3为本申请提供的一种心跳计数新方法示意1;
图4为本申请提供的一种心跳计数新方法示意2。
具体实施方式
本提案面向机载嵌入式计算机系统提供出一种消除表征盲点的处理器心跳计数方法,具体详细内容如下:
实施例一
本实施例以心跳计数变量计满后保留部分高位,低位清除为例进行说明。心跳计数流程如图3所示,其中HeartbeatCount是心跳计数变量,该变量由N个二进制存储位组成,K是常量表示需要保留的高位个数,心跳计数流程如下:
步骤1:启动,本地处理器完成复位过程后执行启动;
步骤2:初始化,HeartbeatCount心跳计数变量内容清0置初值;
步骤3:处理器开始执行应当完成的周期任务;
步骤4:本周期任务执行完后,判断HeartbeatCount心跳计数变量的数值是否等于2
步骤5:对HeartbeatCount心跳计数变量的低N-K个位清0;
步骤6:HeartbeatCount心跳计数变量自增数值1;
步骤7:HeartbeatCount心跳计数变量数值写入数据交互接口,供其他处理器获取识别,转至步骤3。
实施例二
本实施例以心跳计数寄存器计满后清0,心跳周期状态字置1为例进行说明。上述方法也可调整为如图4所示的方法流程。图4中,HeartbeatCount是心跳计数变量,该变量由N个二进制存储位组成,HeartbeatCycle是心跳周期状态字表示HeartbeatCount是否出现过计数满值,具体心跳计数流程如下:
步骤1:启动,本地处理器完成复位过程后执行启动;
步骤2:初始化,HeartbeatCount心跳计数变量内容清0置初值,状态字变量HeartbeatCycle置5A5A;
步骤3:处理器开始执行应当完成的周期任务;
步骤4:本周期任务执行完后,判断HeartbeatCount心跳计数变量的数值是否等于2
步骤5:对HeartbeatCount心跳计数变量清0,状态字变量HeartbeatCycle置A5A5;
步骤6:HeartbeatCount心跳计数变量自增数值1;
步骤7:HeartbeatCount心跳计数变量数值、状态字变量HeartbeatCycle数值写入数据交互接口,供其他处理器获取使用,转至步骤3。
综上所述,在多处理器体系结构的嵌入式计算机系统中,每个处理器通常会采取心跳计数的方式向其他处理器表征自身是否处于正常的周期循环运行状态,本提案给出了一种较为健壮的心跳计数方法,一方面可以表征自己的活跃状态,另一方面支持在不增加额外资源的情况下无表征盲点的支持其他处理器对其运行状态的准确识别,并能够辅助其他处理器对自身的运行状态进行识别。具体特征包括:无限循环计数;心跳计数变量计满后保留部分高位并清除剩余低位;心跳计数寄存器计满后清0,心跳周期状态字置1。
- 一种消除表征盲点的处理器心跳计数方法
- 一种基于CPLD的处理器心跳检测方法及装置