CN103150262B - 管道式串行接口闪存访问装置 - Google Patents
管道式串行接口闪存访问装置 Download PDFInfo
- Publication number
- CN103150262B CN103150262B CN201310112919.5A CN201310112919A CN103150262B CN 103150262 B CN103150262 B CN 103150262B CN 201310112919 A CN201310112919 A CN 201310112919A CN 103150262 B CN103150262 B CN 103150262B
- Authority
- CN
- China
- Prior art keywords
- buffering
- data
- read
- write
- flash memory
- 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
Links
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种管道式串行接口闪存访问装置。所述管道式串行接口闪存访问装置通过实现特定的管道硬件逻辑,并按自定义的管道访问协议来实现对串行接口闪存的管道方式访问。所述管道式串行接口闪存访问装置通过提供一个只有2字节I/O空间的访问界面,就可实现串行接口闪存的读、写、擦除等各种操作,并配合相应的仲裁机制,提供了离线、带内以及带外三种访问方法,为硬件系统设计时从多个途径访问串行接口闪存提供很大的灵活性,并且能够降低串行接口闪存的系统研发成本和调试周期。
Description
技术领域
本发明涉及嵌入式应用领域,具体涉及一种使得硬件系统高效灵活的实现对串行接口闪存(SPI Flash Memory)的访问的管道式串行接口闪存访问装置。
背景技术
在当前嵌入式系统存储技术中,闪存(Flash Memory)在容量、成本等方面比EEROM有着很大的优势。所以,当今嵌入式系统中,闪存经常被用于存储系统关键代码和数据。而采用串行接口SPI(Serial PeripheralInterface,也称为“串行外设接口”)的串行接口闪存芯片,由于其具有封装引脚少,芯片面积小,接口协议简单,可靠性高等优点,在嵌入式应用得到了广泛应用。
目前,嵌入式系统中对串行接口闪存进行读、写、擦除操作时,需要由CPU按SPI协议规范,通过对多个IO(输入/输出)空间的寄存器进行读写操作才能完成。由于串行接口闪存芯片是低速设备,容易造成CPU轮询等待,过多占用宝贵的CPU运行资源,影响了嵌入式系统的运行速度。
与此同时,对串行接口闪存的操作必须在嵌入式处理器正常运行后才能进行。当系统初始化使用的BOOT程序或数据放在串行接口闪存中时,则首先要求使用编程器将程序或数据烧写到串行接口闪存芯片内,之后将其按到系统主板的闪存芯片座内或直接焊接到主板上,之后才能运行。在系统调试和使用时,该方法需要对串行接口闪存芯片进行拔插或焊接,系统调试和更新比较麻烦,也容易造成硬件损伤。
发明内容
本发明解决了串行接口闪存在嵌入式系统内使用受限制、CPU访问资源时占用多的问题,实现了一种通过多种方式高效灵活访问串行接口闪存的装置,能够在离线、带外、带内三种状态下实现对串行接口闪存的读、写和更新;通过采用命令/数据缓冲,大大减少状态轮询引起的CPU等待,降低了CPU资源占用率。
根据本发明,提供了一种管道式串行接口闪存访问装置。所述管道式串行接口闪存访问装置采用一个固定优先级的三级仲裁逻辑,按照优先级由高到低的依次,所述三级仲裁逻辑依次为外部主机通过通用异步接收/发送装置的离线访问、基板管理控制器的带外访问、以及主机的带内访问。
优选地,所述管道式串行接口闪存访问装置采用自定义串行接口闪存管道访问协议,而且由实现命令数据管道的管道硬件逻辑将自定义管道访问协议转换为标准SPI接口协议。
优选地,所述管道式串行接口闪存访问装置为软件提供了一个只有2个字节IO地址的管道硬件逻辑访问接口。
优选地,管道硬件逻辑能够从字节IO接口接收访问命令和数据,检查命令的合法性和完整性,并生成满足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基址加1字节地址)状态,在管道串行接口闪存读完成标志有效时(读数据都已进入读响应缓冲),按读数据字节数直接从命令数据IO寄存器读取即可。
下面将结合优选实施例来具体描述本发明。
图2是本发明实施例的通道命令包格式的示意图。
例如,长度编码规则,分两部分实现:
A)读写长度的高4位(RLEN[7:4]或WLEN[7:4])为2的指数:
0~3——保留,视为0;
4——2^4,长度为16;
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。
其中,通用异步接收/发送装置连接至串口读字节处理模块1和写字节处理模块2,并且写字节处理模块2的输出端连接至第一多路复用器(MUX1)5的第一输入端,从而将外部主机离线状态下通过通用异步接收/发送装置对串行接口的串口操作转换为对通道缓冲的操作。
缓冲读写IO寄存器3连接至基板管理控制器(BMC)和主机,并连接至第一多路复用器(MUX1)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地址的示意图。
其中,主机和基板管理控制器有相互独立的地址空间编址,基板管理控制器中的访问机制为0xX000_000,基板管理控制器中的访问机制为0xY000_0000,同时访问相同寄存器时,基板管理控制器具有高优先级。
图5是本发明实施例的串口命令处理流程的示意图。下面参考图5来描述本发明的操作示例。
参照图5所示,本发明道式串行接口闪存装置中,以外部主机通过UART离线访问FLASH为例,步骤如下:
步骤10,人工跳线选择“UART离线访问”模式。
步骤11,外部主机向UART发送满足管道访问协议的命令/数据包。
步骤12,串口字节写模块将收到串行数据进行完整性检查,并转换为以字节为单位,发往MUX1选择模块。
步骤13,在“UART离线访问”模式下,MUX1选择将串口字节写模块的数据发送到命令/数据发送缓冲。
步骤14,命令/数据发送缓冲将接收到的命令/数据字节写入内部存储器,并检查命令/数据包是否完整;当检查到命令/数据包完整时,将该命令/数据包逐字节发给SPI协议转换模块。
步骤15,SPI协议转换模块在收到每个有效字节后,按SPI协议进行信号和时序转换后,将数据逐位发送到SPI接口上。如果为读类命令,在发送完成后,等待并接收SPI接口上的响应,将响应进行字节完整性检查,并把合法字节发送给读响应数据接收缓冲。非读类命令,则流程到此结束。
步骤16,读响应数据接收缓冲接收并存储读响应字节数据,并检查是否已收到所有读响应数据。当检查到读响应接收完成时,开始将数据按字节发到MUX2选择模块。
步骤17,在“UART离线访问”模式下,MUX2选择将读响应数据接收缓冲的数据发送到串口字节读模块。
步骤18,串口字节读模块接收到响应字节后,将数据转换成串行数据,并逐位发送至串口。
步骤19,串口将信号发回外部主机。
此外,需要说明的是,除非特别指出,否则说明书中的术语“第一”、“第二”、“第三”等描述仅仅用于区分说明书中的各个组件、元素、步骤等,而不是用于表示各个组件、元素、步骤之间的逻辑关系或者顺序关系等。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。
Claims (1)
1.一种管道式串行接口闪存访问装置,其特征在于包括:
通用异步接收/发送装置、串口读字节处理模块、写字节处理模块、缓冲读写IO寄存器、缓冲读写IO寄存器、第一多路复用器、第二多路复用器、命令/数据缓冲、256读响应数据接收缓冲、以及SPI协议转换模块;
其中,通用异步接收/发送装置连接至串口读字节处理模块和写字节处理模块,从而将外部主机离线状态下通过通用异步接收/发送装置对串行接口的串口操作转换为对通道缓冲的操作;
写字节处理模块的输出端连接至第一多路复用器的第一输入端;
缓冲读写IO寄存器连接至基板管理控制器和主机,并连接至第一多路复用器的第二输入端,以便提供主机带内和带外访问通道缓冲;
命令/数据缓冲连接至第一多路复用器的输出端,并且连接至SPI协议转换模块的输入端,从而缓冲所有对串行接口闪存的操作命令、地址以及写数据;
256读响应数据接收缓冲连接至SPI协议转换模块的输出端,而且连接至第二多路复用器的输入端,用于缓冲最大256字节的串行接口闪存读出数据;
第二多路复用器的第一输出端连接至串口读字节处理模块,并且其第二输出端连接至缓冲读写IO寄存器;
SPI协议转换模块用于检查命令和数据完整性,并将命令数据缓冲中的缓冲的SPI命令、地址及写数据按标准SPI协议发送到串行接口闪存芯片;同时用于监测并接收串行接口闪存的响应并将响应数据按字节自动接收到256读响应数据接收缓冲内;
SPI协议转换模块的输出端连接至缓冲读写IO寄存器的输入端;
缓冲读写IO寄存器用于存储管道IO基址字节地址,而且缓冲读写IO寄存器的输出端连接至基板管理控制器和主机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310112919.5A CN103150262B (zh) | 2013-04-02 | 2013-04-02 | 管道式串行接口闪存访问装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310112919.5A CN103150262B (zh) | 2013-04-02 | 2013-04-02 | 管道式串行接口闪存访问装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103150262A CN103150262A (zh) | 2013-06-12 |
CN103150262B true CN103150262B (zh) | 2015-08-12 |
Family
ID=48548355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310112919.5A Active CN103150262B (zh) | 2013-04-02 | 2013-04-02 | 管道式串行接口闪存访问装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103150262B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766280B (zh) * | 2016-08-23 | 2022-05-17 | 北京小米移动软件有限公司 | 终端通信方法及装置 |
CN108153485B (zh) * | 2017-11-20 | 2021-06-22 | 天津津航技术物理研究所 | 一种多设备协同访问sram的方法及系统 |
CN109522256B (zh) * | 2018-12-21 | 2022-10-21 | 联想(北京)有限公司 | 一种串口通信方法、网络设备、控制设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1917434A (zh) * | 2005-08-19 | 2007-02-21 | 佛山市顺德区顺达电脑厂有限公司 | 智能平台管理模块 |
CN101989244A (zh) * | 2009-08-05 | 2011-03-23 | 华为技术有限公司 | 一种信号转换装置、方法及通信设备 |
CN102377505A (zh) * | 2010-08-06 | 2012-03-14 | 研祥智能科技股份有限公司 | 一种基于串口的ipmi数据包传输方法 |
CN102486741A (zh) * | 2010-12-02 | 2012-06-06 | 鸿富锦精密工业(深圳)有限公司 | 串口共用系统及方法 |
CN102541499A (zh) * | 2011-12-22 | 2012-07-04 | 华为技术有限公司 | 计算机本地设备的管理方法及装置 |
WO2012149746A1 (zh) * | 2011-09-19 | 2012-11-08 | 华为技术有限公司 | 一种串口波特率配置方法及相关设备、系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102346520B (zh) * | 2010-07-27 | 2013-02-13 | 英业达股份有限公司 | 一种服务器系统 |
-
2013
- 2013-04-02 CN CN201310112919.5A patent/CN103150262B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1917434A (zh) * | 2005-08-19 | 2007-02-21 | 佛山市顺德区顺达电脑厂有限公司 | 智能平台管理模块 |
CN101989244A (zh) * | 2009-08-05 | 2011-03-23 | 华为技术有限公司 | 一种信号转换装置、方法及通信设备 |
CN102377505A (zh) * | 2010-08-06 | 2012-03-14 | 研祥智能科技股份有限公司 | 一种基于串口的ipmi数据包传输方法 |
CN102486741A (zh) * | 2010-12-02 | 2012-06-06 | 鸿富锦精密工业(深圳)有限公司 | 串口共用系统及方法 |
WO2012149746A1 (zh) * | 2011-09-19 | 2012-11-08 | 华为技术有限公司 | 一种串口波特率配置方法及相关设备、系统 |
CN102541499A (zh) * | 2011-12-22 | 2012-07-04 | 华为技术有限公司 | 计算机本地设备的管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103150262A (zh) | 2013-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8990462B2 (en) | Storage device, computing system including the same and data transferring method thereof | |
CN102866971B (zh) | 传输数据的装置、系统及方法 | |
CN108228513B (zh) | 一种基于fpga架构的智能串口通讯装置 | |
US7849242B2 (en) | PCI express-compatible controller and interface that provides PCI express functionality and flash memory operations to host device | |
US7130958B2 (en) | Serial interface to flash-memory chip using PCI-express-like packets and packed data for partial-page writes | |
CN101799795B (zh) | 一种1553b总线监控器及具有该监控器的总线系统 | |
CN1595381B (zh) | 桥控制器、桥和操作该桥的方法 | |
CN107111572B (zh) | 用于避免死锁的方法和电路 | |
US9021169B2 (en) | Bus system including ID converter and converting method thereof | |
CN111931442B (zh) | Fpga内嵌flash控制器及电子装置 | |
US11314418B2 (en) | Extensible storage system and method | |
US20180253391A1 (en) | Multiple channel memory controller using virtual channel | |
CN102981801B (zh) | 一种本地总线数据位宽的转换方法及装置 | |
CN103150262B (zh) | 管道式串行接口闪存访问装置 | |
US8266361B1 (en) | Access methods and circuits for devices having multiple buffers | |
CN101430739B (zh) | 一种集成芯片参数配置的系统及方法 | |
CN105573947B (zh) | 一种基于apb总线的sd/mmc卡控制方法 | |
CN101261611A (zh) | 一种外围设备间的数据传输装置和传输方法 | |
US7917659B2 (en) | Variable length command pull with contiguous sequential layout | |
CN115981730A (zh) | 用于通过互连访问设备操作系统的系统、方法和设备 | |
CN105739919A (zh) | 资料存取系统及方法 | |
CN103207823B (zh) | 一种处理器芯片仿真器 | |
CN116132383B (zh) | 信息传输装置、系统及方法 | |
CN105068965A (zh) | 基于I2C总线的NAND Flash存储方法及系统 | |
CN103914408B (zh) | 数据传输方法、存储器控制器、数据传输系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |