法律状态公告日
法律状态信息
法律状态
2019-03-08
授权
授权
2016-10-05
实质审查的生效 IPC(主分类):G06F9/445 申请日:20160420
实质审查的生效
2016-09-07
公开
公开
技术领域
本发明主要涉及数据处理技术领域,特指一种多CPU的软件加载方法及基于多CPU的软件加载装置。
背景技术
微电子技术是一门发展极为迅速的科学,从上世纪七十年代开始,微电子技术进入了以大规模集成电路为中心的新阶段,进入到二十一世纪后更以高集成度、低功耗、高性能、高可靠性为发展方向。
CPU作为各行各业所需的必备核心控制器件,涉及到航天军工、工业生产以及电子消费等多行业,占据着重要的地位。传统的计算机以及消费类行业甚至出现了八核以上的多核CPU,但传统的工业制造领域大部分还是使用的单核CPU,因此往往出现一块控制板卡上出现多片CPU同时工作的情况。其中CPU运行所必须的外部启动存储设备种类繁多,且目前大部分的控制板卡上装载多CPU以实现不同的控制功能,每个CPU都会配备外部启动存储设备,极大的增加了板卡成本与体积。
CPU的启动可分为FLASH启动、SPI启动、SCI启动、SRAM启动、OTP启动、串口启动等多种程序加载方式。
在实际工程应用过程中往往是根据CPU的用户手册配置其启动模式,一般在工业应用场合大部分工程师会将CPU配置为外部FLASH启动模式,这样就会使每个CPU都配置一个单独的外部存储FLASH,系统上电后CPU内部的bootloader程序会自动引导外部存储器的代码至内部RAM运行。那么必定会使得控制板卡内的FLASH的数量增加,一方面导致成本的上升,另一方面导致板卡的面积会增大,这两点往往制约产品的性价比与推广使用。
储存器是一种用户程序装载的载体,在实际工程应用中,工程师往往会将软件编译器生成的目标码通过各自厂家的仿真器通过JTAG下载至外部存储器中,但是往往目标码的大小只占存储器容量的很小一部分,极大的浪费了存储器的存储空间。现有的工程应用如图1所示,每个CPU均需要单独的一片FLASH用来存储程序,整个系统上电完成以后,CPU在复位之后,各自内部的bootloader引导芯片从外部FLASH加载应用程序至内部RAM,而后自动跳转至用户程序入口处执行,另外需要一片可编程逻辑器件管理整板的时序电路和与CPU之间的数据交互。
发明内容
本发明要解决的技术问题就在于:针对现有技术存在的技术问题,本发明提供一种操作简便、减少FLASH存储器数量的多CPU的软件加载方法,并相应提供一种结构简单、减少FLASH存储数量的基于多CPU的软件加载装置。
为解决上述技术问题,本发明提出的技术方案为:
一种多CPU的软件加载方法,包括以下步骤:
S01、数据存储:可编程逻辑器件接收配置数据以及多个CPU的目标码,并将配置数据以及多个CPU的目标码依次写入至单个FLASH存储器的指定存储位置,所述配置数据用于指示可编程逻辑器件外围CPU的数量和程序数据的位数;
S02、程序加载:重新上电后,所述可编程逻辑器件读取所述FLASH存储器中的配置数据,并依次完成各个CPU程序数据的加载以及运行。
作为上述技术方案的进一步改进:
在步骤S02中,单个CPU程序数据的加载以及运行的具体过程如下:
S21、首先将FLASH存储器中存储的对应程序数据读取至可编程逻辑器件内部的缓存单元,再在内部将CPU的读信号和片选信号作为控制信号,此时释放CPU的复位信号;
S22、CPU按照其外部启动的时序从数据总线和地址总线将其程序数据从可编程逻辑器件内部的缓存单元读取到其内部运行;
S23、CPU的程序运行后向可编程逻辑器件发送程序运行标志,当可编程逻辑器件接收到CPU发送过来的程序运行标志后,清空内部缓存数据,重复以上步骤进行下一CPU程序的加载。
在步骤S02中,当系统重新上电后,可编程逻辑器件首先将所有CPU置于复位状态,然后判断串口是否有程序更新请求,若有,则执行步骤S01进行相应CPU的程序更新,若无则执行步骤S02。
步骤S01的具体过程为:
S11、首先可编程逻辑器件通过RST信号将所有CPU置于复位状态,PC将配置数据和多个CPU的目标码通过RS232串口电路发送至可编程逻辑器件,可编程逻辑器件接收来自PC的数据并进行缓存;
S12、当接收到配置数据后将其写入FLASH存储器的BLOCK0扇区进行存储;在接收第一个CPU的目标码并缓存完成后,将缓存的CPU数据发送回PC端进行校验,如PC端校验无误将发送校验无误信号给可编程逻辑器件,告知其可以存储数据,可编程逻辑器件发送BUSY信号提示PC机即将存储第一个CPU的目标码进FLASH存储器,此时PC无法发送第二个CPU的目标码;
S13、可编程逻辑器件将调用FLASH存储器的驱动程序,并计算缓存数据大小以得到所需扇区的个数,然后将缓存的CPU数据存储至对应存储空间并进行校验,校验无误后进行下一CPU的程序存储;
S14、以此类推完成所有CPU的目标码存储后,PC向可编程逻辑器件发送“所有CPU程序下发完成标志”,完成所有CPU的目标码存储。
在执行步骤S02后,执行与CPU的数据交换与处理程序。
本发明还公开了一种基于多CPU的软件加载装置,包括多个CPU、一个FLASH存储器和一个可编程逻辑器件,多个CPU的数据总线、地址总线和控制总线均与所述可编程逻辑器件相连,所述FLASH存储器的信号线与所述可编程逻辑器件相连;所述可编程逻辑器件接收配置数据以及多个CPU的目标码,并将配置数据以及多个CPU的目标码依次写入至所述FLASH存储器的指定存储位置,所述配置数据用于指示可编程逻辑器件外围CPU的数量和程序数据的位数;在程序加载时,所述可编程逻辑器件读取所述FLASH存储器中的配置数据,并依次完成各个CPU程序数据的加载以及运行。
作为上述技术方案的进一步改进:
所述可编程逻辑器件包括一路用于与PC通信的RS232接口以及一路用于烧写程序的JTAG接口。
所述可编程逻辑器件为FPGA。
与现有技术相比,本发明的优点在于:
本发明的多CPU的软件加载方法,利用一个可编程逻辑器件和一个FLASH存储器实现多个CPU程序数据的加载,并且通过配置数据能够自动识别外围CPU的种类以及程序数据的位宽,通用性较强。本发明的基于多CPU的软件加载装置,利用一个FLASH存储器存储多个CPU的程序数据,减少了FLASH存储器的数量,结构简单且易于实现。
附图说明
图1为现有技术中CPU程序加载装置的方框结构图。
图2为本发明的加载装置的方框结构图。
图3为本发明中FLASH存储器内部数据空间结构图。
具体实施方式
以下结合说明书附图和具体实施例对本发明作进一步描述。
如图2和图3所示,本实施例的多CPU的软件加载方法,包括以下步骤:
S01、初始阶段:可编程逻辑器件接收配置数据以及多个CPU的目标码,并将配置数据以及多个CPU的目标码依次写入至FLASH存储器的指定存储位置,配置数据用于指示可编程逻辑器件外围CPU的数量和程序数据的位数;
S02、程序加载阶段:重新上电后,可编程逻辑器件读取FLASH存储器中的配置数据,并依次完成各个CPU程序数据的加载以及运行。
本实施例中,步骤S01的具体过程为:
S11、首先可编程逻辑器件通过RST信号将所有CPU置于复位状态,PC将配置数据和多个CPU的目标码通过RS232串口电路发送至可编程逻辑器件,可编程逻辑器件接收来自PC的数据并进行缓存;
S12、当接收到配置数据后将其写入FLASH存储器的BLOCK0扇区进行存储;在接收第一个CPU的目标码并缓存完成后,将缓存的CPU数据发送回PC端进行校验,如PC端校验无误将发送校验无误信号给可编程逻辑器件,告知其可以存储数据,可编程逻辑器件发送BUSY信号提示PC机即将存储第一个CPU的目标码进FLASH存储器,此时PC无法发送第二个CPU的目标码;
S13、可编程逻辑器件将调用FLASH存储器的驱动程序,并计算缓存数据大小以得到所需扇区的个数,然后将缓存的CPU数据存储至对应存储空间并进行校验,校验无误后进行下一CPU的程序存储;以每个CPU的目标码128KB,扇区为64KB为例,需要擦除BLOCK1和BLOCK2两个扇区,将缓存的CPU的数据存储至BLOCK1和BLOCK2两个扇区;
S14、如图3所示,以此类推完成所有CPU的目标码存储后,PC向可编程逻辑器件发送“所有CPU程序下发完成标志”,完成所有CPU的目标码存储,进行下一步的CPU程序加载。
本实施例中,在步骤S02中,当系统重新上电后,可编程逻辑器件首先将所有CPU置于复位状态,然后判断串口是否有程序更新请求,若有则执行步骤S01进行相应CPU的程序更新,若无则执行步骤S02,由于采用串口,可编程逻辑器件可单独更新多个CPU中的某一个CPU的程序,无需将整个FLASH全部擦除再将所有CPU的程序重新存储;其中单个CPU程序数据的加载以及运行的具体过程如下:
S21、首先将FLASH存储器中存储的对应程序数据读取至可编程逻辑器件内部的缓存单元,再在内部将CPU的读信号和片选信号作为控制信号,此时释放CPU的复位信号;
S22、CPU按照其外部启动的时序从数据总线和地址总线将其程序数据从可编程逻辑器件内部的缓存单元读取到其内部运行;
S22、CPU的程序运行后向可编程逻辑器件发送程序运行标志,当可编程逻辑器件接收到CPU发送过来的程序运行标志后,清空内部缓存数据,重复以上步骤进行下一CPU程序的加载。
本实施例中,可编程逻辑器件开辟一段程序数据缓存空间,每次只缓存一个CPU的程序数据用于加载,并且可编程逻辑器件可以判断CPU程序是否加载成功;另外可编程逻辑器件对通过串口下载的程序数据进行校验,并通过串口反馈给PC,增加了数据校验功能。
本实施例中,在执行步骤S02后,执行与CPU的数据交换与处理程序。
本发明还公开了一种基于多CPU的软件加载装置,包括多个CPU、一个FLASH存储器和一个可编程逻辑器件,多个CPU的数据总线、地址总线和控制总线均与可编程逻辑器件相连,FLASH存储器的信号线与可编程逻辑器件相连;可编程逻辑器件接收配置数据以及多个CPU的目标码,并将配置数据以及多个CPU的目标码依次写入至FLASH存储器的指定存储位置,配置数据用于指示可编程逻辑器件外围CPU的数量和程序数据的位数;在程序加载时,可编程逻辑器件读取FLASH存储器中的配置数据,并依次完成各个CPU程序数据的加载以及运行。其中可编程逻辑器件包括一路用于与PC通信的RS232接口以及一路用于烧写程序的JTAG接口,所有CPU配置为外部存储器启动。另可编程逻辑器件为FPGA。本发明的基于多CPU的软件加载装置,利用一个FLASH存储器存储多个CPU的程序数据,减少了FLASH存储器的数量,结构简单,减少了设计成本与电路板的面积。
以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。
机译: 多CPU系统及其软件更新方法
机译: 多CPU系统及其软件更新方法
机译: 多CPU软件版本匹配性能的检测方法