掌桥专利:专业的专利平台
掌桥专利
首页

DMA编程电路及基于DMA编程电路的编程方法

文献发布时间:2023-06-19 10:41:48


DMA编程电路及基于DMA编程电路的编程方法

技术领域

本发明涉及数据处理技术领域,尤其涉及一种DMA编程电路及基于DMA编程电路的编程方法。

背景技术

目前,SoC/MCU芯片内部通常集成有可擦写的flash存储器,用于存放程序和数据。从flash存储器读取数据时,需要给出flash地址和控制信号,直接从flash存储器读出数据。向flash存储器写数据或编程时,其方式和读数据存在较大差别。在写数据之前,需要给flash存储器一串控制时序,然后把数据写入。此过程中,flash的控制时序是由处理器执行软件产生的。因此,对flash存储器写数据或编程时需要处理器参与。然而,处理器参与写数据时,CPU资源被占用,应用程序只能停滞,无法继续执行其他应用程序,从而造成性能损失。

有鉴于此,有必要对目前flash存储器的编程技术进行进一步的改进。

发明内容

为解决上述至少一技术问题,本发明的主要目的是提供一种DMA编程电路及基于DMA编程电路的编程方法。

为实现上述目的,本发明采用的第一个技术方案为:提供一种直接存储访问DMA编程电路,包括:CPU接口、Flash控制器以及Flash存储器,所述CPU接口用于获取处理器控制信号且所述CPU接口与所述Flash控制器之间具有第一数据通道,所述DMA编程电路还包括:DMA接口、数据复用器及控制复用器;

所述DMA接口,用于获取DMA控制信号,且所述DMA接口与所述Flash控制器之间具有第二数据通道;

所述控制复用器,用于对所述DMA控制信号与所述处理器控制信号进行选择;

所述数据复用器,用于对所述第一数据通道与所述第二数据通道进行择一选通;

所述Flash控制器,用于根据所述DMA控制信号和所述第二数据通道将来自所述DMA接口的编程数据写入所述Flash存储器,或者,根据所述处理器控制信号和所述第一数据通道将来自所述CPU接口的编程数据写入所述Flash存储器。

其中,所述Flash控制器还用于对所述DMA控制信号进行校验,并在所述DMA控制信号的校验结果为正确时,控制所述DMA接口获取所述编程数据并通过所述第二数据通道将所述编程数据写入所述Flash存储器。

其中,所述数据复用器的第一输入端通过所述第一数据通道与所述CPU接口电连接,所述数据复用器的第二输入端通过所述第二数据通道与所述DMA接口电连接,所述数据复用器的输出端与所述Flash控制器电连接,所述数据复用器用于将所述第一输入端和第二输入端择一与所述输出端连接,以对所述第一数据通道和所述第二数据通道进行择一选通。

其中,所述控制复用器的第一输入端与所述CPU接口电连接,所述控制复用器的第二输入端与所述DMA接口电连接,所述控制复用器的输出端与所述Flash控制器电连接,所述控制复用器用于将所述第一输入端和第二输入端择一与所述输出端连接,以对所述DMA控制信号与所述处理器控制信号进行择一输出。

其中,所述DMA接口具有反馈端,所述反馈端与所述Flash控制器相连接,且用于接收所述Flash控制器发送的编程状态反馈信息,所述DMA接口还用于根据所述编程状态反馈信息控制所述编程数据的数据流。

其中,所述DMA编程电路还包括DMA控制器,所述DMA控制器的输出端与所述DMA接口连接,所述DMA控制器用于将所述编程数据搬运至所述DMA接口,以使所述DMA接口通过所述第二数据通道将所述编程数据写入所述Flash存储器。

为实现上述目的,本发明采用的第二个技术方案为:提供一种基于DMA编程电路的编程方法,包括:

获取DMA控制信号及处理器控制信号;

对所述DMA控制信号及所述处理器控制信号进行选择;

对第一数据通道及第二数据通道进行择一选通;

根据选择的所述DMA控制信号和所述第二数据通道将来自DMA接口的编程数据写入所述Flash存储器,或者,根据选择的所述处理器控制信号和所述第一数据通道将来自CPU接口的编程数据写入所述Flash存储器。

其中,所述方法还包括:

对所述DMA控制信号进行校验处理;

当所述DMA控制信号的校验结果为正确时,控制所述DMA接口获取编程数据。

其中,所述DMA控制信号包括DMA数据配置信息及DMA数据传输信息,所述对所述DMA控制信号进行校验处理的步骤具体为:

对所述DMA数据配置信息进行校验处理;

所述当所述DMA控制信号的校验结果为正确时,控制所述DMA接口获取所述编程数据,具体包括:

在所述DMA数据配置信息的校验结果为正确时,将所述DMA数据配置信息对应的DMA数据传输信息反馈至所述DMA接口;

根据所述DMA数据传输信息控制所述DMA接口获取所述编程数据。

其中,所述DMA数据传输信息包括传输长度值,所述根据所述DMA数据传输信息获取所述编程数据,包括:

根据所述传输长度值逐次将对应长度的所述编程数据搬运至所述DMA接口。

其中,所述对所述DMA控制信号进行校验处理之后,所述方法还包括:

在所述DMA控制信号的校验结果为错误时,控制所述DMA接口停止获取所述编程数据并输出中断信号,所述中断信号用于通知外部的处理器通过所述CPU接口和所述第一数据通道将所述编程数据写入所述Flash存储器。

其中,所述根据选择的所述DMA控制信号和所述第二数据通道将来自DMA接口的编程数据写入所述Flash存储器,还包括:

将所述DMA数据配置信息设置为第一数据块,根据所述DMA数据配置信息的存储位置设置所述第一数据块的源地址,并将所述第一数据块的目标地址设置为所述Flash控制器;

将所述编程数据设置为第二数据块,根据所述编程数据的存储位置设置所述第二数据块的源地址,并将所述第二数据块的目标地址设置为所述Flash存储器;

根据所述第一数据块和所述第二数据块的源地址以及目标地址,以块传输方式分别传输所述第一数据块和所述第二数据块。

本发明的技术方案主要包括CPU接口、DMA接口、数据复用器、控制复用器、Flash控制器及Flash存储器,通过CPU接口获取处理器控制信号以及通过DMA接口获取DMA控制信号,控制复用器对两种控制信号择一输出至Flash控制器,并根据处理器控制信号控制CPU接口获取编程数据或DMA控制信号控制DMA接口获取编程数据,DMA接口获取的编程数据由第二数据通道选通并写入Flash存储器,CPU接口获取的编程数据由第一数据通道选通并写入Flash存储器,如此,在外部处理器被占用时,即CPU接口无法写入编程数据,可以通过DMA接口写入编程数据,以释放处理器的资源,提高处理器的性能。另外,本方案还保留有可以写入编程数据的CPU接口,能够提高编程数据写入的可靠性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。

图1为本发明一实施例提供的DMA编程电路的模块方框图;

图2为本发明另一实施例提供的DMA编程电路的模块方框图;

图3为本发明一实施例提供的DMA编程电路的编程方法的流程图;

图4为本发明一实施例提供的电子设备的模块方框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明,本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。

区别于相关技术中利用处理器对Flash存储器进行编程时,需要处理器控制编程数据写入,导致处理器的资源被占用,降低了处理器性能的问题,本发明提供了一种直接存储访问DMA编程电路,旨在通过DMA接口写入编程数据,而无需通过CPU接口写入编程数据,如此,可以释放CPU的资源,提高处理器的性能。上述的DMA编程电路请参照下述的实施例,此处不再赘述。

请参照图1,图1为本发明一实施例提供的DMA编程电路的模块方框图。在本发明实施例中,该直接存储访问DMA编程电路,包括:CPU接口110、Flash控制器150以及Flash存储器160,该CPU接口110用于获取处理器控制信号且CPU接口110与Flash控制器150之间具有第一数据通道101。

该DMA编程电路还包括:DMA接口120、数据复用器130及控制复用器140;DMA接口120,用于获取DMA控制信号,且DMA接口120与该Flash控制器150之间具有第二数据通道121;控制复用器140,用于对DMA控制信号与处理器控制信号进行选择;数据复用器130,用于对第一数据通道101与第二数据通道121进行择一选通;Flash控制器150,用于根据DMA控制信号和第二数据通道121将来自DMA接口120的编程数据写入Flash存储器160,或者,根据处理器控制信号和第一数据通道101将来自CPU接口110的编程数据写入Flash存储器160。

本实施例中,本方案可以采用DMA接口120或CPU接口110获取编程数据,其中,DMA接口120用于与DMA控制器连接,CPU接口110用于与处理器连接。该处理器可以为SoC(System On Chip,片上系统)或MCU(Micro-Controller Unit,微控制器)芯片。在一些应用场景下,例如处理器执行其他的应用程序而被占用时,或者当前需要写入Flash存储器160的编程数据不需要处理器进行额外处理时,可通过DMA方式将编程数据写入Flash存储器160。具体地,DMA控制器向DMA接口120发送DMA控制信号。DMA接口120获取DMA控制信号并传送至控制复用器140,由控制复用器140对DMA控制信号进行选择并输送至Flash控制器150。Flash控制器150根据DMA控制信号和第二数据通道121将来自DMA接口120的编程数据写入Flash存储器160。此过程中无需处理器参与,相当于释放了处理器的资源,处理器可以执行其他的应用程序,能够提高处理器的性能。

为了提高编程数据写入的可靠性,还本方案还保留有CPU接口110。在另一些应用场景下,例如DMA无法写入编程数据,或者当前需要写入Flash存储器的编程数据需要处理器进行处理时,可以通过处理器将编程数据写入Flash存储器160。具体地,处理器向CPU接口110发送处理器控制信号。CPU接口110获取处理器控制信号并通过控制复用器140对处理器控制信号进行选择并输送至Flash控制器150,Flash控制器150根据处理器控制信号和第一数据通道101将来自CPU接口110的编程数据写入Flash存储器160。上述的控制复用器140及数据复用器130可以选通对应的控制信号及数据通道,以简化编程电路。

在一具体的实施例中,上述第一数据通道和第二数据通道均通过数据复用器130连接到Flash控制器。具体地,数据复用器130的第一输入端通过第一数据通道101与CPU接口110电连接,数据复用器130的第二输入端通过第二数据通道121与DMA接口120电连接,数据复用器130的输出端与Flash控制器150电连接,数据复用器130用于将第一输入端和第二输入端择一与输出端连接,以对第一数据通道101和第二数据通道121进行择一选通。

本实施例中,数据复用器130可选用二选一选择器,具体地,当数据复用器130的输出端选择连接到第一输入端时,选通CPU接口110与Flash控制器150之间的第一数据通道101;当数据复用器130的输出端选择连接到第二输入端时,选通DMA接口120与Flash控制器150之间的第二数据通道121。

在一具体的实施例中,上述控制复用器140的第一输入端与CPU接口110电连接,控制复用器140的第二输入端与DMA接口120电连接,控制复用器140的输出端与Flash控制器150电连接,控制复用器140用于将第一输入端和第二输入端择一与输出端连接,以对DMA控制信号与处理器控制信号进行择一输出。

本实施例中,控制复用器140亦可选用二选一选择器,具体地,当控制复用器140的输出端选择连接到第一输入端时,选择从CPU接口110写入的处理器控制信号;当控制复用器140的输出端选择连接到第二输入端时,选择从DMA接口120写入的DMA控制信号。

在一具体的实施例中,上述Flash控制器140还用于对DMA控制信号进行校验,并在DMA控制信号的校验结果为正确时,控制DMA接口120获取编程数据并通过第二数据通道121将编程数据写入Flash存储器160;在DMA控制信号的校验结果为错误时,控制DMA接口120停止获取编程数据并输出中断信号。

进一步的,上述的DMA接口120具有反馈端,反馈端与Flash控制器150相连接,且用于接收Flash控制器150发送的编程状态反馈信息,DMA接口120还用于根据编程状态反馈信息控制编程数据的数据流。

本实施例中,DMA接口120具有接收对DMA控制信号的校验结果发送的编程状态反馈信息的反馈端,具体地,Flash控制器150把编程数据写入到Flash存储器160之后,可生成编程状态反馈信息。该编程状态反馈信息用于向DMA控制器或外部处理器反馈当前对Flash存储器160的编程状态,其中编程状态可包括编程方式(DMA编程或CPU编程)状态、编程结果(正常或异常)状态等。DMA接口120通过反馈端接收编程状态反馈信息,以确定当前对Flash存储器的编程状态是否正常,从而根据编程状态反馈信息控制编程数据的数据流。例如,当编程状态为DMA编程且编程结果正常时,可控制DMA接口120继续获取编程数据流,并继续通过第二数据通道121发送编程数据流。作为一种实施方式,当确认编程状态为DMA编程且编程结果正常时,DMA接口120可对DMA控制器输出一确认信息,以使DMA控制器根据确认信息继续获取编程数据流。可选地,该确认信息可以是ACK(Acknowledge character,确认字符)或其他预设的用于指示编程状态的信息。

上述的CPU接口110亦具有反馈端,该反馈端与Flash控制器150相连接,且用于接收Flash控制器150发送的编程状态反馈信息。CPU接口110通过反馈端接收编程状态反馈信息,以确定当前对Flash存储器160的编程状态是否正常,从而根据编程状态反馈信息控制编程数据的数据流。例如当编程状态为DMA编程且编程结果异常时,可控制CPU接口110获取编程数据流,并继续通过第一数据通道101发送编程数据流。作为一种实施方式,在对DMA控制信号的校验结果为错误时,CPU接口110可对处理器输出一中断信号,以通知处理器根据中断信号获取编程数据流。

请参照图2,图2为本发明另一实施例提供的DMA编程电路的模块方框图。具体地,该DMA编程电路还包括DMA控制器170,DMA控制器170的输出端与DMA接口120连接,DMA控制器170用于将编程数据搬运至DMA接口120,以使DMA接口通过第二数据通道121将编程数据写入Flash存储器160。通过DMA控制器170可以将外部的编程数据搬送至DMA接口,进而通过第二数据通道121将编程数据写入Flash存储器160。

请参照图3,图3为本发明一实施例提供的DMA编程电路的编程方法的流程图。在本发明的实施例中,该基于DMA编程电路的编程方法,包括如下步骤:S110、获取DMA控制信号及处理器控制信号;S120、对DMA控制信号及处理器控制信号进行选择;S130、对第一数据通道及第二数据通道进行择一选通;S140、根据选择的DMA控制信号和第二数据通道将来自DMA接口的编程数据写入Flash存储器,或者,根据选择的处理器控制信号和第一数据通道将来自CPU接口的编程数据写入Flash存储器。

在一些应用场景下,例如处理器执行其他的应用程序而被占用时,或者当前需要写入Flash存储器的编程数据不需要CPU进行额外处理时,可通过DMA方式将编程数据写入Flash存储器。具体地,通过DMA接口获取DMA控制信号,然后通过控制复用器对DMA控制信号进行选择,Flash控制器根据DMA控制信号和第二数据通道将来自DMA接口的编程数据写入Flash存储器。整个编程数据写入的过程无需处理器参与,相当于释放了处理器的资源。在另一些应用场景下,例如DMA无法写入编程数据,或者当前需要写入Flash存储器的编程数据需要处理器进行处理时,可以通过处理器将编程数据写入Flash存储器。具体地,处理器向CPU接口发送处理器控制信号。CPU接口获取处理器控制信号并通过控制复用器对处理器控制信号进行选择,Flash控制器根据处理器控制信号和第一数据通道将来自CPU接口的编程数据写入Flash存储器。

在一具体的实施例中,方法还包括:对DMA控制信号进行校验处理;当DMA控制信号的校验结果为正确时,控制DMA接口获取编程数据;当DMA控制信号的校验结果为错误时,控制DMA接口停止获取编程数据并输出中断信号,中断信号用于通知外部的处理器通过CPU接口和第一数据通道将编程数据写入Flash存储器。

本实施例中,利用Flash控制器可以对获取的DMA控制信号进行校验,并根据校验结果控制编程数据写入Flash存储器。具体地,在DMA控制信号的校验结果为正确时,Flash控制器控制DMA接口继续获取编程数据,并通过第二数据通道将编程数据写入Flash存储器。在DMA控制信号的校验结果为错误时,Flash控制器控制DMA接口停止获取编程数据并输出中断信号,中断信号输送至处理器后,由处理器根据中断信号通过CPU接口和第一数据通道将编程数据写入Flash存储器。

进一步的,该DMA控制信号包括DMA数据配置信息及DMA数据传输信息,对DMA控制信号进行校验处理的步骤,具体为:对DMA数据配置信息进行校验处理。

当DMA控制信号的校验结果为正确时,控制DMA接口获取编程数据,具体包括:在DMA数据配置信息的校验结果为正确时,将DMA数据配置信息对应的DMA数据传输信息反馈至DMA接口;根据DMA数据传输信息控制DMA接口获取编程数据。

本实施例中,在Flash控制器对DMA数据配置信息的校验结果为正确时,说明此时外部存在与DMA数据配置信息相应的编程数据,如此,在Flash控制器将校验成功结果反馈给DMA接口,并根据DMA数据传输信息控制DMA接口继续获取编程数据,并将编程数据通过第二数据通道写入Flash存储器。在DMA数据配置信息的校验结果为错误时,说明DMA无法写入编程数据,Flash控制器控制DMA接口停止获取编程数据并输出中断信号,中断信号输送至处理器后,由处理器根据中断信号通过CPU接口和第一数据通道将编程数据写入Flash存储器。

进一步的,该DMA数据传输信息包括传输长度值,根据DMA数据传输信息获取编程数据,包括:根据传输长度值逐次将对应长度的编程数据搬运至DMA接口。

本实施例中,上述的传输长度值可以根据具体要求来设置,整个编程数据可以分为若干个传输长度的数据段,编程数据传输时,DMA接口可以逐个获取数据段,并将多个数据段依次通过第二数据通道写入Flash存储器。

在一具体的实施例中,根据选择的DMA控制信号和第二数据通道将来自DMA接口的编程数据写入Flash存储器,还包括:将DMA数据配置信息设置为第一数据块,根据DMA数据配置信息的存储位置设置第一数据块的源地址,并将第一数据块的目标地址设置为Flash控制器;将编程数据设置为第二数据块,根据编程数据的存储位置设置第二数据块的源地址,并将第二数据块的目标地址设置为Flash存储器;根据第一数据块和第二数据块的源地址以及目标地址,以块传输分别传输第一数据块和第二数据块。

本实施例中,在Flash控制器控制编程数据写入Flash存储器时,需要先对DMA控制信号及编程数据进行配置。具体地,DMA控制信号包括DMA数据配置信息及DMA数据传输信息。根据DMA数据配置信息配置为第一数据块,并根据DMA数据配置信息的存储位置设置第一数据块的源地址,并将第一数据块的目标地址设置为Flash控制器,如此,在DMA控制信号传输时,以块传输方式将第一数据块从源地址传输至Flash控制器,实现先传输DMA控制信号。同样,将编程数据设置为第二数据块,根据编程数据的存储位置设置第二数据块的源地址,并将第二数据块的目标地址设置为Flash存储器,如此,在编程数据传输时,以块传输方式将第二数据块从源地址写入Flash存储器的指定位置,实现对编程数据的写入。

请参阅图4,图4为本发明一实施例提供的电子设备的模块方框图。该电子设备可用于实现前述实施例中的DMA编程电路的编程方法。如图4所示,该电子设备主要包括:存储器301、处理器302、总线303及存储在存储器301上并可在处理器302上运行的计算机程序,存储器301和处理器302通过总线303连接。处理器302执行该计算机程序时,实现前述实施例中的基于DMA编程电路的编程方法。其中,处理器的数量可以是一个或多个。

存储器301可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器301用于存储可执行程序代码,处理器302与存储器301耦合。

进一步的,本发明实施例还提供了一种可读存储介质,该可读存储介质可以是设置于上述各实施例中的电子设备中,该可读存储介质可以是前述图4所示实施例中的存储器。

该可读存储介质上存储有计算机程序,该程序被处理器执行时实现前述实施例中的基于DMA编程电路的编程方法。进一步的,该计算机可存储介质还可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的技术方案构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。

相关技术
  • DMA编程电路及基于DMA编程电路的编程方法
  • 基于微控制器的LED串联驱动控制电路以及微控制器的编程方法
技术分类

06120112641017