g**********3 发帖数: 61 | 1 【 以下文字转载自 EE 讨论区 】
发信人: gaoheming123 (JustComeToUs), 信区: EE
标 题: 真正体验到一把DMA的先进性和优越性
发信站: BBS 未名空间站 (Thu Nov 29 23:06:13 2012, 美东)
上大学的时候学过DMA 控制器,知道这是一个可以为CPU 分担任务的重要设备。
工作后一直没有机会接触,就算接触也仅限于改改bug,没有机会了解DMA多莫有用。
上个月接了个活,真是开了眼了:要求我设计一个isochronous pipe 在 mentor's 的
musb 控制器上,参考设计上没有对isochronous endpoint 的支持,我需要参考ehci或
者Ohci设计出一套方案使得 musb可以以1ms的频率发送192byte的音频数据包。
操作系统是windows moible,主控制器是TI 的 OMAP ,困难之处在于 windows (我相信
不止windows,任何操作系统)不能以1ms的频率精确的推送数据包给musb控制器,这对
cpu将是一场巨大的灾难,所有的其它线程都将停止,系统功耗将急剧提升,UI会在播
放音频时锁死,怎么办?
DMA方式跃入我的眼帘, what if 我同时把1024个数据包同时发给DMA控制器,让DMA
控制器线性发送,这样cpu可以设定一个时间间隔 (1024ms) ,把数据周期性发给DMA
控制器,DMA 负责以1ms的intervel发送这些usb 数据包。
测试以后发现效果非常好 ,系统运行平稳流畅,功耗稳定,多亏了DMA . |