您好,我想要使用一个核做启动信号控制(例如核0),同时计时(因为要计算速率),剩下7个核(核1-7)作为实际搬数的核。需要让他们7个核同时向不同的位置搬
看他们同时搬得时候在edma总线上的冲突,来看edma总线的性能。
我在附件里附上了我的工程~哪位好心能帮看一下吗?是彻底错了吗,不能只在core0开启edma(因为我的cmd直接就是用的core0的l2 sram)在其他的核里面设置参数吗???
所以我需要在core1-7不同的核上设置不同的edma参数是吧?(因为搬数的目的地址和源地址都不同)
按照您给的那个程序,我进行了如下改动(cmd还是没改,打算把参数放在核0里,使用核0的l2 sram,)核0负责启动edma,核1-7写入不同的参数,他们搬不同地方的数
myParamSetup.option = 0x00100008;
myParamSetup.srcAddr = (Uint32)(srcbuf+(DNUM-1)*64);
myParamSetup.aCntbCnt = 0x00010040;
myParamSetup.dstAddr = (Uint32)(dstbuf+(DNUM-1)*64);
myParamSetup.srcDstBidx = 0x0;
myParamSetup.linkBcntrld = 0x0000ffff;
myParamSetup.srcDstCidx = 0x0;
myParamSetup.cCnt = 0x00000001;
CSL_edma3ParamSetup(hParamPing,&myParamSetup);
就只改了红色的部分,但是发现不能搬数了。
想问您一下,是我的思路错了,还是参数设错了。谢谢~
各位大神一定要帮我啊,我毕设,卡在这了,时间不多了!!!!
跪谢!!!!!
德仪论坛的都是好人~~~~~
Andy Yin1:
您好,
被你写的那么多搞得有点晕,先理解一下你的目的:同时启动多个EDMA channel,分别从不同的源地址到目的地址的数据搬运,进行EDMA效率的测试?
如果是这样的话,只需要在core0配置启动EDMA即可,在core0同时启动多个EDMA通过,指定不同的源核目的地址即可,注意对于L2需要使用全局地址(0x00800000+DNUM*0x1000000)。
Nicole He:
回复 Andy Yin1:
想问一下,因为我的emda例子是用phyllis yu的例子改的,所以你可以看一下附件。我貌似只开了一个channel(因为我不会开多个channel,并且分别赋值….能告诉我应该怎么弄吗???)然后开了多个channel同时进行搬数也会有emda总线竞争吗?因为关键是让他们总线竞争看性能….谢谢了!!!!跪求怎么用channel!
qian cui:
你好,你附件里的代码实现的多核edma可以完成同时数据搬移吗?我想实现的是核0发出信息触发其它核进行数据搬移,每个核的地址都不一样
Na Li7:
回复 Nicole He:
chAttr.chaNum = channelNum;
上面这条语句是channel num,你用不同的通道传数,那这个要修改的
qian cui:
回复 Na Li7:
之前改了channelnum和instNum不行,按照你说的只改通道号,可以传输数据了。想知道那个参数instnum什么用处,八个核都一样才行。总之谢谢啦
Na Li7:
回复 qian cui:
instNum就是edmaNum,EDMA instance whose channel is being requested
Na Li7:
回复 qian cui:
你收发用的是同一个EDMA,所以EDMA num不改,只要改通道号就行