如上所述,dma引擎和dma控制器(專注於linux)有什麼區別?DMA-Engine和DMA-Controller有什麼區別?
什麼時候linux dma引擎到位?這是一個特殊的設備還是始終是支持dma的所有外圍設備的一部分?
當瀏覽linux源代碼時,我發現了驅動程序ste_dma40.c。任何驅動程序如何使用此引擎?
2
A
回答
2
DMA - 直接內存訪問。您的驅動程序可以讀取或寫入硬件內存,而不需要CPU參與其中(釋放它來完成其他任務)。
DMA控制器 - 讀寫不能用魔法來完成。如果CPU不這樣做,我們需要另一個硬件來完成。很多年前(在ISA/EISA時),在執行此操作的主板上使用共享HW是很常見的。近年來,每個硬件都有自己的DMA硬件機制。 但是在所有情況下,這個特定的硬件獲取源地址和目標地址並傳遞數據。通常在完成時觸發中斷。
DMA引擎 - 現在在這裏我不確定你的意思。我相信你可能會提及處理DMA的SW端。 由於所有存儲器的SRC和DST必須在DMA操作過程中始終物理存在,DMA比通常的I \ O稍微複雜一些。如果將DST地址交換到磁盤,硬件將寫入錯誤的地址,系統將崩潰。 DMA的這個和其他方面由驅動程序處理,代碼段可能稱爲「DMA引擎」
*有關DMA引擎的另一種解釋可能是固件(或硬件)處理硬件端的DMA硬件控制器。
相關問題
- 1. 有什麼區別`和$(Bash中有什麼區別?
- 2. 有什麼區別? :和||
- 3. &&和||有什麼區別?
- 4. 「/」和「/ *」有什麼區別?
- 5. 有什麼區別:。!和:r!?
- 6. ==和===有什麼區別?
- 7. Appender和〜有什麼區別?
- 8. $ @和$ *有什麼區別?
- 9. is和=有什麼區別?
- 10. #.00和#。##有什麼區別?
- 11. `==`和`is`有什麼區別?
- 12. '=='和'==='有什麼區別?
- 13. /和/#/有什麼區別?
- 14. | 0和~~有什麼區別?
- 15. `&`和`ref`有什麼區別?
- 16. ==和===有什麼區別?
- 17. ==和===有什麼區別?
- 18. `{}`和`[]`有什麼區別?
- 19. JavaScript和=== ===有什麼區別?
- 20. difftime和' - '有什麼區別?
- 21. =和==有什麼區別?
- 22. xtype和別名有什麼區別?
- 23. Mixpanel:識別()和people.identify()有什麼區別?
- 24. 有什麼區別
- 25. 有什麼區別
- 26. 有什麼區別?
- 27. 有什麼區別?
- 28. 有什麼區別?
- 29. 有什麼區別
- 30. ....有什麼區別?
1.您是在談論硬件IP或Linux術語? 2.同樣的問題。 3.它正在通過'DMAengine框架'使用。只需閱讀* Documentation/dmaengine/*以獲取更多信息。 – 0andriy