一种动态改变dma外围设备数据传输申请优先级的方法

文档序号:6573714阅读:260来源:国知局
专利名称:一种动态改变dma外围设备数据传输申请优先级的方法
技术领域
本发明涉及系统芯片中先进高性能总线的数据传输,尤其涉及一种动态改变DMA外围设备数据传输申请优先级的方法。
背景技术
传统的IC设计方法已无法适应新的SoC(System-on-a-chip,系统芯片)设计要求,从以功能设计为基础的传统IC设计流程转变到以功能整合为基础的SoC设计全新流程。SoC是在单个芯片上集成一个完整的系统,可以实现从确定系统功能开始,到软硬件划分,并完成设计的整个过程。其中,AMBA(Advanced Microcontroller Bus Architecture,先进微控制器总线体系结构)规范是SoC的一种较为成熟的总线标准;其定义了AHB总线(Advanced High-performance Bus,先进高性能总线)。
在AHB总线上,DMA(Direct Memory Access,直接内存存取)控制器作为与ARM(Advanced RISC Machines)处理器并列的主器件出现。一般主设备都包含一个用于完成存储器直接存取的DMA控制器,以减少ARM核(Core)的数据处理压力。ARM核通过从设备设定DMA控制器的寄存器,包括起始地址、数据长度、数据读写使能和读写方向等。DMA控制器通过AHB主设备接口申请使用HB总线、完成DMA请求和响应接口和存储器之间的DMA操作。完成操作后DMA控制器将产生中断通知ARM核任务的完成情况。通道和控制逻辑完成相应的控制功能。在大多数情况下,DMA控制器可以替代ARM处理器进行数据搬运(即数据传输)工作,包括存储器到存储器、存储器到外围设备、外围设备到存储器以及外围设备之间的数据搬运,从而保证ARM处理器在执行指令期间不介入到具体的数据搬运工作中,从而提高ARM处理器的工作效率。外围设备包括UART(异步串口)、SSP(同步串口)、摄像头接口、USB接口、I2S接口等。
DMA控制器与外围设备之间连接的基本架构如图1所示,在DMA控制器内部有N个通道,这些通道的作用都是完成DMA在存储器和外围设备之间的数据的传输。这N个通道一般都是采用固定优先级的方式,比如通道1优先级最高,通道2优先级次之,通道N优先级最低。需要通过DMA控制器进行数据传输的外围设备通常情况下都有两组线与DMA控制器的通道相连,一组是数据传输申请线(request),一组是传输结束标志线(ack)。当需要进行数据传输时,外围设备发出数据传输申请信号,即request信号从0变成1,DMA控制器接收到request信号变化后,则开始进行数据传输;当传输结束时,DMA控制器发出传输结束标志信号,即ack信号从0变成1,外围设备接收到ack信号变化后,request信号从1变成0,停止数据传输申请。当同时有多个request信号有效时,DMA控制器根据这些request信号所连接的DMA通道的优先级来决定开始进行哪个通道的数据传输。
目前AHB总线上广泛应用的DMA控制器通道与外围设备申请线之间的连接一般都是通过直连的方式,即外围设备1与通道1连接,外围设备2与通道2连接,外围设备N与通道N连接,如图2所示。这种方式也称为固定连接方式,即在逻辑设计过程中就已经将不同外围设备的数据传输的优先级确定,比如通道1优先级>通道2优先级>...>通道N优先级时,外围设备数据传输的优先级也确定为外围设备1优先级>外围设备2优先级>...>外围设备N优先级。这种方式设计不够灵活,系统在使用DMA控制器进行存储器和外围设备之间数据传输时,有时需要灵活地对外围设备的数据传输申请优先级进行配置,以便于提高系统的工作效率。当系统对外围设备数据传输优先级的需求发生变化时,例如,当系统需要提升对外围设备3的优先级时,这种固定连接方式不能满足系统的需求,从而导致系统的工作效率降低。
因此,现有技术存在缺陷,需要改进。

发明内容
本发明的目的在于提供一种动态改变DMA外围设备数据传输申请优先级的方法,用于灵活调整DMA外围设备进行数据传输的优先级。
本发明的技术方案如下一种动态改变DMA外围设备数据传输申请优先级的方法,其包括步骤A1、设置各DMA通道的优先级控制寄存器;A2、为各优先级控制寄存器赋予优先级值;A3、在进行数据传输时,读取各通道优先级控制寄存器的值以确定所对应的DMA通道的优先级,按优先级顺序依次进行各DMA通道的数据传输。
所述的方法,其中,步骤A1还包括初始化所述优先级控制寄存器,为所述优先级控制寄存器赋予初始优先级值。
所述的方法,其中,所述初始优先级值为所述优先级控制寄存器所对应DMA通道的通道号。
所述的方法,其中,步骤A2中赋予优先级值的过程包括为某一DMA通道的优先级控制寄存器赋予最高优先级值;初始优先级值高于该DMA通道初始优先级值的其他DMA通道,将其优先级值依次递减一级;初始优先级值低于该DMA通道初始优先级值的其他DMA通道,其优先级值保持不变。
所述的方法,其中,步骤A2中赋予优先级值的过程包括将两DMA通道的优先级值互置。
所述的方法,其中,步骤A2中赋予优先级值的过程是,为全部DMA通道的所述优先级控制寄存器赋予优先级值。
采用上述方案,本发明提供了一种动态改变DMA外围设备数据传输申请优先级的方法,从而当系统对外围设备数据传输优先级的需求发生变化时,能够灵活调整DMA外围设备进行数据传输的优先级,确保了系统的工作效率。


图1为现有技术的DMA控制器与外围设备连接的基本架构示意图;图2为现有技术的DMA控制器与外围设备的固定连接方式示意图;图3为本发明方法的流程图。
具体实施例方式
以下对本发明的较佳实施例加以详细说明。
本发明提供了一种动态改变DMA外围设备数据传输申请优先级的方法,如图3所示,其包括以下步骤A1、设置各DMA通道的优先级控制寄存器。优先级控制寄存器属于DMA控制器的寄存器组,在此不作赘述。此时,还可以包括初始化步骤,即初始化所述优先级控制寄存器,为所述优先级控制寄存器赋予初始优先级值。所述初始优先级值可以为所述优先级控制寄存器所对应DMA通道的通道号,也可以是其他数值;所述初始优先级值可以按通道号顺序或逆序赋值,也可以赋予相同的优先级值,还可以随机赋值;本发明对此均不作额外限定。
A2、为各优先级控制寄存器赋予优先级值。其中,无论步骤A1中是否进行了初始化操作,所述赋予优先级值,可以是为全部DMA通道的所述优先级控制寄存器赋予优先级值,特别是,当没有对优先级控制寄存器进行初始化时,即没有为优先级控制寄存器赋予初始优先级值时。
其中,当已经完成对优先级控制寄存器进行初始化时,所述赋予优先级值,可以是为某一DMA通道的优先级控制寄存器赋予最高优先级值;初始优先级值高于该DMA通道初始优先级值的其他DMA通道,将其优先级值依次递减一级;初始优先级值低于该DMA通道初始优先级值的其他DMA通道,其优先级值保持不变。当为某一DMA通道的所述优先级控制寄存器赋予与另一DMA通道初始优先级值相同的优先级值时,也可以将两DMA通道的优先级值互置将两DMA通道的优先级控制寄存器分别赋予对方的优先级值;其他DMA通道优先级值保持不变。
A3、在进行数据传输时,读取各通道优先级控制寄存器的值以确定所对应的DMA通道的优先级,按优先级顺序依次进行各DMA通道的数据传输。当同时有多个request信号有效时,DMA控制器根据这些request信号所连接的DMA通道的优先级来决定开始进行哪个通道的数据传输。当两个或以上DMA通道的优先级控制寄存器的优先级值相同时,可以按照通道号顺序优先执行DMA通道的数据传输,也可以按照通道号逆序优先执行DMA通道的数据传输,还可以随机执行DMA通道的数据传输;一般情况下可以避免两个或以上DMA通道的优先级控制寄存器的优先级值相同;本发明对此均不作额外限定。
所述优先级控制寄存器可以为2位(bit)、4位、6位、8位、16位等,但不限于这些位数;该寄存器的位数是由DMA通道数来决定的,如果小于8个通道,则是3位,如果是大于8个通道同时小于16个通道,则是4位,以此类推。当所述外围设备连接控制寄存器位数较大时,可以支持较多的DMA通道。
以下对本发明方法举出一具体例子,其具有下列步骤。
1、每个通道增加通道优先级控制寄存器。通道优先级控制寄存器该寄存器初值为该通道的通道号,比如通道1的优先级控制寄存器的值为1,通道2的优先级控制寄存器的值为2,通道N的优先级控制寄存器的值为N,此时通道1优先级最高,通道2优先级次之,通道N优先级最低。假设有8个通道,则该寄存器的值如表1所示。当需要对外围设备数据传输申请的优先级进行改变时,只需要对与该外围设备相连接的通道的优先级控制寄存器进行配置。
通道优先级控制寄存器的初值配置可以如表1所示。
表1

2、给寄存器赋值,如果需要通道7的优先级最高,则可将通道7的优先级控制寄存器的值配置为1。此时可以将原通道1的优先级控制寄存器的值可以配置为7;也可以将原通道1的优先级控制寄存器的值配置为2,将原通道2的优先级控制寄存器的值配置为3,......将原通道6的优先级控制寄存器的值配置为7,其余通道的优先级控制寄存器的值不变。
具体地说,给寄存器赋值,如果需要通道N的优先级最高,则可将第通道N的优先级控制寄存器的值配置为1。比如有4个DMA通道,系统希望通道3的优先级>通道2的优先级>通道4的优先级>通道1的优先级,则需要将通道3的优先级控制寄存器配置为1,通道2的优先级控制寄存器配置为2,通道4的优先级控制寄存器配置为3,通道1的优先级控制寄存器配置为4。此时,各通道的优先级控制寄存器配置值如表2所示。
表2

3、DMA控制器开始搬运数据时,如果同时有多个request信号有效,DMA控制器根据这些request信号所连接的DMA通道的优先级来决定开始进行哪个通道的数据传输。
例如,当通道7的优先级控制寄存器的值配置为1时,则表明该通道数据传输的优先级最高,DMA控制器首先发起通道7的数据传输。
例如,对应于表2所示的4通道来说,DMA控制器先进行通道3的数据传输,然后进行通道2的数据传输,再进行通道4的数据传输,最后进行通道1的数据传输。
通过上述动态改变DMA通道的优先级控制寄存器的优先级值的方式,就可以达到动态改变DMA外围设备数据传输申请优先级的目的。
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
权利要求
1.一种动态改变DMA外围设备数据传输申请优先级的方法,其包括步骤A1、设置各DMA通道的优先级控制寄存器;A2、为各优先级控制寄存器赋予优先级值;A3、在进行数据传输时,读取各通道优先级控制寄存器的值以确定所对应的DMA通道的优先级,按优先级顺序依次进行各DMA通道的数据传输。
2.根据权利要求1所述的方法,其特征在于,步骤A1还包括初始化所述优先级控制寄存器,为所述优先级控制寄存器赋予初始优先级值。
3.根据权利要求2所述的方法,其特征在于,所述初始优先级值为所述优先级控制寄存器所对应DMA通道的通道号。
4.根据权利要求2所述的方法,其特征在于,步骤A2中赋予优先级值的过程是,为全部DMA通道的所述优先级控制寄存器赋予优先级值。
5.根据权利要求2所述的方法,其特征在于,步骤A2中赋予优先级值的过程包括为某一DMA通道的优先级控制寄存器赋予最高优先级值;初始优先级值高于该DMA通道初始优先级值的其他DMA通道,将其优先级值依次递减一级;初始优先级值低于该DMA通道初始优先级值的其他DMA通道,其优先级值保持不变。
6.根据权利要求2所述的方法,其特征在于,步骤A2中赋予优先级值的过程包括将两DMA通道的优先级值互置。
7.根据权利要求1所述的方法,其特征在于,步骤A2中赋予优先级值的过程是,为全部DMA通道的所述优先级控制寄存器赋予优先级值。
全文摘要
本发明提供了一种动态改变DMA外围设备数据传输申请优先级的方法,其包括步骤A1.设置各DMA通道的优先级控制寄存器;A2.为各优先级控制寄存器赋予优先级值;A3.在进行数据传输时,读取各通道优先级控制寄存器的值以确定所对应的DMA通道的优先级,按优先级顺序依次进行各DMA通道的数据传输。采用上述方案,能够动态改变DMA外围设备数据传输申请的优先级,从而当系统对外围设备数据传输优先级的需求发生变化时,能够灵活调整DMA外围设备进行数据传输的优先级,确保了系统的工作效率。
文档编号G06F13/30GK101030184SQ200710073700
公开日2007年9月5日 申请日期2007年3月27日 优先权日2007年3月27日
发明者汪坚 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1