管道式串行接口闪存访问装置的制作方法

文档序号:6401399阅读:231来源:国知局
专利名称:管道式串行接口闪存访问装置的制作方法
技术领域
本发明涉及嵌入式应用领域,具体涉及一种使得硬件系统高效灵活的实现对串行接口闪存(SPI Flash Memory)的访问的管道式串行接口闪存访问装置。
背景技术
在当前嵌入式系统存储技术中,闪存(Flash Memory)在容量、成本等方面比EEROM有着很大的优势。所以,当今嵌入式系统中,闪存经常被用于存储系统关键代码和数据。而采用串行接口 SPI (Serial Peripheral Interface,也称为“串行外设接口 ”)的串行接口闪存芯片,由于其具有封装引脚少,芯片面积小,接口协议简单,可靠性高等优点,在嵌入式应用得到了广泛应用。 目前,嵌入式系统中对串行接口闪存进行读、写、擦除操作时,需要由CPU按SPI协议规范,通过对多个IO (输入/输出)空间的寄存器进行读写操作才能完成。由于串行接口闪存芯片是低速设备,容易造成CPU轮询等待,过多占用宝贵的CPU运行资源,影响了嵌入式系统的运行速度。与此同时,对串行接口闪存的操作必须在嵌入式处理器正常运行后才能进行。当系统初始化使用的BOOT程序或数据放在串行接口闪存中时,则首先要求使用编程器将程序或数据烧写到串行接口闪存芯片内,之后将其按到系统主板的闪存芯片座内或直接焊接到主板上,之后才能运行。在系统调试和使用时,该方法需要对串行接口闪存芯片进行拔插或焊接,系统调试和更新比较麻烦,也容易造成硬件损伤。

发明内容
本发明解决了串行接口闪存在嵌入式系统内使用受限制、CPU访问资源时占用多的问题,实现了一种通过多种方式高效灵活访问串行接口闪存的装置,能够在离线、带外、带内三种状态下实现对串行接口闪存的读、写和更新;通过采用命令/数据缓冲,大大减少状态轮询引起的CPU等待,降低了 CPU资源占用率。根据本发明,提供了一种管道式串行接口闪存访问装置。所述管道式串行接口闪存访问装置采用一个固定优先级的三级仲裁逻辑,按照优先级由高到低的依次,所述三级仲裁逻辑依次为外部主机通过通用异步接收/发送装置的离线访问、基板管理控制器的带外访问、以及主机的带内访问。优选地,所述管道式串行接口闪存访问装置采用自定义串行接口闪存管道访问协议,而且由实现命令数据管道的管道硬件逻辑将自定义管道访问协议转换为标准SPI接口协议。优选地,所述管道式串行接口闪存访问装置为软件提供了一个只有2个字节10地址的管道硬件逻辑访问接口。优选地,管道硬件逻辑能够从字节10接口接收访问命令和数据,检查命令的合法性和完整性,并生成满足SPI接口协议的信号和时序,以实现对串行接口闪存的访问。
优选地,管道硬件逻辑内设置有命令/数据发送缓冲和响应数据接收数据缓冲,并且管道式串行接口闪存访问装置通过记录管道IO基址字节地址的命令数据IO寄存器对两个缓冲进行访问。 优选地,CPU或外部主机通过硬件管道访问串行接口闪存时,将命令、地址和访问数据量信息一次性写入命令/数据发送缓冲;如果为读访问,在读命令发完后,读取管道状态IO寄存器状态,在管道串行接口闪存读完成标志有效时,按读数据字节数直接从命令数据IO寄存器读取。优选地,本发明的一种管道式串行接口闪存访问装置包括:通用异步接收/发送装置、串口读字节处理模块、写字节处理模块、缓冲读写IO寄存器、缓冲读写IO寄存器、第一多路复用器、第二多路复用器、命令/数据缓冲、256读响应数据接收缓冲、以及SPI协议转换模块;其中,通用异步接收/发送装置连接至串口读字节处理模块和写字节处理模块,从而将外部主机离线状态下通过通用异步接收/发送装置对串行接口的串口操作转换为对通道缓冲的操作;写字节处理模块的输出端连接至第一多路复用器的第一输入端;缓冲读写IO寄存器连接至基板管理控制器和主机,并连接至第一多路复用器的第二输入端,以便提供主机带内和带外访问通道缓冲;命令/数据缓冲连接至第一多路复用器的输出端,并且连接至SPI协议转换模块的输入端,从而缓冲所有对串行接口闪存的操作命令、地址以及写数据;256读响应数据接收缓冲连接至SPI协议转换模块的输出端,而且连接至第二多路复用器的输入端,用于缓冲最大256字节的串行接口闪存读出数据;第二多路复用器的第一输出端连接至串口读字节处理模块,并且其第二输出端连接至缓冲读写IO寄存器;SPI协议转换模块用于检查命令和数据完整性,并将命令数据缓冲中的缓冲的SPI命令、地址及写数据按标准SPI协议发送到串行接口闪存芯片;同时用于监测并接收串行接口闪存的响应并将响应数据按字节自动接收到256读响应数据接收缓冲内;SPI协议转换模块的输出端连接至缓冲读写IO寄存器的输入端;缓冲读写IO寄存器用于存储管道IO基址字节地址,缓冲读写IO寄存器的输出端连接至基板管理控制器和主机。


结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:图1是本发明实施例的总体结构的示意图;图2是本发明实施例的通道命令包格式的示意图;图3是本发明实施例的通道硬件结构的示意图;图4是本发明实施例的软件可见IO地址的示意图;图5是本发明实施例的串口命令处理流程的不意图。需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施例方式为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
本发明提供了一种管道式串行接口闪存访问装置。所述管道式串行接口闪存访问装置通过实现特定的管道硬件逻辑,并按自定义的管道访问协议来实现对串行接口闪存的管道方式访问。所述管道式串行接口闪存访问装置通过提供一个只有2字节I/O空间的访问界面,就可实现串行接口闪存的读、写、擦除等各种操作(即,只占用2字节IO空间地址,就能完成对串行接口闪存的所有访问),并配合相应的仲裁机制,提供了离线、带内以及带外三种访问方法,为硬件系统设计时从多个途径访问串行接口闪存提供很大的灵活性,并且能够降低串行接口闪存的系统研发成本和调试周期。图1是本发明实施例的总体结构的示意图。如图1所示,基于硬件系统实际需要,在本发明实施例中,管道式串行接口闪存访问装置采用一个固定优先级的三级仲裁逻辑,按照优先级由高到低的依次,所述三级仲裁逻辑依次为外部主机通过通用异步接收/发送装置UART的离线访问(人工跳线)、基板管理控制器(BMC)的带外访问、以及主机的带内访问。本发明实施例提供了一个具有固定优先级的硬件仲裁逻辑,使得该装置在实际使用时更为灵活,能够被多个主控设备访问,并提供离线、带内和带外三种访问方式。而且,本发明实施例的管道式串行接口闪存访问装置采用自定义串行接口闪存管道访问协议。而且,由实现命令数据管道的管道硬件逻辑将自定义管道访问协议转换为标准SPI接口协议。由此,使得本装置可以访问各厂家、各类型的串行接口闪存芯片。而且,本发明实施例的管道式串行接口闪存访问装置为软件提供了一个只有2个字节的IO地址的管道硬件逻辑访问接口。基于缓冲的命令和数据读写操作,能够比传统方法大大降低CPU资源占用率。管道式串行接口闪存访问装置的实现命令数据管道的管道硬件逻辑能够从字节IO接口接收访问命令和数据,检查命令的合法性和完整性,并生成满足SPI接口协议的信号和时序,实现对串行接口闪存的访问。管道硬件逻辑内设置有命令/数据发送缓冲和响应数据接收数据缓冲,通过命令数据IO寄存器(管道IO基址字节地址)对两个缓冲进行访问。CPU或外部主机通过硬件管道访问串行接口闪存时,只需将命令、地址和访问数据量信息一次性写入命令/数据发送缓冲即可,无需其它等待;如果为读访问,在读命令发完后,只需读取管道状态IO寄存器(管道IO基址加I字节地址)状态,在管道串行接口闪存读完成标志有效时(读数据都已进入读响应缓冲),按读数据字节数直接从命令数据IO寄存器读取即可。下面将结合优选实施例来具体描述本发明。图2是本发明实施例的通道命令包格式的示意图。例如,长度编码规则,分两部分实现:A)读写长度的高4位(RLEN[7:4]或WLEN[7:4])为2的指数:O 3——保留,视为O;4——2~4,长度为 I6;5-2 5,长度为 32;6-2~6,长度为 64;7——2~7,长度为 128;8-2~8,长度为 256;
B)读写长度的低4位为其实际值。C)实际读写长度为上述两端值之和(A+B)。D)写数据包括三部分:SPI命令+[3字节SPI地址]+ [写数据]。图3是本发明实施例的通道硬件结构的示意图。参照图3所示,本发明管道式串行接口闪存装置的一种实施方式包括:通用异步接收/发送装置(UART)、串口读字节处理模块1、写字节处理模块2、缓冲读写IO寄存器3、缓冲读写IO寄存器(addr disp 0x0) 4、第一多路复用器(MUX1) 5、第二多路复用器(MUX2) 6、命令/数据缓冲7、256读响应数据接收缓冲8、以及SPI协议转换模块9。其中,通用异步接收/发送装置连接至串口读字节处理模块I和写字节处理模块2,并且写字节处理模块2的输出端连接至第一多路复用器(MUXl) 5的第一输入端,从而将外部主机离线状态下通过通用异步接收/发送装置对串行接口的串口操作转换为对通道缓冲的操作。缓冲读写IO寄存器3连接至基板管理控制器(BMC)和主机,并连接至第一多路复用器(MUXl) 5的第二输入端,以便提供主机带内和带外访问通道缓冲。命令/数据缓冲7连接至第一多路复用器(MUX1)5的输出端,并且连接至SPI协议转换模块9的输入端,从而缓冲所有对串行接口闪存的操作命令、地址以及写数据;例如,命令/数据缓冲7最大支持对串行接口闪存的256字节连续写。256读响应数据接收缓冲8连接至SPI协议转换模块9的输出端,而且连接至第二多路复用器(MUX2) 6的输入端,用于缓冲最大256字节的串行接口闪存读出数据。第二多路复用器(MUX2) 6的第一输出端连接至串口读字节处理模块1,并且其第二输出端连接至缓冲读写IO寄存器3。SPI协议转换模块9负责检查命令和数据完整性,并将命令数据缓冲中的缓冲的SPI命令、地址及写数据按标准SPI协议发送到串行接口闪存芯片;同时监测并接收串行接口闪存的响应并将响应数据按字节自动接收到256读响应数据接收缓冲内。SPI协议转换模块9的输出端连接至缓冲读写IO寄存器4的输入端。缓冲读写IO寄存器4用于存储管道IO基址字节地址,缓冲读写IO寄存器4的输出端连接至基板管理控制器和主机。图4是本发明实施例的软件可见IO地址的示意图。其中,主机和基板管理控制器有相互独立的地址空间编址,基板管理控制器中的访问机制为0χΧ000_000,基板管理控制器中的访问机制为0χΥ000_0000,同时访问相同寄存器时,基板管理控制器具有高优先级。图5是本发明实施例的串口命令处理流程的示意图。下面参考图5来描述本发明的操作示例。参照图5所示,本发明道式串行接口闪存装置中,以外部主机通过UART离线访问FLASH为例,步骤如下:步骤10,人工跳线选择“UART离线访问”模式。步骤11,外部主机向UART发送满足管道访问协议的命令/数据包。步骤12,串口字节写模块将收到串行数据进行完整性检查,并转换为以字节为单位,发往MUXl选择模块。步骤13,在“UART离线访问”模式下,MUXl选择将串口字节写模块的数据发送到命令/数据发送缓冲。步骤14,命令/数据发送缓冲将接收到的命令/数据字节写入内部存储器,并检查命令/数据包是否完整;当检查到命令/数据包完整时,将该命令/数据包逐字节发给SPI协议转换模块。步骤15,SPI协议转换模块在收到每个有效字节后,按SPI协议进行信号和时序转换后,将数据逐位发送到SPI接口上。如果为读类命令,在发送完成后,等待并接收SPI接口上的响应,将响应进行字节完整性检查,并把合法字节发送给读响应数据接收缓冲。非读类命令,则流程到此结束。步骤16,读响应数据接收缓冲接收并存储读响应字节数据,并检查是否已收到所有读响应数据。当检查到读响应接收完成时,开始将数据按字节发到MUX2选择模块。步骤17,在“UART离线访问”模式下,MUX2选择将读响应数据接收缓冲的数据发送到串口字节读模块。步骤18,串口字节读模块接收到响应字节后,将数据转换成串行数据,并逐位发送至串口。步骤19,串口将信号发回外部主机。此外,需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
权利要求
1.一种管道式串行接口闪存访问装置,其特征在于,所述管道式串行接口闪存访问装置采用一个固定优先级的三级仲裁逻辑,按照优先级由高到低的依次,所述三级仲裁逻辑依次为外部主机通过通用异步接收/发送装置的离线访问、基板管理控制器的带外访问、以及主机的带内访问。
2.根据权利要求1所述的管道式串行接口闪存访问装置,其特征在于,所述管道式串行接口闪存访问装置采用自定义串行接口闪存管道访问协议,而且由实现命令数据管道的管道硬件逻辑将自定义管道访问协议转换为标准SPI接口协议。
3.根据权利要求1或2所述的管道式串行接口闪存访问装置,其特征在于,所述管道式串行接口闪存访问装置为软件提供了一个只有2个字节IO地址的管道硬件逻辑访问接口。
4.根据权利要求1或2所述的管道式串行接口闪存访问装置,其特征在于,管道硬件逻辑能够从字节IO接 口接收访问命令和数据,检查命令的合法性和完整性,并生成满足SPI接口协议的信号和时序,以实现对串行接口闪存的访问。
5.根据权利要求1或2所述的管道式串行接口闪存访问装置,其特征在于,管道硬件逻辑内设置有命令/数据发送缓冲和响应数据接收数据缓冲,并且管道式串行接口闪存访问装置通过记录管道IO基址字节地址的命令数据IO寄存器对两个缓冲进行访问。
6.根据权利要求5所述的管道式串行接口闪存访问装置,其特征在于,CPU或外部主机通过硬件管道访问串行接口闪存时,将命令、地址和访问数据量信息一次性写入命令/数据发送缓冲;如果为读访问,在读命令发完后,读取管道状态IO寄存器状态,在管道串行接口闪存读完成标志有效时,按读数据字节数直接从命令数据IO寄存器读取。
7.一种管道式串行接口闪存访问装置,其特征在于包括: 通用异步接收/发送装置、串口读字节处理模块、写字节处理模块、缓冲读写IO寄存器、缓冲读写IO寄存器、第一多路复用器、第二多路复用器、命令/数据缓冲、256读响应数据接收缓冲、以及SPI协议转换模块; 其中,通用异步接收/发送装置连接至串口读字节处理模块和写字节处理模块,从而将外部主机离线状态下通过通用异步接收/发送装置对串行接口的串口操作转换为对通道缓冲的操作; 写字节处理模块的输出端连接至第一多路复用器的第一输入端; 缓冲读写IO寄存器连接至基板管理控制器和主机,并连接至第一多路复用器的第二输入端,以便提供主机带内和带外访问通道缓冲; 命令/数据缓冲连接至第一多路复用器的输出端,并且连接至SPI协议转换模块的输入端,从而缓冲所有对串行接口闪存的操作命令、地址以及写数据; 256读响应数据接收缓冲连接至SPI协议转换模块的输出端,而且连接至第二多路复用器的输入端,用于缓冲最大256字节的串行接口闪存读出数据; 第二多路复用器的第一输出端连接至串口读字节处理模块,并且其第二输出端连接至缓冲读写IO寄存器; SPI协议转换模块用于检查命令和数据完整性,并将命令数据缓冲中的缓冲的SPI命令、地址及写数据按标准SPI协议发送到串行接口闪存芯片;同时用于监测并接收串行接口闪存的响应并将响应数据按字节自动接收到256读响应数据接收缓冲内; SPI协议转换模块的输出端连接至缓冲读写IO寄存器的输入端;缓冲读写IO寄存器用于存储管道IO基址字节地址,而且缓冲读写IO寄存器的输出端连接至基板管理 控制器和主机。
全文摘要
本发明提供了一种管道式串行接口闪存访问装置。所述管道式串行接口闪存访问装置通过实现特定的管道硬件逻辑,并按自定义的管道访问协议来实现对串行接口闪存的管道方式访问。所述管道式串行接口闪存访问装置通过提供一个只有2字节I/O空间的访问界面,就可实现串行接口闪存的读、写、擦除等各种操作,并配合相应的仲裁机制,提供了离线、带内以及带外三种访问方法,为硬件系统设计时从多个途径访问串行接口闪存提供很大的灵活性,并且能够降低串行接口闪存的系统研发成本和调试周期。
文档编号G06F12/06GK103150262SQ201310112919
公开日2013年6月12日 申请日期2013年4月2日 优先权日2013年4月2日
发明者吴志勇, 吴新军, 丁琳, 卢姝颖, 韩娇, 罗茂盛, 周达民 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1