CN118034936B - 基于星载异构多核处理器的应用重构方法及*** - Google Patents

基于星载异构多核处理器的应用重构方法及*** Download PDF

Info

Publication number
CN118034936B
CN118034936B CN202410417840.1A CN202410417840A CN118034936B CN 118034936 B CN118034936 B CN 118034936B CN 202410417840 A CN202410417840 A CN 202410417840A CN 118034936 B CN118034936 B CN 118034936B
Authority
CN
China
Prior art keywords
application
address
program
reset
main control
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
Application number
CN202410417840.1A
Other languages
English (en)
Other versions
CN118034936A (zh
Inventor
杨兵兵
贺广宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xi'an Qianjing Defense Technology Co ltd
Original Assignee
Xi'an Qianjing Defense Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xi'an Qianjing Defense Technology Co ltd filed Critical Xi'an Qianjing Defense Technology Co ltd
Priority to CN202410417840.1A priority Critical patent/CN118034936B/zh
Publication of CN118034936A publication Critical patent/CN118034936A/zh
Application granted granted Critical
Publication of CN118034936B publication Critical patent/CN118034936B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明涉及星载处理器技术领域,揭露了一种基于星载异构多核处理器的应用重构方法,包括:根据MultiBoot寄存器值计算MultiBoot头部地址,根据MultiBoot头部地址进行主控CPU程序切换,得到主控CPU执行程序,判断是否存在应用CPU程序唤醒指令,若不存在,对可编程逻辑部分进行重启,若存在,对应用CPU执行手动复位,接收***事件执行地址,根据***事件执行地址进行程序跳转执行。本发明还提出一种基于星载异构多核处理器的应用重构***、电子设备以及计算机可读存储介质。本发明可以解决当前对CTOS非宇航级器件的星上加固方式存在加固成本高、加固效果差的问题。

Description

基于星载异构多核处理器的应用重构方法及***
技术领域
本发明涉及星载处理器技术领域,尤其涉及一种基于星载异构多核处理器的应用重构方法、***、电子设备及计算机可读存储介质。
背景技术
CTOS非宇航级器件伴随商业航天领域的发展得到广泛应用,但随着现有CTOS非宇航级器件工艺制程的减小,其在空间辐射环境下的单粒子翻转概率极大,根据卫星在轨任务需求,保证其运行期间的程序稳定性成为了现今亟需解决的问题。
现有对CTOS非宇航级器件的星上加固方式主要是对相关器件的芯片电路进行重构,从而提高CTOS非宇航级器件的程序稳定性,例如:在Zynq芯片电路基础上加载重构电路,这种方式需要额外增加重构FPGA等器件,增加了电路部分的成本和体积,因此当前对CTOS非宇航级器件的星上加固方式存在加固成本高、加固效果差的问题。
发明内容
本发明提供一种基于星载异构多核处理器的应用重构方法、***及计算机可读存储介质,其主要目的在于解决当前对CTOS非宇航级器件的星上加固方式存在加固成本高、加固效果差的问题。
为实现上述目的,本发明提供的一种基于星载异构多核处理器的应用重构方法,包括:
接收主控CPU程序切换指令,根据所述主控CPU程序切换指令读取MultiBoot寄存器值,根据所述MultiBoot寄存器值计算加载地址;
获取MultiBoot头部地址,根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序;
根据所述主控CPU执行程序判断是否存在应用CPU程序唤醒指令;
若不存在应用CPU程序唤醒指令,则对预构建的可编程逻辑部分进行重启,完成主控CPU程序切换;
若存在应用CPU程序唤醒指令,则对预构建的应用CPU执行手动复位,得到应用WFE模式;
在所述应用WFE模式下接收***事件执行地址,根据所述***事件执行地址进行程序跳转执行,完成基于星载异构多核处理器的应用重构。
可选地,所述根据所述主控CPU程序切换指令读取MultiBoot寄存器值,包括:
根据所述主控CPU程序切换指令触发主控软件复位指令;
根据所述主控软件复位指令启动预构建的***级芯片读取MultiBoot寄存器值。
可选地,所述根据所述MultiBoot寄存器值计算加载地址,包括:
将所述MultiBoot寄存器值作为偏移量指示值;
获取起始地址,根据所述起始地址及偏移量指示值计算加载地址:
其中,表示加载地址,/>表示起始地址,X表示偏移量指示值。
可选地,所述根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序,包括:
确定预构建的固化器件的编码地址,其中所述固化器件的编码地址与32KB对齐;
获取待启动bin文件,根据所述固化器件的编码地址将所述待启动bin文件写入所述固化器件,得到目标bin文件,其中所述待启动bin文件的写入位置与32KB对齐;
将所述MultiBoot头部地址写入预构建的devcfg->XDCFG_MULTIBOOT_ADDR_OFFSET2寄存器,得到目标头部寄存器;
向预构建的slcr->REBOOT_STATUS寄存器和PSS_RST_CTRL寄存器写入预设的软件复位值,得到目标复位寄存器;
根据所述加载地址、目标bin文件、目标头部寄存器及目标复位寄存器执行主控CPU程序切换,得到主控CPU执行程序。
可选地,所述对预构建的可编程逻辑部分进行重启,包括:
获取PL重启值,将所述PL重启值写入预构建的复位寄存器,得到复位进程;
利用预构建的状态寄存器获取复位进程信号,根据所述复位进程信号判断所述复位进程是否完成;
若所述复位进程未完成,则返回上述利用预构建的状态寄存器获取复位进程信号的步骤;
若所述复位进程完成,则利用预构建的FPGA模块接口配置PL比特流文件,完成可编程逻辑部分的重启。
可选地,所述对预构建的应用CPU执行手动复位,得到应用WFE模式之前,所述方法还包括:
识别待复位外设,对所述待复位外设执行时钟关停操作,得到待命外设;
获取外设控制信号,根据所述外设控制信号对所述待命外设执行外设运行状态清除操作,得到待复位外设;
接收时钟启动信号及外设复位信号,根据所述时钟启动信号对所述待复位外设执行时钟初始化,得到时钟初始外设;
根据所述外设复位信号对所述时钟初始外设执行外设复位,得到外设复位应用CPU。
可选地,所述对预构建的应用CPU执行手动复位,得到应用WFE模式,包括:
对所述外设复位应用CPU配置FSBL加载禁用机制,得到待手动复位CPU;
接收用户手动输入的WFE模式指令,根据所述WFE模式指令对所述待手动复位CPU进行手动复位,得到应用WFE模式。
可选地,所述在所述应用WFE模式下接收***事件执行地址,包括:
获取跳转执行地址0xFFFF_FFF0;
判断所述跳转执行地址0xFFFF_FFF0是否为0;
若所述跳转执行地址0xFFFF_FFF0为0,则返回上述获取跳转执行地址0xFFFF_FFF0的步骤;
若所述跳转执行地址0xFFFF_FFF0不为0,则将跳转执行地址0xFFFF_FFF0作为***事件执行地址。
可选地,所述根据所述***事件执行地址进行程序跳转执行,包括:
获取跳转执行代码,将所述***事件执行地址作为应用头部地址;
根据所述应用头部地址及所述跳转执行代码进行程序跳转执行。
为了解决上述问题,本发明还提供一种基于星载异构多核处理器的应用重构***,所述***包括:
MultiBoot头部地址计算模块,用于接收主控CPU程序切换指令,根据所述主控CPU程序切换指令读取MultiBoot寄存器值,根据所述MultiBoot寄存器值计算加载地址;
主控CPU程序切换模块,用于获取MultiBoot头部地址,根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序;
唤醒指令接收模块,用于根据所述主控CPU执行程序判断是否存在应用CPU程序唤醒指令;
可编程逻辑部分重启模块,用于若不存在应用CPU程序唤醒指令,则对预构建的可编程逻辑部分进行重启;
应用CPU程序跳转执行模块,用于若存在应用CPU程序唤醒指令,则对预构建的应用CPU执行手动复位,得到应用WFE模式;在所述应用WFE模式下接收***事件执行地址,根据所述***事件执行地址进行程序跳转执行。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以实现上述所述的基于星载异构多核处理器的应用重构方法。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现上述所述的基于星载异构多核处理器的应用重构方法。
相比于背景技术所述现象,本发明实施例首先需要对预构建的主控CPU执行主控CPU程序切换,首先接收主控CPU程序切换指令,再根据所述主控CPU程序切换指令读取MultiBoot寄存器值,最后根据所述MultiBoot寄存器值计算MultiBoot头部地址,此时即可根据所述MultiBoot头部地址进行主控CPU程序切换,得到主控CPU执行程序,当完成主控CPU程序切换后,需要判断是否需要启用预构建的应用CPU,可以通过应用CPU程序唤醒指令进行判断,若不存在应用CPU程序唤醒指令,则只需要对预构建的可编程逻辑部分进行重启,即可完成主控CPU程序切换,若存在应用CPU程序唤醒指令,则首先需要对预构建的应用CPU执行手动复位,得到应用WFE模式,再在所述应用WFE模式下接收***事件执行地址,最后根据所述***事件执行地址进行程序跳转执行,从而完成基于星载异构多核处理器的应用重构。因此本发明提出的基于星载异构多核处理器的应用重构方法、***、电子设备及计算机可读存储介质,可以解决当前对CTOS非宇航级器件的星上加固方式存在加固成本高、加固效果差的问题。
附图说明
图1为本发明一实施例提供的基于星载异构多核处理器的应用重构方法的流程示意图;
图2为本发明一实施例提供的基于星载异构多核处理器的应用重构***的功能模块图;
图3为本发明一实施例提供的实现所述基于星载异构多核处理器的应用重构方法的电子设备的结构示意图。
本发明目的实现、功能特点及优点将结合实施例并参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本申请实施例提供一种基于星载异构多核处理器的应用重构方法。所述基于星载异构多核处理器的应用重构方法的执行主体包括但不限于服务端、终端等能够被配置为执行本申请实施例提供的该方法的电子设备中的至少一种。换言之,所述基于星载异构多核处理器的应用重构方法可以由安装在终端设备或服务端设备的软件或硬件来执行。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。
实施例1:
参照图1所示,为本发明一实施例提供的基于星载异构多核处理器的应用重构方法的流程示意图。在本实施例中,所述基于星载异构多核处理器的应用重构方法包括:
S1、接收主控CPU程序切换指令,根据所述主控CPU程序切换指令读取MultiBoot寄存器值,根据所述MultiBoot寄存器值计算加载地址。
可解释的,所述主控CPU程序切换指令指对预构建的主控CPU的程序切换指令。所述主控CPU属于星载异构多核处理器,所述星载异构多核处理器还包括应用CPU。所述主控CPU可以为主控核心CPU0,所述应用CPU可以为应用核心CPU1。
进一步地,所述异构多核处理器包含同构双ARM核处理器组成的ProcessingSystem模块、FPGA及其他Programma Logic模块,双ARM核的两个处理器分别为主控核心CPU0及应用核心CPU1,所述主控核心CPU0的程序更新通过多重引导实现,所述应用核心CPU1及FPGA通过所述主控核心CPU0实现程序注入。通过采用同构双ARM核架构,从软件层角度让所述异构多核处理器工作在AMP模式下,即多个内核相互独立运行不同任务,内核相互隔离,实现主控核心CPU0控制应用核心CPU1,同时,主控核心CPU0运行FPGA配置程序,以在适当的时候进行FPGA程序重注入。
可示例的,所述同构双ARM核处理器的内核为Crotex-A9处理器。所述异构多核处理器数据交互模型包括双核(主控核心CPU0及应用核心CPU1)数据交互、应用核心CPU1与FPGA多通道高低速数据交互、FPGA与数据存储区高速交互。
可理解的,ARM架构曾经被称作进阶精简指令集机器(Advanced RISC Machine),更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构。它的主要特点包括采用精简指令集计算机(RISC)设计,即简化指令集使每个指令执行的操作尽可能简单和快速,从而提高处理器的性能和效率。此外,ARM架构还具有节能和高效、可扩展性、多层次的指令集以及支持异构计算等特点。
应明白的,FPGA(Field Programmable Gate Array)指现场可编程门阵列,作为一种可编程逻辑器件,可以根据特定应用的需求进行定制。它提供了高度的灵活性和可配置性,可以实现各种复杂的数字电路和逻辑功能。在异构多核处理器中,FPGA可以用于实现特定的加速功能、数据处理任务或硬件加速算法,从而提高异构多核处理器的性能和效率。其他的Programmable Logic模块可以包括各种专用的硬件加速器、DSP(数字信号处理器)核、GPU(图形处理器)核等。这些硬核可以根据应用的需求进行选择和配置,以提供特定的计算能力和性能优势。通过将同构双ARM核处理器、FPGA和其他硬核的Programmable Logic模块结合在一起,异构多核处理器可以充分利用各种处理器的优势,实现更好的性能、功耗和灵活性之间的平衡。这种设计使得处理器能够更好地适应不同种类的任务,从简单的数据处理到复杂的科学计算和图形处理,都能得到高效的处理。
可理解的,所述加载地址指主控CPU程序的存储地址,所述主控CPU程序指主控CPU需要执行的程序。
本发明实施例中,所述根据所述主控CPU程序切换指令读取MultiBoot寄存器值,包括:
根据所述主控CPU程序切换指令触发主控软件复位指令;
根据所述主控软件复位指令启动预构建的***级芯片读取MultiBoot寄存器值。
可理解的,AMP模式下可以利用FSBL Image Fallback和MultiBoot来实现主控程序从不同固化位置的启动,这是一种通用的版本切换方式,此应用作为软件级安全防护存在,同时可以在CPU1失控、主控程序更新及自检跳转等需求下灵活部署。
进一步地,MultiBoot的基本原理是当触发主控核心CPU0软件复位时,SoC(Systemon a Chip,***级芯片)会读取MultiBoot寄存器值“X”,X*32KB即为偏移量(相对于起始地址),再根据起始地址和偏移量计算出加载地址,然后在加载地址存储引导启动程序(boot)。
需明白的,MultiBoot寄存器的值只能通过上电清除。
本发明实施例中,所述根据所述MultiBoot寄存器值计算加载地址,包括:
将所述MultiBoot寄存器值作为偏移量指示值;
获取起始地址,根据所述起始地址及偏移量指示值计算所述加载地址:
其中,表示加载地址,/>表示起始地址,X表示偏移量指示值。
进一步地,所述MultiBoot寄存器值指MultiBoot寄存器内存储的从起始地址(基准地址)到加载地址的偏移量指示值。将32KB作为偏移单位,再用偏移量指示值乘以偏移单位得到起始地址与加载地址的偏移量,所述偏移量表示起始地址与加载地址的偏移距离,根据起始地址与偏移量可以确定FPGA应该跳转的加载地址,再从该加载地址加载配置文件。MultiBoot寄存器值通常被当作偏移量指示值,以便在Xilinx FPGA的多重启动(Multiboot)配置中指定下一个配置文件的加载地址。
S2、获取MultiBoot头部地址,根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序。
可理解的,所述主控CPU执行程序指完成程序切换后的主控核心CPU0执行的程序。
本发明实施例中,所述根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序,包括:
确定预构建的固化器件的编码地址,其中所述固化器件的编码地址与32KB对齐;
获取待启动bin文件,根据所述固化器件的编码地址将所述待启动bin文件写入所述固化器件,得到目标bin文件,其中所述待启动bin文件的写入位置与32KB对齐;
将所述MultiBoot头部地址写入预构建的devcfg->XDCFG_MULTIBOOT_ADDR_OFFSET2寄存器,得到目标头部寄存器;
向预构建的slcr->REBOOT_STATUS寄存器和PSS_RST_CTRL寄存器写入预设的软件复位值,得到目标复位寄存器;
根据所述加载地址、目标bin文件、目标头部寄存器及目标复位寄存器执行主控CPU程序切换,得到主控CPU执行程序。
进一步地,所述软件复位值可根据硬件平台及处理器架构确定,。通过向slcr->REBOOT_STATUS和PSS_RST_CTRL寄存器写入特定的值,即可以触发一次***软件复位。这个复位操作会导致SoC(***级芯片)重启,并在重启时检查devcfg->XDCFG_MULTIBOOT_ADDR_OFFSET2寄存器中的MultiBoot头部地址。根据这个MultiBoot头部地址,SoC会从固化器件中加载并执行相应的程序。
进一步地,所述MultiBoot头部地址可以根据操作***的映像格式、加载器的实现细节以及内存布局等确定,通过MultiBoot头部地址,加载器可以解析MultiBoot头部信息,得到内核大小、入口点及命令行参数等。
S3、根据所述主控CPU执行程序判断是否存在应用CPU程序唤醒指令。
可理解的,所述应用CPU程序唤醒指令指对应用核心CPU1进行唤醒的指令。执行完成CPU0主控程序的切换后,如果不存在唤醒程序,此时应用核心CPU1默认为静默的,在执行完主控核心CPU0复位后应用核心CPU1不会启动,***只会对PL(可编程逻辑)进行重新的启动,可以利用此机制进行低功耗设计。
若不存在应用CPU程序唤醒指令,则执行S4、对预构建的可编程逻辑部分进行重启,完成主控CPU程序切换。
可理解的,所述可编程逻辑部分指PL部分。
本发明实施例中,所述对预构建的可编程逻辑部分进行重启,包括:
获取PL重启值,将所述PL重启值写入预构建的复位寄存器,得到复位进程;
利用预构建的状态寄存器获取复位进程信号,根据所述复位进程信号判断所述复位进程是否完成;
若所述复位进程未完成,则返回上述利用预构建的状态寄存器获取复位进程信号的步骤;
若所述复位进程完成,则利用预构建的FPGA模块接口配置PL比特流文件,完成可编程逻辑部分的重启。
可理解的,所述复位寄存器可以为slcr->REBOOT_STATUS或PSS_RST_CTRL。通过向特定的复位寄存器写入特定的值(PL重启值)来触发PL的复位。复位寄存器的具体名称和PL重启值因硬件平台而异。 一旦触发了复位,需要等待PL部分完成复位过程。这通常涉及到检查特定的状态寄存器或信号(复位进程信号),以确定复位进程是否已完成。在PL复位完成后,可以根据需要重新加载或配置PL的比特流文件,这可以通过FPGA配置接口(如JTAG或PCIe)来完成。
进一步地,在Xilinx Zynq等基于FPGA的SoC中,仅对可编程逻辑(PL)部分进行重新启动,而不对处理器子***(PS)或其他部分进行复位的策略很常见,因为用户希望保持PS部分的状态不变,因此仅对PL部分进行更新或重配置。
若存在应用CPU程序唤醒指令,则执行S5、对预构建的应用CPU执行手动复位,得到应用WFE模式。
可理解的,所述应用WFE模式指应用核心CPU1进入WFE(wait for event)模式。
进一步地,异构多核处理器运行中主控核心CPU0是作为主核的状态存在,应用核心CPU1默认处于休眠状态,在AMP模式下,CPU0的职责在于在CPU1上启动任务,在CPU0引导启动过程中,BootRom会将CPU1置为WFE模式,WFE状态是CPU1的一个重要状态,此时CPU1没有使能任何进程,只对少数几个通用寄存器进行了修改。
本发明实施例中,所述对预构建的应用CPU执行手动复位,得到应用WFE模式之前,所述方法还包括:
识别待复位外设,对所述待复位外设执行时钟关停操作,得到待命外设;
获取外设控制信号,根据所述外设控制信号对所述待命外设执行外设运行状态清除操作,得到待复位外设;
接收时钟启动信号及外设复位信号,根据所述时钟启动信号对所述待复位外设执行时钟初始化,得到时钟初始外设;
根据所述外设复位信号对所述时钟初始外设执行外设复位,得到外设复位应用CPU。
可解释的,所述待复位外设可以为应用核心CPU1或主控核心CPU0的外设。对应用核心CPU1复位需要依赖于软件复位,与***复位和上电复位不同,当需要对双核的某个处理器应用进行复位时,必须先停止相关的时钟,再执行断言(assert)及复位,然后重启时钟,当然***复位和上电复位也是需要类似的操作,但是此时硬件会自动的处理这个问题,因此,需要复位的CPU不能运行复位代码,即不能自己复位自己,这也是采用CPU0复位CPU1的原因,这个控制也可以是PL或者JTAG。
可示例的,例如:以复位CPU0为例:
第一步:按步骤注册SCLR->A9_CPU_RST_CTRL的字段;
第二步:A9_RST0 = 1 to assert reset to CPU0;
第三步:A9_CLKSTOP0 = 1 to stop clock to CPU0;
第四步:A9_RST0 = 0 to release reset to CPU0;
第五步:A9_CLKSTOP0 = 0 to restart clock to CPU。
进一步地,由上例可知,第二步中A9_RST0 是一个控制信号,用于复位CPU0,当A9_RST0 被设置为1时,它会对CPU0发出复位信号。这意味着CPU0将停止其当前的操作,并返回到其初始状态。复位操作通常用于清除CPU的内部状态,以便它可以从一个已知的状态开始执行。第三步中,A9_CLKSTOP0 是一个控制信号,用于停止CPU0的时钟。当 A9_CLKSTOP0 被设置为1时,它将停止CPU0的时钟信号。没有时钟信号,CPU0将无法执行任何操作,因为它需要时钟来同步其内部操作。这通常用于节能或在CPU不需要运行时将其置于低功耗状态。第四步中,当 A9_RST0 被设置为0时,它释放了对CPU0的复位信号。这意味着CPU0可以开始执行其程序或指令,从它上次停止的地方继续,或者从复位向量地址开始(取决于具体的复位类型)。第五步中,当 A9_CLKSTOP0 被设置为0时,它将重新启动对CPU(此处为CPU0)的时钟信号。有了时钟信号,CPU就可以继续执行其操作了。
可解释的,在执行完A9的外设复位后,等待在WFE状态的前提是必须是0xFFFFFE00~0xFFFFFFF0区间的代码,这一点与system software reset不同,system software reset是会直接加载0x00出的FSBL代码,由板级支持包中的boot.s进行CPU ID识别和代码跳转,但本发明实施例是不会重新引导FSBL且此时也并不会加载FSBL,所以无论使用哪个CPU作为主控,复位CPU都不会自动进入WFE(wait for event),此时就需要手动进入WFE模式。
可理解的,FSBL(First Stage Boot Loader,第一阶段引导加载程序)是嵌入式***启动过程中的一个重要组成部分,特别是在使用Xilinx FPGA和Zynq SoC的***中。FSBL的主要任务是在***上电后执行一些初始化的工作,为后续的启动过程(如加载操作***)做好准备。
本发明实施例中,所述对预构建的应用CPU执行手动复位,得到应用WFE模式,包括:
对所述外设复位应用CPU配置FSBL加载禁用机制,得到待手动复位CPU;
接收用户手动输入的WFE模式指令,根据所述WFE模式指令对所述待手动复位CPU进行手动复位,得到应用WFE模式。
进一步地,为了防止自动加载FSBL,可以禁用与FSBL加载相关的硬件机制(如启动向量表或引导模式选择等加载禁用机制)。
可理解的,手动复位可参考上电复位方式,上电复位时BootRom会使CPU1进入WFE模式,之后不断查询0xFFFF_FFF0处是否为0,不为0即是该地址存储内容即是CPU1的执行地址,此时启动跳转至该执行地址执行用户代码,所以需要实现在应用核心CPU1 复位后的0x00地址的跳转,目的在于使CPU1进入WFE模式。
S6、在所述应用WFE模式下接收***事件执行地址,根据所述***事件执行地址进行程序跳转执行,完成基于星载异构多核处理器的应用重构。
本发明实施例中,所述在所述应用WFE模式下接收***事件执行地址,包括:
获取跳转执行地址0xFFFF_FFF0;
判断所述跳转执行地址0xFFFF_FFF0是否为0;
若所述跳转执行地址0xFFFF_FFF0为0,则返回上述获取跳转执行地址0xFFFF_FFF0的步骤;
若所述跳转执行地址0xFFFF_FFF0不为0,则将跳转执行地址0xFFFF_FFF0作为***事件执行地址。
进一步地,执行调准后仅需要在需求的时候进行复位并从外部装载新程序即可实现主控核心CPU0对yingyong1核心CPU1的控制,做到主控核心CPU0不停机的情况下不断重启应用核心CPU1。新程序的写入,由上述步骤可知,主控核心CPU1在复位后会向0xFFFF_FFF0写入应用核心CPU1的执行地址,将可执行代码放入程序执行头部地址即可。
本发明实施例中,所述根据所述***事件执行地址进行程序跳转执行,包括:
获取跳转执行代码,将所述***事件执行地址作为应用头部地址;
根据所述应用头部地址及所述跳转执行代码进行程序跳转执行。
可理解的,主控核心CPU0需要少量协议才能在应用核心CPU1上启动应用程序,当应用核心CPU1接收***事件,会立即读0xFFFFFFF0并跳转至其内容中的地址以运行程序,如果***触发事件在更新目的地址之前发出,则应用核心CPU1会继续保持在WFE模式,因为0xFFFFFFF0有WFE指定的地址作为安全网络地址,如果写入0xFFFFFFF0的地址为无效的或者未初始化地址,这将是未定义行为。只有ARM-32 ISA代码支持CPU1内的初始化跳转,在跳转目标地址不支持Thumb和Thumb-Ⅱ代码,这就意味着目标地址必须是32bit位并且必须是一个有效的ARM-32指令,否则为未定义行为。
进一步地,通过主控核心CPU0控制FPGA程序注入可分为FPGA完全重构和FPGA局部重构:其中,FPGA完全重构是指应用核心CPU1从外部接收到FPGA配置文件后,通知控制核心CPU0启动FPGA重刷写,FPGA重刷写基于PCAP桥实现,PCAP桥为DevCfg一部分,此重配置为完整重配置,即刷新FPGA所有配置帧。所述FPGA局部重构是指FPGA配置文件由相应TCL语句生成并最好进行压缩,配置前设置相应寄存器以复位FPGA,等待复位完成通过启动DevCfg专属DMA完成配置帧注入。
相比于背景技术所述现象,本发明实施例首先需要对预构建的主控CPU执行主控CPU程序切换,首先接收主控CPU程序切换指令,再根据所述主控CPU程序切换指令读取MultiBoot寄存器值,最后根据所述MultiBoot寄存器值计算MultiBoot头部地址,此时即可根据所述MultiBoot头部地址进行主控CPU程序切换,得到主控CPU执行程序,当完成主控CPU程序切换后,需要判断是否需要启用预构建的应用CPU,可以通过应用CPU程序唤醒指令进行判断,若不存在应用CPU程序唤醒指令,则只需要对预构建的可编程逻辑部分进行重启,即可完成主控CPU程序切换,若存在应用CPU程序唤醒指令,则首先需要对预构建的应用CPU执行手动复位,得到应用WFE模式,再在所述应用WFE模式下接收***事件执行地址,最后根据所述***事件执行地址进行程序跳转执行,从而完成基于星载异构多核处理器的应用重构。因此本发明提出的基于星载异构多核处理器的应用重构方法、***、电子设备及计算机可读存储介质,可以解决当前对CTOS非宇航级器件的星上加固方式存在加固成本高、加固效果差的问题。
实施例2:
如图2所示,是本发明一实施例提供的基于星载异构多核处理器的应用重构***的功能模块图。
本发明所述基于星载异构多核处理器的应用重构***100可以安装于电子设备中。根据实现的功能,所述基于星载异构多核处理器的应用重构***100可以包括MultiBoot头部地址计算模块101、主控CPU程序切换模块102、唤醒指令接收模块103、可编程逻辑部分重启模块104及应用CPU程序跳转执行模块105。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
所述MultiBoot头部地址计算模块101,用于接收主控CPU程序切换指令,根据所述主控CPU程序切换指令读取MultiBoot寄存器值,根据所述MultiBoot寄存器值计算加载地址;
所述主控CPU程序切换模块102,用于获取MultiBoot头部地址,根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序;
所述唤醒指令接收模块103,用于根据所述主控CPU执行程序判断是否存在应用CPU程序唤醒指令;
所述可编程逻辑部分重启模块104,用于若不存在应用CPU程序唤醒指令,则对预构建的可编程逻辑部分进行重启;
所述应用CPU程序跳转执行模块105,用于若存在应用CPU程序唤醒指令,则对预构建的应用CPU执行手动复位,得到应用WFE模式;在所述应用WFE模式下接收***事件执行地址,根据所述***事件执行地址进行程序跳转执行。
详细地,本发明实施例中所述基于星载异构多核处理器的应用重构***100中的所述各模块在使用时采用与上述的图1中所述的基于星载异构多核处理器的应用重构方法一样的技术手段,并能够产生相同的技术效果,这里不再赘述。
实施例3:
如图3所示,是本发明一实施例提供的实现基于星载异构多核处理器的应用重构方法的电子设备的结构示意图。
所述电子设备1可以包括处理器10、存储器11、总线12和通信接口13,还可以包括存储在所述存储器11中并可在所述处理器10上运行的计算机程序,如基于星载异构多核处理器的应用重构程序。
其中,所述存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是电子设备1的内部存储单元,例如该电子设备1的移动硬盘。所述存储器11在另一些实施例中也可以是电子设备1的外部存储设备,例如电子设备1上配备的插接式移动硬盘、智能存储卡(Smart Media Card, SMC)、安全数字(SecureDigital, SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器11还可以既包括电子设备1的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于电子设备1的应用软件及各类数据,例如基于星载异构多核处理器的应用重构程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述处理器10在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器10是所述电子设备的控制核心(Control Unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器11内的程序或者模块(例如基于星载异构多核处理器的应用重构程序等),以及调用存储在所述存储器11内的数据,以执行电子设备1的各种功能和处理数据。
所述总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器11以及至少一个处理器10等之间的连接通信。
图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备1的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备1还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理***与所述至少一个处理器10逻辑相连,从而通过电源管理***实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电***、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备1还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
进一步地,所述电子设备1还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备1与其他电子设备之间建立通信连接。
可选地,该电子设备1还可以包括用户接口,用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备1中处理的信息以及用于显示可视化的用户界面。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备1中的所述存储器11存储的基于星载异构多核处理器的应用重构程序是多个指令的组合,在所述处理器10中运行时,可以实现:
接收主控CPU程序切换指令,根据所述主控CPU程序切换指令读取MultiBoot寄存器值,根据所述MultiBoot寄存器值计算加载地址;
获取MultiBoot头部地址,根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序;
根据所述主控CPU执行程序判断是否存在应用CPU程序唤醒指令;
若不存在应用CPU程序唤醒指令,则对预构建的可编程逻辑部分进行重启,完成主控CPU程序切换;
若存在应用CPU程序唤醒指令,则对预构建的应用CPU执行手动复位,得到应用WFE模式;
在所述应用WFE模式下接收***事件执行地址,根据所述***事件执行地址进行程序跳转执行,完成基于星载异构多核处理器的应用重构。
具体地,所述处理器10对上述指令的具体实现方法可参考图1至图2对应实施例中相关步骤的描述,在此不赘述。
进一步地,所述电子设备1集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。所述计算机可读存储介质可以是易失性的,也可以是非易失性的。例如,所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或***、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明还提供一种计算机可读存储介质,所述可读存储介质存储有计算机程序,所述计算机程序在被电子设备的处理器所执行时,可以实现:
接收主控CPU程序切换指令,根据所述主控CPU程序切换指令读取MultiBoot寄存器值,根据所述MultiBoot寄存器值计算加载地址;
获取MultiBoot头部地址,根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序;根据所述主控CPU执行程序判断是否存在应用CPU程序唤醒指令;
若不存在应用CPU程序唤醒指令,则对预构建的可编程逻辑部分进行重启,完成主控CPU程序切换;
若存在应用CPU程序唤醒指令,则对预构建的应用CPU执行手动复位,得到应用WFE模式;
在所述应用WFE模式下接收***事件执行地址,根据所述***事件执行地址进行程序跳转执行,完成基于星载异构多核处理器的应用重构。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,***和方法,可以通过其它的方式实现。例如,以上所描述的***实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (9)

1.一种基于星载异构多核处理器的应用重构方法,其特征在于,所述方法包括:
接收主控CPU程序切换指令,根据所述主控CPU程序切换指令读取MultiBoot寄存器值,根据所述MultiBoot寄存器值计算加载地址;
获取MultiBoot头部地址,根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序;
所述根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序,包括:
确定预构建的固化器件的编码地址,其中所述固化器件的编码地址与32KB对齐;
获取待启动bin文件,根据所述固化器件的编码地址将所述待启动bin文件写入所述固化器件,得到目标bin文件,其中所述待启动bin文件的写入位置与32KB对齐;
将所述MultiBoot头部地址写入预构建的devcfg->XDCFG_MULTIBOOT_ADDR_OFFSET2寄存器,得到目标头部寄存器;
向预构建的slcr->REBOOT_STATUS寄存器和PSS_RST_CTRL寄存器写入预设的软件复位值,得到目标复位寄存器;
根据所述加载地址、目标bin文件、目标头部寄存器及目标复位寄存器执行主控CPU程序切换,得到主控CPU执行程序;
根据所述主控CPU执行程序判断是否存在应用CPU程序唤醒指令;
若不存在应用CPU程序唤醒指令,则对预构建的可编程逻辑部分进行重启,完成主控CPU程序切换;
若存在应用CPU程序唤醒指令,则对预构建的应用CPU执行手动复位,得到应用WFE模式;
在所述应用WFE模式下接收***事件执行地址,根据所述***事件执行地址进行程序跳转执行,完成基于星载异构多核处理器的应用重构。
2.如权利要求1所述的基于星载异构多核处理器的应用重构方法,其特征在于,所述根据所述主控CPU程序切换指令读取MultiBoot寄存器值,包括:
根据所述主控CPU程序切换指令触发主控软件复位指令;
根据所述主控软件复位指令启动预构建的***级芯片读取MultiBoot寄存器值。
3.如权利要求2所述的基于星载异构多核处理器的应用重构方法,其特征在于,所述根据所述MultiBoot寄存器值计算加载地址,包括:
将所述MultiBoot寄存器值作为偏移量指示值;
获取起始地址,根据所述起始地址及偏移量指示值计算所述加载地址:
其中,表示加载地址,/>表示起始地址,/>表示偏移量指示值。
4.如权利要求1所述的基于星载异构多核处理器的应用重构方法,其特征在于,所述对预构建的可编程逻辑部分进行重启,包括:
获取PL重启值,将所述PL重启值写入预构建的复位寄存器,得到复位进程;
利用预构建的状态寄存器获取复位进程信号,根据所述复位进程信号判断所述复位进程是否完成;
若所述复位进程未完成,则返回上述利用预构建的状态寄存器获取复位进程信号的步骤;
若所述复位进程完成,则利用预构建的FPGA模块接口配置PL比特流文件,完成可编程逻辑部分的重启。
5.如权利要求1所述的基于星载异构多核处理器的应用重构方法,其特征在于,所述对预构建的应用CPU执行手动复位,得到应用WFE模式之前,所述方法还包括:
识别待复位外设,对所述待复位外设执行时钟关停操作,得到待命外设;
获取外设控制信号,根据所述外设控制信号对所述待命外设执行外设运行状态清除操作,得到待复位外设;
接收时钟启动信号及外设复位信号,根据所述时钟启动信号对所述待复位外设执行时钟初始化,得到时钟初始外设;
根据所述外设复位信号对所述时钟初始外设执行外设复位,得到外设复位应用CPU。
6.如权利要求5所述的基于星载异构多核处理器的应用重构方法,其特征在于,所述对预构建的应用CPU执行手动复位,得到应用WFE模式,包括:
对所述外设复位应用CPU配置FSBL加载禁用机制,得到待手动复位CPU;
接收用户手动输入的WFE模式指令,根据所述WFE模式指令对所述待手动复位CPU进行手动复位,得到应用WFE模式。
7.如权利要求6所述的基于星载异构多核处理器的应用重构方法,其特征在于,所述在所述应用WFE模式下接收***事件执行地址,包括:
获取跳转执行地址0xFFFF_FFF0;
判断所述跳转执行地址0xFFFF_FFF0是否为0;
若所述跳转执行地址0xFFFF_FFF0为0,则返回上述获取跳转执行地址0xFFFF_FFF0的步骤;
若所述跳转执行地址0xFFFF_FFF0不为0,则将跳转执行地址0xFFFF_FFF0作为***事件执行地址。
8.如权利要求7所述的基于星载异构多核处理器的应用重构方法,其特征在于,所述根据所述***事件执行地址进行程序跳转执行,包括:
获取跳转执行代码,将所述***事件执行地址作为应用头部地址;
根据所述应用头部地址及所述跳转执行代码进行程序跳转执行。
9.一种基于星载异构多核处理器的应用重构***,其特征在于,所述***包括:
MultiBoot头部地址计算模块,用于接收主控CPU程序切换指令,根据所述主控CPU程序切换指令读取MultiBoot寄存器值,根据所述MultiBoot寄存器值计算加载地址;
主控CPU程序切换模块,用于获取MultiBoot头部地址,根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序;所述根据所述MultiBoot头部地址及加载地址进行主控CPU程序切换,得到主控CPU执行程序,包括:确定预构建的固化器件的编码地址,其中所述固化器件的编码地址与32KB对齐;获取待启动bin文件,根据所述固化器件的编码地址将所述待启动bin文件写入所述固化器件,得到目标bin文件,其中所述待启动bin文件的写入位置与32KB对齐;将所述MultiBoot头部地址写入预构建的devcfg->XDCFG_MULTIBOOT_ADDR_OFFSET2寄存器,得到目标头部寄存器;向预构建的slcr->REBOOT_STATUS寄存器和PSS_RST_CTRL寄存器写入预设的软件复位值,得到目标复位寄存器;根据所述加载地址、目标bin文件、目标头部寄存器及目标复位寄存器执行主控CPU程序切换,得到主控CPU执行程序;
唤醒指令接收模块,用于根据所述主控CPU执行程序判断是否存在应用CPU程序唤醒指令;
可编程逻辑部分重启模块,用于若不存在应用CPU程序唤醒指令,则对预构建的可编程逻辑部分进行重启;
应用CPU程序跳转执行模块,用于若存在应用CPU程序唤醒指令,则对预构建的应用CPU执行手动复位,得到应用WFE模式;在所述应用WFE模式下接收***事件执行地址,根据所述***事件执行地址进行程序跳转执行。
CN202410417840.1A 2024-04-09 2024-04-09 基于星载异构多核处理器的应用重构方法及*** Active CN118034936B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410417840.1A CN118034936B (zh) 2024-04-09 2024-04-09 基于星载异构多核处理器的应用重构方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410417840.1A CN118034936B (zh) 2024-04-09 2024-04-09 基于星载异构多核处理器的应用重构方法及***

Publications (2)

Publication Number Publication Date
CN118034936A CN118034936A (zh) 2024-05-14
CN118034936B true CN118034936B (zh) 2024-06-14

Family

ID=90989496

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410417840.1A Active CN118034936B (zh) 2024-04-09 2024-04-09 基于星载异构多核处理器的应用重构方法及***

Country Status (1)

Country Link
CN (1) CN118034936B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867210A (zh) * 2021-09-29 2021-12-31 中国科学院长春光学精密机械与物理研究所 多路星载嵌入式***软件在轨重构控制***及控制方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102154245B1 (ko) * 2018-12-07 2020-09-09 한국항공우주연구원 인공위성 내 소프트웨어 기반 재설정 유닛
CN116302635A (zh) * 2023-02-07 2023-06-23 中国电子科技集团公司第二十九研究所 面向商业卫星领域的zynq在轨加载重构方法及***

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113867210A (zh) * 2021-09-29 2021-12-31 中国科学院长春光学精密机械与物理研究所 多路星载嵌入式***软件在轨重构控制***及控制方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种基于异构处理器的可动态布署设计与实现;钱宏文等;电子技术应用;20240131;第50卷(第1期);93-100 *

Also Published As

Publication number Publication date
CN118034936A (zh) 2024-05-14

Similar Documents

Publication Publication Date Title
KR101959002B1 (ko) 저전력 상태로부터 재시작시 휘발성 메모리로부터 처리 시스템의 재초기화
US11301257B2 (en) Computing performance and power management with firmware performance data structure
CN109478135B (zh) 计算机***和用于重新引导计算机***的方法
CN108776619B (zh) 微处理器、管理微处理器的电力消耗的方法及存储介质
US9367107B2 (en) Method and system for controlling reset state change in a system-on-a-chip device
TW201508635A (zh) 多核心微處理器動態重新配置
US9223365B2 (en) Method and apparatus for controlled reset sequences without parallel fuses and PLL'S
US20120117364A1 (en) Method and System for Operating a Handheld Calculator
US20190004818A1 (en) Method of UEFI Shell for Supporting Power Saving Mode and Computer System thereof
CN103842933A (zh) 多核平台中的受约束引导技术
EP3971713A1 (en) Boot process for early display initialization and visualization
CN113672250A (zh) 用于存储器设备固件升级的接口和热重置路径
US10474596B2 (en) Providing dedicated resources for a system management mode of a processor
JP2023020861A (ja) ファームウェアの更新
CN113535245A (zh) 用于更快的启动过程的多处理器启动流程的方法、***和设备
CN105556461B (zh) 用于预os镜像重写以提供跨架构支持、安全性自省和性能优化的技术
CN107729055B (zh) 微处理器及其执行方法
CN103729219A (zh) 一种uefi bios架构方法及***
CN108984464B (zh) 微处理器及在微处理器的处理核间同步的方法
CN118034936B (zh) 基于星载异构多核处理器的应用重构方法及***
Golchin et al. Jumpstart: Fast critical service resumption for a partitioning hypervisor in embedded systems
CN110046126B (zh) 多核微处理器及其重新配置方法、计算机可读存储介质
CN109240481B (zh) 多核微处理器及使用其省电的方法
US10782764B2 (en) Techniques of emulating an ACPI controller on a service processor
CN109165189B (zh) 微处理器及其配置方法、以及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant