TI论坛
直播中

崔琳

8年用户 264经验值
私信 关注
[问答]

关于在DM36x中查看EDMA3的资源分配问题

对于该问题首先要明确使用的软件,我以ipnc rdk为例,主要使用edma有两部分一部分为linux,另一部分为codec.
对于linux你可以关注edma的kernel driver,在其中加入一些sysfs或者proc fs的接口将资源分配情况输出
对于codec的edma使用情况可以直接看codec的手册.

回帖(10)

李天竹

2018-7-27 07:58:51
多谢FengDong的信息。codec的edma资源使用似乎不经过kernel driver吧。
知道了edma的使用情况,如何能够调整?
举报

崔琳

2018-7-27 08:10:36
引用: hjh22678 发表于 2018-7-27 07:58
多谢FengDong的信息。codec的edma资源使用似乎不经过kernel driver吧。
知道了edma的使用情况,如何能够调整?

linux应用使用的edma资源一定是通过kernel驱动分配的.不同的是dvsdk软件并没有做应用层驱动给应用层使用,而rdk则实现了应用层的dma驱动,可以在应用层直接使用dma资源.最终的分配还是在kernel驱动完成.
通常你不需要进行调整因为申请的都是逻辑channel.
举报

李天竹

2018-7-27 08:26:33
引用: 东少2016 发表于 2018-7-27 08:10
linux应用使用的edma资源一定是通过kernel驱动分配的.不同的是dvsdk软件并没有做应用层驱动给应用层使用,而rdk则实现了应用层的dma驱动,可以在应用层直接使用dma资源.最终的分配还是在kernel驱动完成.
通常你不需要进行调整因为申请的都是逻辑channel. ...

多谢FengDong的回复!既然包括dvsdk在内都是通过kernel进行edma分配,那通过kernel可以监测到所有的edma资源使用情况。如您所说,利用kernel申请时用了逻辑channel,那逻辑channel向物理channel的影射应该也是在kernel完成的了。
对于资源受限结构精致的嵌入式系统,dm36x连接的外设如I2S、SPI等要求DMA实时响应,否则有数据丢失的危险,因此dma的优先级分配是很重要的,这点在edma的channel编号顺序中已经体现出来。
如您所说,应用向kernel申请emda资源使用了逻辑channel,其优先级是如何体现出来的?或者这个概念对应用层是透明的?
举报

崔琳

2018-7-27 08:33:40
引用: hjh22678 发表于 2018-7-27 08:26
多谢FengDong的回复!既然包括dvsdk在内都是通过kernel进行edma分配,那通过kernel可以监测到所有的edma资源使用情况。如您所说,利用kernel申请时用了逻辑channel,那逻辑channel向物理channel的影射应该也是在kernel完成的了。
对于资源受限结构精致的嵌入式系统,dm36x连接的外设如I2S、SPI等要求DMA实时响应,否则有数 ...

请首先明确在dm36x上codec engine是单core模式,codec申请的dma一定会进入到kernel执行但是会使用自己的驱动,不是你在kernel代码中找到的驱动.所以如之前帖子所说你如果看codec的dma使用情况就要看codec的手册.而对于你说的其他驱动都有dma mode和arm中断mode两种模式.你如果要观察设备驱动的dma以及优先级可以参考具体的驱动代码.
而对于你说的驱动dma的情况,只要不与codec使用相同的tc channel就可以.
详细的优先级等信息还是需要你看edma的手册,对于edma的工作原理机制有了解.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分