DMA與CPU總線控制問題

轉(zhuǎn)自 https://bbs.csdn.net/topics/392159760?page=1
zhouxiangbai的實驗結(jié)果:
DMA源端:音頻模塊的數(shù)據(jù)FIFO
DMA目的端:內(nèi)存Buffer
DMA傳輸方式:循環(huán)列表鏈表(linked list)
實驗結(jié)果:啟動DMA傳輸,DMA在不停的從DMA源取數(shù)據(jù)(因為是傳輸方式是循環(huán)列表,且在傳輸過程中沒有使能任何傳輸中斷),CPU是可以做其他事情的。

問了一下同事,他解釋是:芯片是分時給CPU和DMA的,當(dāng)分時給哪一方時,哪一方就獨占總線,另一方被掛起。至于芯片是不是這么設(shè)計的、具體怎么設(shè)計的,我們都搞不清楚。但是他這樣解釋我倒是覺得有道理,可以解釋我最初的疑惑

不喝冰的解釋:
在STM32中是采用這種方法:
DMA控制器和Cortex?-M3核心共享系統(tǒng)數(shù)據(jù)總線,執(zhí)行直接存儲器數(shù)據(jù)傳輸。當(dāng)CPU和DMA
同時訪問相同的目標(biāo)(RAM或外設(shè))時, DMA請求會暫停CPU訪問系統(tǒng)總線達若干個周期,總線
仲裁器執(zhí)行循環(huán)調(diào)度,以保證CPU至少可以得到一半的系統(tǒng)總線(存儲器或外設(shè))帶寬。
DMA技術(shù)的出現(xiàn),使得外圍設(shè)備可以通過DMA控制器直接訪問內(nèi)存,與此同時,CPU可以繼續(xù)執(zhí)行程序.那么DMA控制器與CPU怎樣分時使用內(nèi)存呢?通常采用以下三種方法:(1)停止CPU訪內(nèi)存;(2)周期挪用;(3)DMA與CPU交替訪問內(nèi)存.

總結(jié)來說:目前的實驗現(xiàn)象說明,在DMA連續(xù)傳輸過程中,CPU可以正常工作,CPU一定以某種方式獲得了總線的控制權(quán)。CPU和DMA時分復(fù)用了總線。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容