原子哥,請教一下,為什麼我的DMA進不了中斷

2025-06-21 19:30:12 字數 3120 閱讀 5411

dma方式和中斷方式的區別?

1樓:匿名使用者

常用的裝置和cpu之間資料傳送控制方式有4種,它們是程式直接控制方式、中斷控制方式、dma方式和通道方式。程式直接控制方式和中斷控制方式都只適用於簡單的、外設很少的計算機系統,因為程式直接控制方式耗費大量的cpu時間,而且無法檢測發現裝置或其他硬體產生的錯誤,裝置和cpu、裝置和裝置只能序列工作。中斷控制方式雖然在某種程度上解決了上述問題,但由於中斷次數多,因而cpu仍需要花較多的時間處理中斷,而且能夠並行操作的裝置臺數也受到中斷處理時間的限制,中斷次數增多導致資料丟失。

dma方式和通道方式較好地解決了上述問題。這兩種方式採用了外設和記憶體直接交換資料的方式。只有在一段資料傳送結束時,這兩種方式才發出中斷訊號要求cpu做善後處理,從而大大減少了cpu的工作負擔。

dma方式與通道控制方式的區別是,dma方式要求cpu執行裝置驅動程式啟動裝置,給出存放資料的記憶體始址以及操作方式和傳送位元組長度等;而通道控制方式則是在cpu發出i/o啟動命令之後,由通道指令採完成這些工作。

stm32 dma寫sd長時間執行無法進入dma完成中斷

2樓:mal小朕狼

你看看中斷優先順序。

要 sdio>dma的。

dma方式與程式中斷方式的響應發生時間為何不同

3樓:匿名使用者

機器週期又叫存取週期。計算機在指令執行完畢是發程式查詢訊號這時,發生程式中斷響應,cpu中斷現行程式。在dma請求方式中,cpu只是讓出匯流排使用權和不能訪存,因此可以在不訪存即存取週期結束後響應dma,讓出匯流排使用權,同時不在訪存,而此時cpu還可以進行其他內部操作。

我是這麼理解的,不知道對不對,求高人指點。

4樓:匿名使用者

因為dma中cup只需要乙個存取週期就可以實現i/o和主存的通訊,所以在乙個機器週期結束就可以;但是中斷方式需要儲存程式斷點,所以只能在乙個指令的結束才能響應。

5樓:匿名使用者

指令a=a*2^2,a原來1. 假設這個機器只能一步一步移位,則次指令需要2步,a的值放在暫存器r裡[r]初值=21. [r]=[r]*2 [r]=42.

r]=[r]*2 [r]=8如果在第一步響應中斷,則需要push([r]=4),還原是[r]=4,而指令還得重新開始,初值不一樣了。而dma雖然需要cpu對dma進行初始化,貌似不會影響cpu的暫存器,但是個人還是覺得這裡是否需要儲存一些現場資訊呢,不然從dma返回後,怎麼返回到指令的哪一步呢。

6樓:匿名使用者

通俗的說 dma傳送自己管自己的 不影響cpu執行當前程式 而中斷是會停止執行當前程式 而cpu是以指令為單位執行程式的 所以。

為什麼沒有填滿dma緩衝區資料就進入dma中斷

7樓:埠

在《深入理解linux核心》中的第545頁介紹了dma的相關操作。說道dma,那就不得不提到cache(高回速快取)的問題。書中引答用瞭如下一段例子來描述了cache一致性問題:

假設裝置驅動程式把一些資料填充到記憶體緩衝區中,然後立刻命令硬體裝置利用dma傳。

關於中斷和dma,以下說法中哪乙個是正確的

8樓:啊生為

dma有兩種方式,一種是查詢方式,一種是中斷方式。是問這兩種方式有什麼區別麼?查詢方式是通過查詢標誌位來判定dma結束,中斷方式是dma結束的時候返回中斷,在程式中不需要一直查詢標誌位。

9樓:bernice堅果丁吖

dma接收與中斷接收的區別 dma存取中的關鍵引數怎麼理解。

dma傳輸的時候cpu能不能接收其他中斷 如果能接收是不是cpu要等dma傳輸完 還是強制停止dma傳輸了

10樓:網友

dma和cpu是獨立的,所以dma傳輸跟cpu沒有關係,你走你的陽關道,我過我的獨木橋,cpu當然可以做其他事,這就是dma設計的目的。不過dma傳輸結束後一般會通知cpu,cpu要去處理傳輸的資料。

11樓:在晴天的雨傘

dma的概念:dma是在專門的硬體( dma)控制下,實現高速外設和主儲存器之間自動成批交換資料儘量減少cpu干預的輸入/輸出操作方式。通常有兩種方式:

獨佔匯流排方式 ◎週期挪用方式。

2)dma的組成:

主存位址暫存器。

資料數量計數器。

dma的控制/狀態邏輯 ◎dma請求觸發器。

資料緩衝暫存器 ◎中斷機構。

3)dma的傳送資料的過程:由三個階段組成。

傳送前的預處理:由cpu完成以下步驟。

向dma卡送入裝置識別訊號,啟動裝置,測試裝置執行狀態,送入記憶體位址初值,傳送資料個數, dma的功能控制訊號。

資料傳送:在dma卡控制下自動完成。

傳送結束處理。

dma 卡上應包括通用介面卡的全部組成部分,並多出如下內容:

主存位址暫存器,傳送字數計數器,dma控制邏輯,dma請求,dma響應,dma工作方式,dma優先順序及排隊邏輯等。

一次完整的dma傳送過程:

dma 預處理,cpu向dma送命令,如dma方式,主存位址,傳送的字數等,之後cpu執行原來的程式。

dma 控制在 i/o 裝置與主存間交換資料:

準備乙個資料, 向cpu發dma請求,取得匯流排控制權,進行資料傳送,修改卡上主存位址,修改字數計數器內且檢查其值是否為零,不為零則繼續傳送,若已為零,則向 cpu發中斷請求。

12樓:匿名使用者

如果cpu和dma同時訪問同樣的記憶體或者外設,這個就沒有試過了,

13樓:網友

dma樓上已經將的很清楚了。cpu可以接收中斷,中斷處理要比較優先順序。

原子哥,請問一下串列埠接收關於總長度的問題

14樓:玖蔻特級總代

原子哥的觸控螢幕是採用什麼方式給資料的。

最近在研究原子哥的rs485例程,我把主函式改成了如下所示。將串列埠接收中斷中接收到的資料寫到buf中,將資料長度寫到m中,然後通過rs485_send_data函式將接收到的。

我就想問一下為什麼這麼,我就想問一下為什麼這麼

您好,很榮幸為您解答。這只是個特例,用六次根號是為了讓3個數的被開方次數相同,方便比較,有時候不需要這樣做。如有不懂,歡迎繼續追問,隨時為您解答。你好 考慮用天然的米水洗頭,效果佳,而且這是沌天然的。頭髮洗後,平時生活注意一點,髮質就不會 建議你首先找個有蓋子的容器,再把每天淘米頭2 3遍的淘米水倒...

想問一下為什麼? 10,想問一下為什麼?

想問一下為什麼?這樣你就不感覺5號的35毫公升的貴了,因為50毫公升的都798元,而35毫公升的才308元,25毫公升就差價490元,肯定會選擇35毫公升的。而35毫公升的可能就是 裝。很正常啊,質量問題啊,真貨和假貨的區別,濃度的問題。有的了能 了。產生這樣的 差異是因為量的大小不同導致的,大單位的產品比小單...

大神們想請教一下,為什麼刷牙的時候牙齦老是出血?是什麼原因?拜謝

這是牙齦炎造成的,應該多刷牙漱口會緩解。應該是牙周炎,我不抽菸也不喝酒,熬夜基本上也不會,但是每次刷牙特別是早上起來,都是有出血的。醫生建議用中藥牙膏堅持刷,也不知道什麼牌子好。理解你的痛苦 為什麼刷牙的時候牙齦老是出血呢?是什麼原因引起的?您好!牙齦出血是比較常見牙齦有炎症,針對你這個情況,主要是...