一种多核共用单一edma通道的方法
【技术领域】
[0001]本发明涉及一种数字通信技术领域,特别涉及一种多核共用单一EDMA通道的方法。
【背景技术】
[0002]单核DSP已经不能满足数字通信领域的发展需求,多核DSP芯片应运而生,在通信领域得到迅猛发展,获得广泛应用。本发明对多核DSP芯片约定如下:共有N个核,记为Core'Core2…C0reN;共有L个硬件信号量HwSem,硬件信号量是一种互斥信号量,用于同一资源多核访问保护;共有Μ个共用接口,记为Interface1、Interface2、…、Interfaced共有X个EDMACC(EDMA Channel Control,即为EDMA通道控制器),记为EDMACC1、EDMACC2...EDMACCX ;第 x 个EDMACC共有 xH个EDMA 通道,记为 Channelx-1、Channelx-2 …Channelx-H ;共有 Y 个EDMA Shadow Reg1n (EDMA 影区),记为 Reg1n^Reg1nL.Reg1nY;与公共接口 Interface?数据发送绑定的EDMA通道记为Channel11。其中N、M、X、Y、H、L、m、h都是自然数,N22,M2 1,X> 1,Y2 1,H2 1,L2l,xH2h> 1。
[0003]EDMA是Enhanced Direct Memory Access的缩写,即增强型直接存储访问,能够完成数据快速搬移,工作过程无需CPU介入。为减轻CPU负荷,同时满足数据的快速收发存储,嵌入式系统设计广泛采用将芯片数据收发端口与EDMA绑定,实现协同工作。EDMA资源主要包括EDMA Channel及配置参数PaRAMADMA的使用具有极高的灵活性,同一个EDMACC中的EDMA资源之间可以使用Link和Chain方法,不同EDMACC中的EDMA资源之间可以使用ShadowReg1n方法。Link方法是指在EDMA通道Channel1按照配置信息传输完毕时,会将Link指向的配置信息复制过来,按照Link指向的配置信息进行新的传输。Chain方法是指在EDMA通道Channel1按照配置信息传输完毕时,产生EDMA通道Channel.3的事件,开始Channel.3的传输,其中,Η2 i, j > loShadow Reg1n方法可将位于EDMACCxl的通道Channelxl-U和位于EDMACCx2的通道Channelx2-v可以配置到同一Reg1n5^,但同一EDMA Channel不能同时配置到两个Reg1n中,通道Channelxl-11 和通道Channelx2-v产生的中断记为Interruptxl-1PInterruptx2-y,Interruptxl-\和Interruptx2-\可以合并为一个中断,记为Interrupty,Interrupty只能送给一个核,记为Coren,其中X 之 xUx2 > 1 ,xiH > u > 1 ,X2H > v > 1 ,Y > y > 1 ,N > n > 1。通过将Core和Shadow Reg1n进行一对一映射,并将单个核中所用EDMA资源配置到同一ShadowReg1n中,因不同核访问不同的Shadow Reg1n,不同Shadow Reg1n中的EDMA资源不同,这就避免了EDMA资源的多核访问冲突。这也造成了在使用Shadow Reg1n方法时,与共用接口Interfaceljf据发送绑定的EDMA Channelh只能配置到其中一个Shadow Reg1n中,记为Reg1nk,与Reg1nk映射的核称为主核,其它核称为从核。EDMA PaRAM可以根据需要进行配置,有一种特殊的配置称为Dummy PaRAM,Dummy PaRAM方法是保证EDMA PaRAM中的ACNT、BCNT和CCNT三个计数至少有一个计数是0,一个计数非0,用来传输0个字节数据,并能根据配置信息正常产生中断或者Chain事件。
[0004]EDMA使用方法在201510024762.X(—种EDMA控制器分离式并行数据通道的设计方法)、201510123172.2 (—种多核DSP系统中EDMA控制器并行控制的方法)等中国专利中已经涉及,但是在所有现有方法中并未涉及多核如何共用单一 EDMA通道达到共用接口充分利用的方法,同时做到避免EDMA资源多核访问冲突和避免发送需经核间转发,则是现有技术中亟待解决的问题。
【发明内容】
[0005]本发明的目的在于克服现有技术的缺点与不足,提供一种多核共用单一EDMA通道的方法,该方法解决了芯片设计时将共用接口与单一 EDMA通道绑定可能引起多核共用此接口造成的资源访问冲突问题,并能做到每个核可以直接通过EDMA通道实现数据发送,无需核间转发,简化了数据发送流程。
[0006]本发明的目的通过下述技术方案实现:一种多核共用单一EDMA通道的方法,包括以下步骤:
[0007]步骤1、分配EDMA Channelh和硬件信号量HwSemh到主核,分配EDMA Channels到从核,并初始化EDMA Channel11、硬件信号量HwSemh和EDMA Channels;所述EDMA Channelh为与共用接口绑定的用于进行数据传输的EDMA通道,所述EDMA Channels为分配给从核的用于进行数据传输的EDMA通道;
[0008]步骤2、主核和从核通过硬件信号量申请EDMA Channel;
[0009]步骤3、申请到EDMA Channelh的主核或者从核配置PaRAM;
[0010]步骤4、使能EDMA进行数据传输,并接收数据传输完毕所产生的EDMA中断;
[0011 ]步骤5、数据传输完毕后,释放硬件信号量HwSemh和PaRAM资源。
[0012]本发明使用了Chain方法和Dummy PaRAM方法,并配合HwSem方法,可以在使用Shadow Reg1n的前提下,无需核间转发,大大简化了数据的发送流程。
[0013]为了EDMA资源的多核访问冲突,在步骤2中,所有核包括主核和从核必须先获取到硬件信号量HwSemh后才能使用Channelh资源,保证了在同一时刻只有一个核能申请到EDMAChannelh0
[0014]为便于使用Link和Chain方法,在步骤1中,所述EDMA Channels与EDMA Channelh位于同一EDMACC中。
[0015]在步骤3中,对申请到EDMA Channelh的主核配置的PaRAM资源为PaRAMh,所述PaRAMh用于使能EDMA在数据发送完毕后产生与EDMA Channelh对应的中断;对申请到EDMAChannelh的从核配置的PaRAM资源包括PaRAMh和PaRAMs,所述PaRAMh用于使能主核在数据发送完毕后产生Channel3事件,使能Channe 13数据传输,所述PaRAMs配置成Dummy PaRAM,用于数据发送完毕后产生与EDMA Channels对应的中断。
[0016]所述步骤4中,主核在数据传输中,EDMA根据PaRAMh的配置进行数据搬移,主核数据传输完毕后,进入中断处理程序,释放硬件信号量,让从核利用EDMA Channelh进行数据发送;从核在数据传输中,EDMA根据PaRAMh的配置进行数据搬移,并在PaRAMh的数据搬移完成后,发出chain Event信号,使能行工作,当Dummy PaRAM处理完毕后,产生与EDMA Channel3对应的中断,从核接收Channel3产生的中断,进入中断处理程序,释放硬件信号量,让其它核利用EDMA Channelh进行数据发送。
[0017]本发明同时采用Shadow Reg1n方法、Chain方法、Dummy PaRAM方法和HwSem方法。采用Shadow Reg1n方法和HwSem方法对EDMA资源做多核保护,避免资源访问冲突。采用Chain方法和Du_y PaRAM方法可以解决只有主核可以收到EDMA Channelh数据发送完毕产生的EDMA中断,从核获取不了中断信息的问题。
[0018]本发明相对于现有技术具有如下的优点及效果:
[0019]1、本发明充分利用EDMA配置的灵活性,省去从核通过共用接口 Interface向外发
送数据时必须通过主核转发的过程,每个核可以直接通过EDMA通道发生数据,无需通过核间转发,从而简化了从核发送流程,提高了发送效率,并显著降低了代码的复杂度。
[0020]2、本发明使得主核和从核都能直接通过EDMA进行数据发送,并通过ShadowReg i on和HwSem避免了多核对同一 EDMA资源的访问冲突,保证了 Edma资源访问的安全性。
[0021]3、本发明通过使用Chain方法和Dummy PaRAM方法解决只有主核可以收到EDMAChannelh数据发送完毕产生的EDMA中断,从核获取不了中断信息的问题,保证了在使用Shadow Reg1n时,从核也可获取数据发送完毕的信息。
【附图说明】
[0022]图1是程序初始化主要流程图,描述了程序初始化过程中与多核共用单一EDMA通道相关的初始化流程。
[0023]图2是主核数据发送流程图,描述了主核在多核共用单一EDMA通道发送数据的流程。
[0024]图3是从核数据发送流程图,描述了从核在多核共用单一EDMA通道发送数据的流程。
【具体实施方式】
[0025]下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
[0026]实施例
[0027]本实施例中共有N个核,其中只有一个主核Coreh,其余的都是从核Cores(N21,且s关h);
[0028]如图1所示,程序的初始化流程如下:
[0029]分配与共用接口数据发送绑定的EDMA通道Channelh到主核;
[0030]分配与Channelh 在同一 EDMACC 的 EDMA 通道 Channel3 到从核;
[0031]创建具有互斥功能的硬件信号量HwSenf,并将其初始化为空闲状态,以被具有数据发送需求的核获取。
[0032]如图2所示,主核C0reh的数据发送流程如下:
[0033]在程序初始化阶段,将EDMAChannelh分配到主核中,并对其资源进行必要的初始化;
[0034]在数据发送前,主核获取硬件信号量HwSeme,确保其它核没有正在使用EDMAChannelh发送数据,主核对EDMA Channelh对应的PaRAM(本发明记为PaRAMh)进行配置,使能数据发送完毕产生EDMA Channelh中断功能;
[0035]在数据传输中,EDMA根据PaRAMh的配置进行数据搬移;
[0036]在数据发送完毕后,产生EDMA Channe lh对应的中断,主核进入中断处理程序,释放硬件信号量HwSenf,让其它核可以利用EDMA Channelh进行数据发送,并进行后续处理;
[0037]至此,完成整个数据发送过程。
[0038]如图3所示,从核Cores的数据发送流程如下:
[0039]在程序初始化阶段,给Cores*配了一个属于本核的EDMA Channel3及相应的PaRAMs等资源,并保证EDMA Channels与EDMA Channelh位于同一EDMACC中,将PaRAMs配置成Dummy PaRAM,仅用来产生EDMA Channels对应的中断;
[0040]在数据发送前,利用所有核通过Shadow Reg1nk访问到EDMAChannelh资源,Cores对EDMA Channelh对应的PaRAM(本发明记为PaRAMh)进行配置,使能Channelh的chain功能,并将chain Event设置为ChannelsEvent。但为了避免资源访问冲突,在使用Channelh资源前,Cores必须获取硬件信号量HwSenf,确保其它核没有正在使用Channelh发送数据;
[0041 ]在数据传输中,EDMA根据PaRAMh的配置进行数据搬移,PaRAMh的数据搬移完成后,发出chain Event,使能Channe]/进行工作,Dummy PaRAM处理完毕,产生ChanneIs对应的EDMA中断;
[0042]在数据发送完毕后,因ChanneF被分配到Cores,Channer产生的EDMA中断就会被Cores获取,进入中断处理程序,释放硬件信号量HwSenf,让其它核可以利用Channelh进行数据发送,并依此确定数据已传输完毕,进行后续处理。
[0043]上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
【主权项】
1.一种多核共用单一 EDMA通道的方法,其特征在于,包括以下步骤: 步骤1、分配EDMA Channelh和硬件信号量HwSemh到主核,分配EDMA Channels到从核,并初始化EDMA Channel11、硬件信号量HwSemh和EDMA Channels;所述EDMA Channelh为与共用接口绑定的用于进行数据传输的EDMA通道,所述EDMA Channels为分配给从核的用于进行数据传输的EDMA通道; 步骤2、主核和从核通过硬件信号量申请EDMA Channelh.步骤3、申请到EDMA Channelh的主核或者从核配置PaRAM; 步骤4、使能EDMA进行数据传输,并接收数据传输完毕所产生的EDMA中断; 步骤5、数据传输完毕后,释放硬件信号量HwSemh和PaRAM资源。2.根据权利要求1所述的多核共用单一EDMA通道的方法,其特征在于,所述步骤2中,所有核包括主核或从核必须先获取到硬件信号量HwSemh后才能使用Channelh资源,保证在同一时刻只有一个核能申请到EDMA Channel11。3.根据权利要求1所述的多核共用单一EDMA通道的方法,其特征在于,所述步骤1中,所述EDMA Channel3与EDMA Channelh位于同一EDMACC中。4.根据权利要求1所述的多核共用单一EDMA通道的方法,其特征在于,在步骤3中,对申请到EDMA Channelh的主核配置的PaRAM资源为PaRAMh,所述PaRAMh用于使能EDMA在数据发送完毕后产生与EDMA Channelh对应的中断; 对申请到EDMA Channelh的从核配置的PaRAM资源包括PaRAMh和PaRAMs,所述PaRAMh用于使能主核在数据发送完毕后产生ChanneT事件和使能ChanneT数据传输,所述PaRAMs配置成Dummy PaRAM,所述PaRAMs用于数据发送完毕后产生与EDMA Channels对应的中断。5.根据权利要求4所述的多核共用单一EDMA通道的方法,其特征在于,所述步骤4中,主核在数据传输中,EDMA根据PaRAMh的配置进行数据搬移,主核数据传输完毕后,进入中断处理程序,释放硬件信号量,让从核利用EDMAChannelh进行数据发送; 从核在数据传输中,EDMA根据PaRAMh的配置进行数据搬移,并在PaRAMh的数据搬移完成后,发出chain Event信号,使能行工作,当Dummy PaRAM处理完毕后,产生与EDMA Channel3对应的中断,从核接收Channel3产生的中断,进入中断处理程序,释放硬件信号量,让其它核利用EDMA Channelh进行数据发送。
【专利摘要】本发明涉及一种多核共用单一EDMA通道的方法,包括以下步骤:1、分配EDMA?Channelh和硬件信号量HwSemh到主核,分配EDMA?Channels到从核,并初始化EDMA?Channelh、硬件信号量HwSemh和EDMA?Channels;2、主核和从核通过硬件信号量HwSemh申请EDMA?Channelh;3、申请到EDMA?Channelh的主核或者从核配置PaRAM;4、使能EDMA进行数据传输,并接收数据传输完毕所产生的EDMA中断;5、数据传输完毕后,释放硬件信号量HwSemh和PaRAM资源。具有每个核可以直接通过EDMA通道发送数据,无需通过核间转发等优点。
【IPC分类】G06F13/32
【公开号】CN105487991
【申请号】CN201510974858
【发明人】王敏
【申请人】广州慧睿思通信息科技有限公司
【公开日】2016年4月13日
【申请日】2015年12月18日