CN102567253A - 基于dma的spi数据传输方法及装置 - Google Patents
基于dma的spi数据传输方法及装置 Download PDFInfo
- Publication number
- CN102567253A CN102567253A CN2010105855718A CN201010585571A CN102567253A CN 102567253 A CN102567253 A CN 102567253A CN 2010105855718 A CN2010105855718 A CN 2010105855718A CN 201010585571 A CN201010585571 A CN 201010585571A CN 102567253 A CN102567253 A CN 102567253A
- Authority
- CN
- China
- Prior art keywords
- spi
- data transmission
- dma
- dma controller
- ram
- 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.)
- Pending
Links
Images
Abstract
本发明涉及一种基于DMA的SPI数据传输方法及装置,其中方法包括:为SPI配置DMA控制器;通过DMA控制器在外部存储设备与RAM之间进行SPI数据传输加载/下载启动程序代码。本发明通过引入DMA机制,并结合采用SPI串行总线的方式,在加载/下载启动程序代码时,由DMA控制器控制数据直接传输,其传输过程释放了MCU控制权,从而保证了启动加载程序准确且连续的读/写,增强了启动加载程序传输的可靠性,提高了系统传输效率,而且本发明可以DMA的方式灵活支持基于SPI之上的各种通讯协议,兼容不同形式的程序代码构成,使得系统传输数据可配置特性增强。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种应用于加载/或启动程序代码的基于DMA(Direct Memory Access,直接存储器访问)的SPI(Serial PeripheralInterface,串行外围设备接口)数据传输方法及装置。
背景技术
目前,在嵌入式系统中,当系统上电后,需要启动加载程序初始化硬件设备、完成内存空间映射,以使系统进入到合适的软硬件环境。启动加载程序通常写在系统中某些固态存储设备中,例如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数据传输方法,包括:
步骤S101,为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,一条数据输入线MOSI,一条数据输出线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 IO/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,一条数据输入线MOSI,一条数据输出线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 IO/quad IO模式的设备(如高性能SPI FLash)等,可兼容不同形式的程序代码构成。DMA控制器可根据命令和数据格式的长短,配置不同的总线宽度,发送/接收可变长度数据,由此增加了数据传输的灵活性,数据传输效率也更高。
本发明实施例基于DMA的SPI数据传输方法及装置,通过引入DMA机制,并结合采用SPI串行总线的方式,由DMA控制器控制数据传输以加载/下载启动程序代码,其传输过程释放了MCU控制权,从而保证了启动加载程序准确且连续的读/写,增强了启动加载程序传输的可靠性,提高了系统传输效率,而且本发明可以DMA的方式灵活支持基于SPI之上的各种通讯协议,兼容不同形式的程序代码构成,使得系统传输数据可配置特性增强。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
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总线支持standard SPI、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所述的装置,其特征在于,所述装置还包括:
代码更新模块,用于对所述加载/下载启动程序代码进行更新。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105855718A CN102567253A (zh) | 2010-12-13 | 2010-12-13 | 基于dma的spi数据传输方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105855718A CN102567253A (zh) | 2010-12-13 | 2010-12-13 | 基于dma的spi数据传输方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102567253A true CN102567253A (zh) | 2012-07-11 |
Family
ID=46412704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105855718A Pending CN102567253A (zh) | 2010-12-13 | 2010-12-13 | 基于dma的spi数据传输方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567253A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345455A (zh) * | 2013-06-28 | 2013-10-09 | 深圳市科曼医疗设备有限公司 | 监护仪及其多mcu内存数据交换装置 |
CN104461589A (zh) * | 2013-09-17 | 2015-03-25 | 海尔集团公司 | 单片机升级方法及升级系统 |
CN108021385A (zh) * | 2017-12-29 | 2018-05-11 | 北京神州龙芯集成电路设计有限公司 | 一种板载SPI Flash的烧写系统和方法 |
CN109062834A (zh) * | 2018-06-19 | 2018-12-21 | 广州星雨光电设备有限公司 | 基于dma的spi通讯方法、电子设备、存储介质、装置 |
CN109461451A (zh) * | 2018-11-23 | 2019-03-12 | 深圳时空壶技术有限公司 | 一种基于opus的语音传输方法和设备及系统 |
CN111857605A (zh) * | 2020-08-04 | 2020-10-30 | 成都天锐星通科技有限公司 | 一种flash存储装置控制方法、装置、电子设备 |
WO2022121199A1 (zh) * | 2020-12-07 | 2022-06-16 | 长沙景嘉微电子股份有限公司 | Qspi控制器,图像处理器及闪存访问方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000597A (zh) * | 2007-01-17 | 2007-07-18 | 中山大学 | 一种基于AMBA总线的嵌入式Java处理器IP核 |
US20100146157A1 (en) * | 2008-12-10 | 2010-06-10 | Electronics And Telecommunications Research Institute | Multi-radio interfacing and direct memory access based data transferring methods and sink node for performing the same in wireless sensor network |
-
2010
- 2010-12-13 CN CN2010105855718A patent/CN102567253A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101000597A (zh) * | 2007-01-17 | 2007-07-18 | 中山大学 | 一种基于AMBA总线的嵌入式Java处理器IP核 |
US20100146157A1 (en) * | 2008-12-10 | 2010-06-10 | Electronics And Telecommunications Research Institute | Multi-radio interfacing and direct memory access based data transferring methods and sink node for performing the same in wireless sensor network |
Non-Patent Citations (3)
Title |
---|
JOHN MANGINO: "《Using DMA with High Performance Peripherals to Maximize System Performance》", 《USING DMA WITH HIGH PERFORMANCE PERIPHERALS TO MAXIMIZE SYSTEM PERFORMANCE》 * |
SAMSUNG ELECTRONICS,SOC DEVELOPMENT GROUP,KI-HEUNG,SOUTH KOREA: "《S3C2410X Users Manual,Revision 1.2》", 28 April 2003 * |
WINBOND: "《32M-BIT SERIAL FLASH MEMORY WITH DUAL AND QUAD SPI》", 24 August 2008 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103345455A (zh) * | 2013-06-28 | 2013-10-09 | 深圳市科曼医疗设备有限公司 | 监护仪及其多mcu内存数据交换装置 |
CN103345455B (zh) * | 2013-06-28 | 2016-03-30 | 深圳市科曼医疗设备有限公司 | 监护仪及其多mcu内存数据交换装置 |
CN104461589A (zh) * | 2013-09-17 | 2015-03-25 | 海尔集团公司 | 单片机升级方法及升级系统 |
CN108021385A (zh) * | 2017-12-29 | 2018-05-11 | 北京神州龙芯集成电路设计有限公司 | 一种板载SPI Flash的烧写系统和方法 |
CN109062834A (zh) * | 2018-06-19 | 2018-12-21 | 广州星雨光电设备有限公司 | 基于dma的spi通讯方法、电子设备、存储介质、装置 |
CN109062834B (zh) * | 2018-06-19 | 2022-03-11 | 广州星雨光电设备有限公司 | 基于dma的spi通讯方法、电子设备、存储介质、装置 |
CN109461451A (zh) * | 2018-11-23 | 2019-03-12 | 深圳时空壶技术有限公司 | 一种基于opus的语音传输方法和设备及系统 |
CN109461451B (zh) * | 2018-11-23 | 2022-06-03 | 深圳时空壶技术有限公司 | 一种基于opus的语音传输方法和设备及系统 |
CN111857605A (zh) * | 2020-08-04 | 2020-10-30 | 成都天锐星通科技有限公司 | 一种flash存储装置控制方法、装置、电子设备 |
WO2022121199A1 (zh) * | 2020-12-07 | 2022-06-16 | 长沙景嘉微电子股份有限公司 | Qspi控制器,图像处理器及闪存访问方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567253A (zh) | 基于dma的spi数据传输方法及装置 | |
KR100642045B1 (ko) | 호스트 프로세서로부터 멀티미디어 프로세서로 멀티미디어프로그램을 다운로드하는 시스템 및 방법 | |
US7765391B2 (en) | Multiprocessor system and boot-up method of slave system | |
CN105354070B (zh) | 一种通过i2c升级设备固件的方法 | |
CN103559066B (zh) | 基于canopen协议的嵌入式软件升级方法 | |
KR20180077163A (ko) | 소프트 코어 프로세서에 기초한 fpga 멀티-미러 업그레이드 로딩 방법 및 장치 | |
CN102779056B (zh) | 远程硬件程序更新方法及系统 | |
CN106201563A (zh) | 启动参数的配置方法和装置、主板启动的方法和装置 | |
CN101790252B (zh) | 一种固件更新的方法和系统 | |
CN104503796A (zh) | 一种基于iap的可配置全网络远程节点固件升级方法 | |
CN102184741A (zh) | 一种烧写spi flash的方法 | |
CN104468235A (zh) | 一种基于iap的可配置全网络远程节点固件升级系统及装置 | |
CN101872308A (zh) | 内存条控制系统及其控制方法 | |
CN102253844A (zh) | 一种启动处理器的方法和设备 | |
CN102654857A (zh) | 采用gpio接口模拟spi协议的通信方法 | |
CN101387993B (zh) | 对计算机系统中的设备进行动态资源配置的方法及系统 | |
CN102467472B (zh) | SoC芯片的BOOT启动装置和SoC芯片 | |
CN105760194A (zh) | 一种dsp控制系统软件升级方法及装置 | |
CN106897623A (zh) | 一种支持多安全引导的芯片及其启动方法 | |
CN101561790B (zh) | 一种主控机与从机通信的方法、系统及装置 | |
CN105550010A (zh) | 一种基于SoC的无线智能程序加载方法及系统 | |
CN102375749A (zh) | 一种采用i2c总线快速下载和更新固件的方法 | |
CN107562440A (zh) | 一种eeprom版本更新方法及装置 | |
CN106649183A (zh) | 一种基于mcu的低功耗串行通信芯片 | |
CN106354514B (zh) | 一种快速引导申威处理器bios的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120711 |