多处理器共用FLASH的装置及固件程序加载与升级方法
技术领域
本发明涉及数据信号处理技术,尤其涉及一种多处理器共用FLASH的装置及固件程序加载与升级方法。
背景技术
在数据信号处理领域,已经有不少研究实现使单板上的多处理器共享非易失性存储器的问题。其中国防科技大学ATR重点实验室王宏义和陈曾平发表文献《DSP和FPGA共用FLASH进行配置的方法》,该文献中采用TI公司的64系列芯片和FPGA共用FLASH,其实现方法是将FLASH和FPGA分别挂接在DSP的两个EMIF接口上,DSP程序加载bootloader之后将FPGA的程序代码通过另外的一个EMIF端口从FLASH加载到FPGA里面;该文也提到FLASH代码可以通过PCI接口实现在线升级,但是具体实现方式未作披露。根据文献中的示意图可以推断,其代码升级的前提应该是DSP能正常加载BOOTLOADER,否则无法将PCI接口的数据擦写到FLASH里面;对于某些只有一个EMIF的接口的DSP器件,本方案实现受到限制。
另据2008年12月17日公开的专利CN101324868,其通过在BOOT FLASH和处理器之间加上一个可编程的PLD器件,可以实现不同的字节序CPU和不同字节序的FLASH之间的动态选择性连接。该发明的方案仅仅只针对单一处理器独享FLASH的方式。
还有2010年12月01日公开的实用新型专利CN101901156A,其实现了DSP和FPGA的程序存储器的共享,但是其加载方法仍然是DSP运行起来之后,执行保存在FLASH中的FPGA程序加载代码,FPGA的程序加载严重依赖DSP的运行,而且从其结构图中可以看出,要实现程序代码的升级也需要有DSP正常运行的前提条件,在FLASH中程序受损之后无法下载新的代码到FLASH中。
发明内容
本发明的目的是提供一种多处理器共用FLASH的装置及固件程序加载与升级方法,解决DSP不成功启动而影响FPGA程序加载的问题。
为了解决上述技术问题,本发明采用了如下技术手段:一种多处理器共用FLASH的装置,包括至少一个DSP处理器与至少一个FPGA处理器,一个FLASH存储器;一个FLASH管理器件;所述FLASH管理器件分别与所述DSP处理器、所述FPGA处理器双向控制连接,且所述FLASH管理器件控制连接所述FLASH存储器。
进一步的,所述FLASH存储器的低位地址线与所述DSP处理器的地址线通过FLASH管理器件相连接;所述FLASH存储器的高位地址线与FLASH管理器件连接,所述高位地址和所述低位地址一起用于指示所述FPGA处理器的代码存储位置。
进一步的,所述FLASH存储器与所述DSP处理器通过数据线相连接;所述FLASH管理器件与所述FPGA处理器通过数据线相连接。
进一步的,所述FLASH管理器件为集成ROM模块的可编程逻辑器件。
进一步的,当所述DSP处理器为多个时,所述DSP处理器与所述FLASH管理器件之间通过一个选通控制开关连接。
进一步的,当所述FPGA处理器为多个时,所述DSP处理器与所述FLASH管理器件之间有片选控制线连接。
本发明提供的另一种技术方案:一种固件程序加载与升级方法,所述方法通过如下步骤实现:
步骤1、所述DSP处理器向所述FLASH管理器件发出程序加载请求,所述FLASH管理器件对所述DSP处理器做出请求应答;当应答为响应时,FLASH管理器件将DSP处理器的地址转接到所述FLASH存储器的地址线上,并向所述FLASH存储器发出数据读出指令,所述FLASH存储器通过所述DSP处理器的外部存储器总线EMIF接口,输出程序数据给所述DSP处理器;
步骤2、所述FLASH管理器件将所述FLASH存储器中的FPGA处理器的逻辑数据取出,并进行数据宽度的转换,再以符合FPGA程序加载的数据宽度传送至FPGA处理器内部,完成对FPGA处理器程序的加载;
步骤3、外部程序从程序升级接口向所述FLASH管理器件发出程序升级指令,所述FLASH管理器件识别升级指令,锁存外部程序提供的升级数据,然后对所述FLASH存储器进行擦写,完成对所述FLASH存储器进行程序代码升级。当所述DSP处理器为多个时,所述FLASH管理器件通过选通控制开关,响应其中唯一的DSP处理器的程序加载请求。
进一步的,当所述DSP处理器为多个时,所述FLASH管理器件通过选通控制开关,响应其中唯一的DSP处理器的程序加载请求。
进一步的,所述方法还包括:当所述程序升级接口采用串行的方式时,所述FLASH管理器件根据控制线将数据线上的串行数据转换成并行数据,从FLASH存储器的相应地址空间开始递增地址寻址擦写FLASH存储器。
进一步的,所述程序升级接口为PCI接口、PCIE接口或者通用串行接口中的任一种。
本发明由于采用以上所述技术方案,FPGA和DSP的程序加载通道各自独立,FPGA的程序加载不依赖于DSP是否成功启动。
附图说明
本发明的多处理器共用FLASH的装置及固件程序加载与升级方法由以下的实施例及附图详细给出。
图1为本发明实施例多处理器共用FLASH的装置实施例的控制拓扑图;
图2为本发明实施例多处理器共用FLASH的装置实施例的数据线连接图;
图3本发明实施例中变换处理器数量后的控制拓扑图。
具体实施方式
以下将对本发明的多处理器共用FLASH的装置与固件程序加载与升级方法作进一步的详细描述。
如图1所示,一种多处理器共用FLASH的装置,包括一个DSP处理器2与一个FPGA处理器3,一个FLASH存储器1,以及一个FLASH管理器件4;所述FLASH管理器件4分别与所述DSP处理器2、所述FPGA处理器3双向控制连接,且所述FLASH管理器件4控制连接所述FLASH存储器1。为了实现DSP与FPGA共用一个FLASH,在地址线的分配上,将所述FLASH存储器1的低端地址线与所述DSP处理器2的地址线通过FLASH管理器件4相连接,所述FLASH存储器的最高两位地址线与FLASH管理器件4的地址线相连接,所述高位地址和所述低位地址一起用于指示所述FPGA处理器的代码存储位置;图中的箭头可以理解为一种控制方向。
DSP处理器2向FLASH管理器件4发出程序加载请求②,FLASH管理器件4响应或者不响应,都会向DSP处理器2作出应答③。当FLASH管理器件4响应DSP处理器2的程序加载请求时,FLASH管理器件4就会将DSP处理器2的地址线转接到FLASH存储器1的低端地址线上,并对FLASH存储器1发出读出指令①;FPGA处理器3内程序采用被动加载方式,FLASH管理器件4向FLASH存储器1发送读出指令①,将数据读进FLASH管理器件4内部,然后向FPGA处理器3提供程序加载指令和加载时钟⑤,程序加载完成后FPGA处理器3输出加载完成信号④到FLASH管理器件4。
在需要进行程序升级时,程序升级接口5发送程序升级命令⑥到FLASH管理器4,FLASH管理器4会将程序升级结果⑦反馈给程序升级接口5。
如图2所示,所述FLASH存储器1与所述DSP处理器2通过数据线相连接;所述FLASH管理器件4与所述FPGA处理器3通过数据线相连接。所述FLASH管理器件4为集成ROM模块的可编程逻辑器件。在DSP处理器2的程序加载过程中,数据经过数据线直接进入DSP处理器2;在FPGA处理器3程序加载过程中,FLASH管理器件4经过数据线获取FLASH存储器1内的数据,经由数据线传输到FPGA处理器3内部;在程序升级的过程中,程序升级接口5的程序数据经过数据线进入FLASH管理器4内部,FLASH管理器件4利用数据线对FLASH存储器1进行擦写。
如图1和图2所示,本发明中一种固件程序加载及固件程序升级方法,所述方法通过如下步骤实现:
S1、所述DSP处理器2向所述FLASH管理器件4发出程序加载请求,所述FLASH管理器件4对所述2处理器2做出请求应答;当应答为响应时,FLASH管理器件4将DSP处理器2的地址转接到所述FLASH存储器1的地址线上,并向所述FLASH存储器1发出数据读出指令,所述FLASH存储器1通过所述DSP处理器2的外部存储器总线EMIF接口,输出程序数据给所述DSP处理器2;
S2、所述FLASH管理器件4将所述FLASH存储器1中的FPGA处理器3的逻辑数据取出,并进行数据宽度的转换,再以符合FPGA程序加载的数据宽度传送至FPGA处理器3内部,完成对FPGA处理器3程序的加载;
S3、外部程序从程序升级接口5向所述FLASH管理器件4发出程序升级指令,所述FLASH管理器件4识别升级指令,锁存外部程序提供的升级数据,然后对所述FLASH存储器1进行擦写,完成对所述FLASH存储器1进行程序代码升级。
在本实施例中,所述固件程序升级方法升级完成之后将向外部程序反馈相应的信息,如果在程序升级过程中出错,FLASH管理器件4发出升级出错信息给外部程序。
在本实施例中,当所述程序升级接口5采用串行的方式时,所述FLASH管理器件4根据控制线将数据线上的串行数据转换成并行数据,从FLASH的相应地址空间开始递增地址寻址擦写FLASH。所述程序升级接口5为PCIE接口,在其他实施例中也可以采用PCI接口或者通用串行口。
当然,上述实施例中,FPGA处理器3与DSP处理器2均可以采用多个的方式共用FLASH,在本实施例中采取两个FPGA处理器3与两个DSP处理器2,其控制拓扑图如图3所示。
在多个(或两个)DSP处理器2存在的情况下,DSP处理器21或22的数据总线不宜直接与FLASH存储器的数据总线连接。而应在DSP处理器21或22的EMIF总线上加一个总线选通控制开关6,FLASH管理器件4只响应其中一个DSP处理器21或22的程序加载请求,其它的DSP处理器无法获得程序加载权限;FLASH管理器件4通过控制选通控制开关6以防止没有获得加载权限的DSP处理器错误的锁存数据。没能获得程序加载权限的DSP处理器可以一直保持着程序加载请求等待FLASH管理器件4响应。
对于多个FPGA处理器情况下,FLASH管理器件4通过对FPGA处理器31和32的片选控制分别加载各个FPGA处理器3的程序,如果FPGA处理器31和32的程序相同,FLASH管理器件4也可以同时选中两个FPGA进行程序加载。
在DSP处理器21、22和FPGA处理器31、32的加载过程中,FLASH管理器件4需要对选通控制开关6进行管理,以准确的从FLASH存储器1中获取FPGA处理器3需要的数据;具体的说就是FLASH管理器件4在从FLASH存储器1获取加载FPGA处理器3的数据时,需要暂时的关闭掉选通控制开关6,以防止FPGA处理器31、32需要的数据对DSP处理器21或22造成影响,同时也保证了FLASH管理器件4获得的数据没有收到DSP处理器21或22的影响。
本发明由于采用以上所述技术方案,FPGA和DSP处理器的程序加载通道各自独立,FPGA处理器的程序加载不依赖于DSP处理器是否成功启动。
由于以上仅为本发明的较佳实施例,本发明的保护范围不应受此限制,即凡是依本发明的权利要求书及本发明说明书内容所作的简单的等效变化与修饰,均应仍属本发明专利涵盖的范围内。