一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种异构多核处理器之间数据交换失败时的快速恢复方法与流程

2022-12-19 23:11:43 来源:中国专利 TAG:


1.本发明涉及异构多核处理器技术领域,具体涉及一种异构多核处理器之间数据交换失败时的快速恢复方法。


背景技术:

2.多核微处理器是指在一个微处理器上集成多个内核,采用mpu mcu异构多核的微处理器可以在充分满足多种应用的灵活性需求的同时,又实现了最佳性能和低功耗特性,在复杂的多任务处理与运算的同时,兼顾硬实时性。它所采用的运行模式一般为amp(asymmetric multi-processing)非对称多处理。
3.在多核微处理器采用amp模式时,一般是mpu作为主处理器,mcu作为从处理器,运行启动是从mpu开始,然后mpu上的系统负责控制mcu的启动。
4.当微处理器内核之间共享缓冲区数据交换失败时,一般都需要mpu复位重启系统,然后加载mcu的代码到ddr中运行,这无疑会给对于稳定性要求较高的系统造成麻烦,并且造成数据交换恢复正常所需的时间过长,在很多工业应用场合根本无法满足场景应用要求。


技术实现要素:

5.本发明提供一种异构多核处理器之间数据交换失败时的快速恢复方法,用以解决现有技术中存在的当多核微处理器内核之间共享缓冲区数据交换失败时,mpu mcu需全部重启,所用恢复时间过长、稳定性差等各种问题。
6.本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,应用于一异构多核微处理器,该异构多核微处理器集成两颗mpu应用处理内核和一颗mcu微处理器内核,该方法包括:
7.启动运行mpu应用程序,当mpu应用处理内核检测到共享缓冲区数据更新超时或丢帧时,判断mcu微处理器内核是否正在运行;
8.若mcu微处理器内核处于停止状态,则加载mcu固件,启动mcu微处理器内核,并将采样命令通过虚拟io发送到mcu微处理器内核;
9.当mcu微处理器内核接收到采样命令后,通过获取到的采样频率重新初始化定时器,触发adc进行采样、过滤和打包数据,将数据存入共享缓冲区,并在共享缓冲区填满时发送相关事件给mpu应用处理内核,由mpu应用处理内核从共享缓冲区读取数据;
10.在数据搬运完成后发送信号量通知adc进行计算,mpu应用处理内核与mcu微处理器内核通过缓冲区进行数据交换恢复正常。
11.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,在mpu应用处理内核配置有远程处理器消息框架,在进入系统后,将需要运行的mcu固件放在一个固定目录下,其固件名称写到另一个目录下,操作state对mcu微处理器内核的生命周期进行管理,即启动、停止mcu。
12.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,两个mpu应用处理内核之间通过底层ipcc控制器进行通信,mpu应用处理内核使用远程处理器消息框架与mcu微处理器内核进行数据交互;
13.其中,远程处理器消息框架基于虚拟io的消息总线,其允许内核驱动程序与系统上可用的远程处理器进行通信,实现对远程处理器信息传递。
14.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,在判断mcu微处理器内核是否正在运行时,若mcu微处理器内核处于运行状态,则通过虚拟io向mcu微处理器内核发送停止数据采集命令,释放数据交换所用的相关资源,取消缓冲区映射,停止mcu微处理器内核的运行;
15.mcu微处理器内核接收到停止数据采集命令后,停止数据采样,并停止将数据放入映射缓冲区。
16.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,当mcu微处理器接收到采样频率后,使用获取到的采样频率重新初始化定时器,通过pwm触发mcu的adc进行采样、过滤和打包数据,通过dma将打包好的数据传输到ddr共享缓冲区,并在一个共享缓冲区满时发送相关事件给mpu应用处理内核;
17.当mpu应用处理内核向mcu微处理器内核发送采样频率后,开始循环poll缓冲区注册事件,若收到缓冲区有数据写入信号,判断获取的数据个数和创建的共享缓冲区大小是否一致,若是,则从映射缓冲区将打包数据取出,在数据搬运完成后发送信号量通知其adc进行计算,即两内核通过缓冲区进行数据交换恢复正常。
18.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,在启动运行mpu应用程序时,mpu应用处理内核使用共享缓冲区驱动,在ddr中分配大缓冲区并对其进行内存映射以供应用程序使用;其中,mpu应用处理内核通过远程处理器消息框架与mcu微处理器内核共享缓冲区信息。
19.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,mcu微处理器内核通过虚拟io从mpu应用处理内核获取共享缓冲区的物理地址及ddr缓冲区的大小,将数据包复制到ddr缓冲区,并在ddr缓冲区填满时通过远程处理器消息框架通知mpu应用处理内核,并开始下一个ddr缓冲区的数据填充。
20.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,在mpu应用程序运行时,远程处理器消息框架的共享数据缓冲区驱动程序会在连续内存中会分配一个大的缓冲区并对其进行内存映射以供使用,并通过远程处理器消息框架的消息服务与mcu微处理器内核共享缓冲区信息,当缓冲区可用时,会向linux应用程序发送事件消息。
21.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,mpu应用处理内核的多核核间通信基于远程处理器消息框架设计,其定义了异构多核处理器之间中核与核之间进行通信时所使用的标准二进制接口来分配和管理共享缓冲区。
22.根据本发明提供的一种异构多核处理器之间数据交换失败时的快速恢复方法,在恢复不成功时,将故障的处理器内核进行隔离,从故障的处理器内核的配置存储器中读取隔离的临时配置文件,与其全局配置文件进行差异比对,并根据配置文件码流与故障的处理器内核的资源映射关系获取故障的位置、地址和类型信息,实现对故障点的定位;通过对
故障点的定位分析,确定重构布线的约束条件和需要重构的最小电路模块。
23.由此可见,本发明用于多核处理器数据交换故障恢复,当mpu检测到共享缓冲区数据更新超时或丢帧时,当mcu正在运行的时候,通过虚拟io向mcu发送停止数据采集命令,释放数据交换所用相关资源,取消缓冲区映射,从而停止mcu运行,停止采样和停止将数据放入映射缓冲区;如果mcu处于停止状态,则加载相关模块,打开相关驱动程序,将采样命令通过虚拟io发送到mcu,mcu收到命令后,启动采样,将数据存入缓冲区,并在缓冲区满时发送相关事件给mpu,mpu收到缓冲区满信号时从缓冲区取数,双方通过缓冲区进行数据交换恢复正常。可见,本发明在mpu和mcu之间共享缓冲区数据交换失败时可以不需mpu和mcu全部重启,只需重启mcu即可实现,不需要mpu复位重启系统以及重新加载运行代码,即可解决多核处理器上因数据交换失败造成的数据丢失问题,完成故障的确定性恢复,确保了整个系统的运行不会中断,系统的资源也不会丢失。此外,异常单核恢复以后可以正常工作,延长了系统的可运行时间,增强了系统的可靠性。
24.下面结合附图和具体实施方式对本发明作进一步详细说明。
附图说明
25.图1是本发明一种异构多核处理器之间数据交换失败时的快速恢复方法实施例的流程图。
具体实施方式
26.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
27.一种异构多核处理器之间数据交换失败时的快速恢复方法,应用于一异构多核微处理器,该异构多核微处理器集成两颗mpu应用处理内核和一颗mcu微处理器内核,两个mpu应用处理内核之间通过底层ipcc控制器进行通信,mpu应用处理内核使用远程处理器消息框架与mcu微处理器内核进行数据交互;远程处理器消息框架基于虚拟io的消息总线,其允许内核驱动程序与系统上可用的远程处理器进行通信,实现对远程处理器信息传递。
28.参见图1,该方法包括以下步骤:
29.步骤s1,启动运行mpu应用程序,当mpu应用处理内核检测到共享缓冲区数据更新超时或丢帧时,判断mcu微处理器内核是否正在运行;
30.步骤s2,若mcu微处理器内核处于停止状态,则加载mcu固件,启动mcu微处理器内核,并将采样命令通过虚拟io发送到mcu微处理器内核;
31.步骤s3,当mcu微处理器内核接收到采样命令后,通过获取到的采样频率重新初始化定时器,触发adc进行采样、过滤和打包数据,将数据存入共享缓冲区,并在共享缓冲区填满时发送相关事件给mpu应用处理内核,由mpu应用处理内核从共享缓冲区读取数据;
32.步骤s4,在数据搬运完成后发送信号量通知adc进行计算,mpu应用处理内核与mcu微处理器内核通过缓冲区进行数据交换恢复正常。
33.在判断mcu微处理器内核是否正在运行时,若mcu微处理器内核处于运行状态,则
通过虚拟io向mcu微处理器内核发送停止数据采集命令,释放数据交换所用的相关资源,取消缓冲区映射,停止mcu微处理器内核的运行;
34.mcu微处理器内核接收到停止数据采集命令后,停止数据采样,并停止将数据放入映射缓冲区,并重新执行步骤s2。
35.在mpu应用处理内核配置有远程处理器消息框架,在进入系统后,将需要运行的mcu固件放在一个固定目录下,其固件名称写到另一个目录下,操作state对mcu微处理器内核的生命周期进行管理,即启动、停止mcu。
36.当mcu微处理器接收到采样频率后,使用获取到的采样频率重新初始化定时器,通过pwm触发mcu的adc进行采样、过滤和打包数据,通过dma将打包好的数据传输到ddr共享缓冲区,并在一个共享缓冲区满时发送相关事件给mpu应用处理内核;
37.当mpu应用处理内核向mcu微处理器内核发送采样频率后,开始循环poll缓冲区注册事件,若收到缓冲区有数据写入信号,判断获取的数据个数和创建的共享缓冲区大小是否一致,若是,则从映射缓冲区将打包数据取出,在数据搬运完成后发送信号量通知其adc进行计算,即两内核通过缓冲区进行数据交换恢复正常。
38.在启动运行mpu应用程序时,mpu应用处理内核使用共享缓冲区驱动,在ddr中分配大缓冲区并对其进行内存映射以供应用程序使用;其中,mpu应用处理内核通过远程处理器消息框架与mcu微处理器内核共享缓冲区信息。
39.mcu微处理器内核通过虚拟io从mpu应用处理内核获取共享缓冲区的物理地址及ddr缓冲区的大小,将数据包复制到ddr缓冲区,并在ddr缓冲区填满时通过远程处理器消息框架通知mpu应用处理内核,并开始下一个ddr缓冲区的数据填充。
40.在mpu应用程序运行时,远程处理器消息框架的共享数据缓冲区驱动程序会在连续内存中会分配一个大的缓冲区并对其进行内存映射以供使用,并通过远程处理器消息框架的消息服务与mcu微处理器内核共享缓冲区信息,当缓冲区可用时,会向linux应用程序发送事件消息。
41.mpu应用处理内核的多核核间通信基于远程处理器消息框架设计,其定义了异构多核处理器之间中核与核之间进行通信时所使用的标准二进制接口来分配和管理共享缓冲区。
42.在恢复不成功时,将故障的处理器内核进行隔离,从故障的处理器内核的配置存储器中读取隔离的临时配置文件,与其全局配置文件进行差异比对,并根据配置文件码流与故障的处理器内核的资源映射关系获取故障的位置、地址和类型信息,实现对故障点的定位;通过对故障点的定位分析,确定重构布线的约束条件和需要重构的最小电路模块。可见,本发明还可以利用最小代价的冗余硬件逻辑重构发生局部永久故障的处理器,并在故障恢复期内保障多核处理器仍具有较高可靠性,实现片上可重构处理器的局部永久故障的定位、隔离与恢复。
43.在实际应用中,在mpu应用程序运行时,远程处理器消息框架的共享数据缓冲区驱动程序会在连续内存中会分配一个大的缓冲区并对其进行内存映射(mmap)以供使用,并通过远程处理器消息框架的消息服务与mcu微处理器共享缓冲区信息(地址、大小),当缓冲区可用时,会向linux应用程序发送事件消息,并且还提供了一个标准二进制接口来分配和管理共享缓冲区。
44.接着,mpu应用处理内核每隔一段时间就会通过上述接口来检测是否有收到mcu微处理器内核发过来的数据,如果规定时间内没有检测到有数据交互或者数据有丢帧时,就会启动mcu的重启流程,其包括:
45.mpu应用处理内核先检测mcu微处理器内核是否处于运行态,如果处于运行态,则通过虚拟io向mcu微处理器内核发送停止命令,mcu微处理器内核收到停止命令后,会停止数据采样。与此同时,mpu应用处理内核会关闭mcu微处理器内核之间通过虚拟io进行通讯的接口,还会关闭两者之间用来分配和管理共享缓冲区的接口。另外,mpu应用处理内核还会删除内存映射。在把数据交互所用相关资源都释放后,mpu应用处理内核通过远程处理器框架停止mcu微处理器内核的运行。
46.当mcu微处理器内核处于停止运行态时,mpu应用处理内核会通过远程处理器框架加载mcu固件,然后启动mcu微处理器内核。
47.当mcu微处理器内核启动后,mpu应用处理内核会打开和mcu微处理器内核之间通过虚拟io进行通讯的接口,发送指令给mcu微处理器内核通知它数据交互通道已正常,可以发送数据。并且把共享数据缓冲区的数量、物理地址、缓冲区长度等相关信息通知mcu微处理器内核。
48.与此同时,mpu应用处理内核会打开和mcu微处理器内核之间共享缓冲区的接口,分配和映射内存,为缓冲区注册事件,获取缓冲区的大小,并创建一个事件,将其发送给内核驱动程序,在缓冲区被填满时会给mpu应用处理内核进行事件通知。
49.在上述步骤完成后,mpu应用处理内核发送采样频率给mcu微处理器内核,mcu微处理器内核以此频率进行采样,然后将数据依次放入ddr中分配的几个共享缓冲区中,当任一缓冲区数据填满时,mpu应用处理内核都会收到事件消息,从共享缓冲区取数,两者之间的数据交互恢复正常。
50.由此可见,本发明用于多核处理器数据交换故障恢复,当mpu检测到共享缓冲区数据更新超时或丢帧时,当mcu正在运行的时候,通过虚拟io向mcu发送停止数据采集命令,释放数据交换所用相关资源,取消缓冲区映射,从而停止mcu运行,停止采样和停止将数据放入映射缓冲区;如果mcu处于停止状态,则加载相关模块,打开相关驱动程序,将采样命令通过虚拟io发送到mcu,mcu收到命令后,启动采样,将数据存入缓冲区,并在缓冲区满时发送相关事件给mpu,mpu收到缓冲区满信号时从缓冲区取数,双方通过缓冲区进行数据交换恢复正常。可见,本发明在mpu和mcu之间共享缓冲区数据交换失败时可以不需mpu和mcu全部重启,只需重启mcu即可实现,不需要mpu复位重启系统以及重新加载运行代码,即可解决多核处理器上因数据交换失败造成的数据丢失问题,完成故障的确定性恢复,确保了整个系统的运行不会中断,系统的资源也不会丢失。此外,异常单核恢复以后可以正常工作,延长了系统的可运行时间,增强了系统的可靠性。
51.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
52.上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献