基于dma的spi数据传输方法及装置的制作方法

文档序号:6338497阅读:271来源:国知局
专利名称:基于dma的spi数据传输方法及装置的制作方法
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用于加载/或启动程序代码的基于 DMA (Direct Memory Access,直接存储器访问)的 SPI (Serial Peripherallnterface,串行外围设备接口)数据传输方法及装置。
背景技术
目前,在嵌入式系统中,当系统上电后,需要启动加载程序初始化硬件设备、完成内存空间映射,以使系统进入到合适的软硬件环境。启动加载程序通常写在系统中某些固态存储设备中,例如ROM (Read-Only Memory,只读存储器)或Flash (Flash Memory,闪存) 等。因此,固态存储设备与RAM (random access memory,随机存储器)间需要可靠无差错的数据交换。目前通用方式包括使用NAND FLASH/NOR FLASH加载启动程序,通过加载启动程序的方式,MCU(MicroControllerUnit,微控制器)在控制加载过程中,由于CPU (Central Processing Unit,中央处理器)的大量中断负载以及中断处理而影响了加载效率,进一步降低了系统效率,同时也对数据代码传输的可靠性造成影响。

发明内容
本发明的主要目的在于提供一种基于DMA的SPI数据传输方法及装置,旨在提高启动加载程序传输的可靠性以及系统效率。为了达到上述目的,本发明提出一种基于直接存储器访问DMA的串行外围设备接口 SPI数据传输方法,包括为SPI配置DMA控制器;通过所述DMA控制器在外部存储设备与随机存储器RAM之间进行SPI数据传输加载/下载启动程序代码。优选地,所述通过DMA控制器在外部存储设备与RAM之间进行SPI数据传输加载 /下载启动程序代码的步骤包括当系统上电后需要启动加载程序时,在所述DMA控制器的控制下,将预先固化在该外部存储设备中的启动加载程序代码通过SPI加载到所述RAM中。优选地,所述通过DMA控制器在外部存储设备与RAM之间进行SPI数据传输的步骤加载/下载启动程序代码还包括 当系统需要启动下载程序时,在所述DMA控制器的控制下,将RAM中的启动下载程序代码通过SPI下载到所述外部存储设备中。优选地,该方法还包括对所述加载/下载启动程序代码进行更新。优选地,所述外部存储设备包括只读存储器ROM或闪存Flash。优选地,所述SPI总线支持为standard SPI、dual SPI和quad SPI三种SPI模式;SPI数据总线宽度可配置。
本发明还提出一种基于DMA的SPI数据传输装置,包括DMA配置模块,用于为SPI配置DMA控制器;数据传输模块,用于通过所述DMA控制器在外部存储设备与RAM之间进行SPI数据传输加载/下载启动程序代码。优选地,所述数据传输模块还用于当系统上电后需要启动加载程序时,在所述DMA 控制器的控制下,将预先固化在该外部存储设备中的启动加载程序代码通过SPI加载到所述RAM中。优选地,所述数据传输模块还用于当系统需要启动下载程序时,在所述DMA控制器的控制下,将RAM中的启动下载程序代码通过SPI下载到所述外部存储设备中。优选地,所述装置还包括代码更新模块,用于对所述加载/下载启动程序代码进行更新。本发明提出的一种基于DMA的SPI数据传输方法及装置,通过引入DMA机制,并结合采用SPI串行总线的方式,在加载/下载启动程序代码时,由DMA控制器控制数据直接传输,其传输过程释放了 MCU控制权,从而保证了启动加载程序准确且连续的读/写,增强了启动加载程序传输的可靠性,提高了系统传输效率,而且本发明可以DMA的方式灵活支持基于SPI之上的各种通讯协议,兼容不同形式的程序代码构成,使得系统传输数据可配置特性增强。


图1是本发明基于DMA的SPI数据传输方法一实施例流程示意图;图2是本发明基于DMA的SPI数据传输装置一实施例结构示意图。为了使本发明的技术方案更加清楚、明了,下面将结合附图作进一步详述。
具体实施例方式本发明实施例解决方案主要是通过引入DMA机制,并结合采用SPI串行总线的方式,以增强启动加载程序传输的可靠性,提高系统效率。如图1所示,本发明一实施例提出一种基于DMA的SPI数据传输方法,包括步骤SlOl,为SPI配置DMA控制器;如前所述,在嵌入式系统中,当系统上电后,需要通过SPI启动加载程序初始化硬件设备、完成内存空间映射,以使系统进入到合适的软硬件环境。启动加载程序通常写在系统中某些固态存储设备中,例如ROM或Flash等。现有的NAND FLASH/NOR FLASH加载启动加载程序方式,由于大量中断负载以及中断处理而影响了加载效率,影响了数据代码传输的可靠性。在加载/下载启动程序代码时,为了实现固态存储设备与RAM之间数据代码交换的可靠性,本实施例中引入DMA机制,并结合SPI总线的特点,由MCU配置DMA控制器,通过 DMA控制器实现Flash等外部存储设备与RAM之间SPI数据的传输;其中,外部存储设备包括只读存储器ROM或闪存Flash或支持相同传输方法的装置,比如两种支持相同传输方法的相同装置对接,A装置可以读取B装置的RAM数据,同样的B装置也可以读取A装置的RAM 数据,即装置与装置之间可以进行数据交互。
标准SPI总线为三线同步接口,其采用同步串行3线方式进行通信一条时钟线 SCK,一条数据输入线M0SI,一条数据输出线MISO ;用于CPU与各种外围器件进行全双工、同步串行通讯;本发明在实际应用中,可在标准SPI基础上进行扩展,具体可在dual SPI模式下进行2位数据总线数据通信,在quad SPI模式下进行4位并行数据总线数据通信。SPI的主要特点有可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。DMA允许不同速度的硬件装置来沟通,而不需要依于CPU的大量中断负载。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,在 DMA控制器的控制下,可实现RAM与外部设备之间直接进行数据传送。步骤S102,通过DMA控制器在外部存储设备与RAM之间进行SPI数据传输加载/ 下载启动程序代码。其中,外部存储设备可以为ROM或Flash等。在本实施例中,通过DMA控制器可以实现将SPI数据(code)由RAM写到Flash 等外部存储设备中(下载过程),或者,将SPI数据code从外部Flash等存储设备加载到 RAM (加载过程)。具体地,当系统上电后需要启动加载程序时,在DMA控制器的控制下,将预先固化在该外部存储设备中的启动加载程序代码通过SPI加载到RAM中。或者,当系统需要启动下载程序时,在DMA控制器的控制下,将RAM中的启动下载程序代码通过SPI下载到外部存储设备中。进一步的,对于启动加载程序的加载过程,还可扩展到通过DMA控制器将预先固化在该外部存储设备中的启动加载程序代码通过SPI加载到需要启动加载程序的其他设备中。更进一步的,为了便于软件调试开发,本实施例方法还可对加载启动程序代码或下载启动程序代码进行更新。本实施例中SPI总线支持standard SPI、dual SPI和quad SPI三种SPI模式, 在实际应用中,本发明可以以DMA的方式灵活支持基于SPI之上的各种通讯协议如SPI
Flash/GPS.......,同时,支持dual ΙΟ/quad IO模式的设备(如高性能SPI FLash)等,可
兼容不同形式的程序代码构成。DMA控制器可根据命令和数据格式的长短,配置不同的总线宽度,发送/接收可变长度数据,由此增加了数据传输的灵活性,数据传输效率也更高。本实施例针对SPI总线和数据格式特点,创新性地加入了 DMA工作机制,由MCU启动DMA控制器,DMA控制器控制数据传输以加载/下载启动程序代码,其传输过程释放了 MCU控制权,从而保证了启动加载程序准确且连续的读/写,增强了启动加载程序传输的可靠性,提高了系统传输效率,而且本发明可以DMA的方式灵活支持基于SPI之上的各种通讯协议,兼容不同形式的程序代码构成,使得系统传输数据可配置特性增强。如图2所示,本发明一实施例提出一种基于DMA的SPI数据传输装置,包括DMA配置模块201以及数据传输模块202,本实施例装置可以设置在计算机主控芯片中,其中DMA配置模块201,用于为SPI配置DMA控制器;在嵌入式系统中,当系统上电后,需要通过SPI启动加载程序初始化硬件设备、完成内存空间映射,以使系统进入到合适的软硬件环境。启动加载程序通常写在系统中某些固态存储设备中,例如ROM或Flash等。现有的NAND FLASH/NOR FLASH加载启动加载程序方式,由于大量中断负载以及中断处理而影响了加载效率,影响了数据代码传输的可靠性。在加载/下载启动程序代码时,为了实现固态存储设备与RAM之间数据代码交换的可靠性,本实施例中引入DMA机制,并结合SPI总线的特点,由MCU控制DMA配置模块201 配置DMA控制器,通过DMA控制器实现Flash等外部存储设备与RAM之间SPI数据的传输; 其中,外部存储设备包括只读存储器ROM或闪存Flash或支持相同传输方法的装置,比如两种支持相同传输方法的相同装置对接,A装置可以读取B装置的RAM数据,同样的B装置也可以读取A装置的RAM数据,即装置与装置之间可以进行数据交互。标准SPI总线为三线同步接口,其采用同步串行3线方式进行通信一条时钟线 SCK,一条数据输入线M0SI,一条数据输出线MISO ;用于CPU与各种外围器件进行全双工、同步串行通讯。本发明在实际应用中,可在标准SPI基础上进行扩展,具体可在dual SPI模式下进行2位数据总线数据通信,在quad SPI模式下进行4位并行数据总线数据通信。SPI的主要特点有可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。DMA允许不同速度的硬件装置来沟通,而不需要依于CPU的大量中断负载。DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,在 DMA控制器的控制下,可实现RAM与外部设备之间直接进行数据传送。数据传输模块202,用于通过DMA控制器在外部存储设备与RAM之间进行SPI数据传输加载/下载启动程序代码。 其中,外部存储设备可以为ROM或Flash等。在本实施例中,数据传输模块202通过DMA控制器可以实现将SPI数据(code)由 RAM写到Flash等外部存储设备中(下载过程),或者,将SPI数据code从外部Flash等存储设备加载到RAM(加载过程)。具体地,当系统上电后需要启动加载程序时,在DMA控制器的控制下,将预先固化在该外部存储设备中的启动加载程序代码通过SPI加载到RAM中。或者,当系统需要启动下载程序时,在DMA控制器的控制下,将RAM中的启动下载程序代码通过SPI下载到外部存储设备中。进一步的,对于启动加载程序的加载过程,还可扩展到通过DMA控制器将预先固化在该外部存储设备中的启动加载程序代码通过SPI加载到需要启动加载程序的其他设备中。更进一步的,为了便于软件调试开发,本实施例装置还包括代码更新模块203,用于对加载启动程序代码或下载启动程序代码进行更新。本实施例中SPI总线支持standardSPI、dual SPI和quad SPI三种SPI模式,在实际应用中,本发明可以以DMA的方式灵活支持基于SPI之上的各种通讯协议如SPI Flash/
GPS.......,同时,支持dual 10/quad 10模式的设备(如高性能SPI FLash)等,可兼容不
同形式的程序代码构成。DMA控制器可根据命令和数据格式的长短,配置不同的总线宽度, 发送/接收可变长度数据,由此增加了数据传输的灵活性,数据传输效率也更高。本发明实施例基于DMA的SPI数据传输方法及装置,通过引入DMA机制,并结合采用SPI串行总线的方式,由DMA控制器控制数据传输以加载/下载启动程序代码,其传输过程释放了 MCU控制权,从而保证了启动加载程序准确且连续的读/写,增强了启动加载程序传输的可靠性,提高了系统传输效率,而且本发明可以DMA的方式灵活支持基于SPI之上的各种通讯协议,兼容不同形式的程序代码构成,使得系统传输数据可配置特性增强。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
权利要求
1.一种基于直接存储器访问DMA的串行外围设备接口 SPI数据传输方法,其特征在于, 包括为SPI配置DMA控制器;通过所述DMA控制器在外部存储设备与随机存储器RAM之间进行SPI数据传输加载/ 下载启动程序代码。
2.根据权利要求1所述的方法,其特征在于,所述通过DMA控制器在外部存储设备与 RAM之间进行SPI数据传输加载/下载启动程序代码的步骤包括当系统上电后需要启动加载程序时,在所述DMA控制器的控制下,将预先固化在该外部存储设备中的启动加载程序代码通过SPI加载到所述RAM中。
3.根据权利要求2所述的方法,其特征在于,所述通过DMA控制器在外部存储设备与 RAM之间进行SPI数据传输加载/下载启动程序代码的步骤还包括当系统需要启动下载程序时,在所述DMA控制器的控制下,将RAM中的启动下载程序代码通过SPI下载到所述外部存储设备中。
4.根据权利要求3所述的方法,其特征在于,还包括对所述加载/下载启动程序代码进行更新。
5.根据权利要求1-4中任一项所述的方法,其特征在于,所述外部存储设备包括只读存储器ROM或闪存Flash。
6.根据权利要求5所述的方法,其特征在于,SPI总线支持standardSPI,dual SPI和 quad SPI三种SPI模式;SPI数据总线宽度可配置。
7.一种基于DMA的SPI数据传输装置,其特征在于,包括DMA配置模块,用于为SPI配置DMA控制器;数据传输模块,用于通过所述DMA控制器在外部存储设备与RAM之间进行SPI数据传输加载/下载启动程序代码。
8.根据权利要求7所述的装置,其特征在于,所述数据传输模块还用于当系统上电后需要启动加载程序时,在所述DMA控制器的控制下,将预先固化在该外部存储设备中的启动加载程序代码通过SPI加载到所述RAM中。
9.根据权利要求8所述的装置,其特征在于,所述数据传输模块还用于当系统需要启动下载程序时,在所述DMA控制器的控制下,将RAM中的启动下载程序代码通过SPI下载到所述外部存储设备中。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括代码更新模块,用于对所述加载/下载启动程序代码进行更新。
全文摘要
本发明涉及一种基于DMA的SPI数据传输方法及装置,其中方法包括为SPI配置DMA控制器;通过DMA控制器在外部存储设备与RAM之间进行SPI数据传输加载/下载启动程序代码。本发明通过引入DMA机制,并结合采用SPI串行总线的方式,在加载/下载启动程序代码时,由DMA控制器控制数据直接传输,其传输过程释放了MCU控制权,从而保证了启动加载程序准确且连续的读/写,增强了启动加载程序传输的可靠性,提高了系统传输效率,而且本发明可以DMA的方式灵活支持基于SPI之上的各种通讯协议,兼容不同形式的程序代码构成,使得系统传输数据可配置特性增强。
文档编号G06F9/445GK102567253SQ20101058557
公开日2012年7月11日 申请日期2010年12月13日 优先权日2010年12月13日
发明者刘京芝 申请人:深圳市硅格半导体有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1