日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统:DMA

發布時間:2025/3/21 windows 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统:DMA 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、DMA由來
DMA(Direct Memory Access,直接存儲器訪問)。在DMA出現之前,CPU與外設之間的數據傳送方式有程序傳送方式、中斷傳送方式。CPU是通過系統總線與其他部件連接并進行數據傳輸。

1.1程序傳送方式
程序傳送方式是指直接在程序控制下進行數據的輸入/輸出操作。分為無條件傳送方式和查詢(條件傳送方式)兩種。

1.1.1無條件傳送方式

?微機系統中的一些簡單的外設,如開關、繼電器、數碼管、發光二極管等,在它們工作時,可以認為輸入設備已隨時準備好向CPU提供數據,而輸出設備也隨時準備好接收CPU送來的數據,這樣,在CPU需要同外設交換信息時,就能夠用IN或OUT指令直接對這些外設進行輸入/輸出操作。由于在這種方式下CPU對外設進行輸入/輸出操作時無需考慮外設的狀態,故稱之為無條件傳送方式。

1.1.2查詢(有條件)傳送方式?

查詢傳送也稱為條件傳送,是指在執行輸入指令(IN)或輸出指令(OUT)前,要先查詢相應設備的狀態,當輸入設備處于準備好狀態、輸出設備處于空閑狀態時,CPU才執行輸入/輸出指令與外設交換信息。為此,接口電路中既要有數據端口,還要有狀態端口。

1.2中斷傳送方式
中斷傳送方式是指當外設需要與CPU進行信息交換時,由外設向CPU發出請求信號,使CPU暫停正在執行的程序,轉而去執行數據輸入/輸出操作,待數據傳送結束后,CPU再繼續執行被暫停的程序。

以上兩種方式,均由CPU控制數據傳輸,不同的是程序傳送方式由CPU來查詢外設狀態,CPU處于主動地位,而外設處于被動地位。這就是常說的----對外設的輪詢,效率低。而中斷傳送法師則是外設主動向CPU發生請求,等候CPU處理,在沒有發出請求時,CPU和外設都可以獨立進行各自的工作。 ?需要進行斷點和現場的保護和恢復,浪費了很多CPU的時間,適合少量數據的傳送。

1.3 DMA原理
DMA的出現就是為了解決批量數據的輸入/輸出問題。DMA是指外部設備不通過CPU而直接與系統內存交換數據的接口技術。這樣數據的傳送速度就取決于存儲器和外設的工作速度。

通常系統總線是由CPU管理的,在DMA方式時,就希望CPU把這些總線讓出來,即CPU連到這些總線上的線處于第三態(高阻狀態),而由DMA控制器接管,控制傳送的字節數,判斷DMA是否結束,以及發出DMA結束信號。因此DMA控制器必須有以下功能:

1、能向CPU發出系統保持(HOLD)信號,提出總線接管請求;

2、當CPU發出允許接管信號后,負責對總線的控制,進入DMA方式;

3、能對存儲器尋址及能修改地址指針,實現對內存的讀寫;

4、能決定本次DMA傳送的字節數,判斷DMA傳送是否借宿。

5、發出DMA結束信號,使CPU恢復正常工作狀態。

DMA傳輸將從一個地址空間復制到另外一個地址空間。當CPU初始化這個傳輸動作,傳輸動作本身是由DMA控制器來實行和完成。 ?典型例子---移動一個外部內存的區塊到芯片內部更快的內存區。

對于實現DMA傳輸,它是由DMA控制器直接掌管總線(地址總線、數據總線和控制總線),因此,存在一個總線控制權轉移問題

DMA傳輸開始前:    CPU------>DMA控制器

DMA傳輸結束后: ?????????????DMA控制器------>CPU

一個完整的DMA傳輸過程必須經歷DMA請求、DMA響應、DMA傳輸、DMA結束4個步驟。

DMA方式是一種完全由硬件進行組信息傳送的控制方式,具有中斷方式的優點,即在數據準備階段,CPU與外設并行工作。

?

2、DMA的傳送過程
DMA的數據傳送分為預處理、數據傳送和后處理3個階段。

(1)預處理

由CPU完成一些必要的準備工作。首先,CPU執行幾條I/O指令,用以測試I/O設備狀態,向DMA控制器的有關寄存器置初值,設置傳送方向、啟動該設備等。然后,CPU繼續執行原來的程序,直到I/O設備準備好發送的數據(輸入情況)或接受的數據(輸出情況)時,I/O設備向DMA控制器發送DMA請求,再由DMA控制器向CPU發送總線請求(統稱為DMA請求),用以傳輸數據。

(2)數據傳送

DMA的數據傳輸可以以單字節(或字)為基本單位,對于以數據塊為單位的傳送(如銀盤),DMA占用總線后的數據輸入和輸出操作都是通過循環來實現。需要特別之處的是,這一循環也是由DMA控制器(而不是通過CPU執行程序)實現的,即數據傳送階段是完全由DMA(硬件)來控制的。

(3)后處理

DMA控制器向CPU發送中斷請求,CPU執行中斷服務程序做DMA結束處理,包括檢驗送入主存的數據是否正確,測試傳送過程中是否出錯(錯誤則轉入診斷程序)和決定是否繼續使用DMA傳送其他數據塊等。

3、在STM32F407中使用DMA
3.1使用大約步驟
1、使能DMA時鐘,并等待數據流可配置。 使能DMA時鐘,才可配置DMA相關的寄存器。要對DMA的配置寄存器DMA_SxCR進行配置,則要等其最低位為0----即DMA傳輸禁止,才可配置。

2、DMA_SxCR(指定的外設--x)設置該流x,包括配置通道,外設地址,存儲器地址,傳輸數據量、優先級等。

3、使能外設的DMA功能

4、使能DMA數據流,啟動傳輸。

5、查詢DMA傳輸狀態。

3.2 從DMA配置時最為關鍵的寄存器出發

DMA數據流x配置寄存器(DMA_SxCR)

?

CHSEL[2:0] ?3位8個通道選擇,即對于流x選擇哪個通道

PL[1:0] 2位,設置流x的軟件優先級,DMA控制器的仲裁器根據軟件優先級,輔以硬件優先級來仲裁進行哪個數據流哪個通道的數據傳輸。

MSIZE[1:0] 2位,存儲器的數據寬度(8位、16位、32位)

PSIZE[1:0] 2位,外設的數據寬度

MINC ?1位, 設置存儲器遞增模式,存儲器地址指針時遞增還是固定

PINC ??1位, 設置外設遞增模式,外設地址指針遞增還是固定

DIR ?????2位,數據傳輸方向

TCIE ??1位,傳輸完成中斷使能

HTIE ??1位,半傳輸中斷使能

TEIE ??1位,傳輸錯誤中斷使能

DMEIE 1位, 直接模式錯誤中斷使能

EN ????1位, 0禁止該數據流,此時可配置該數據流

?????????????????????1使能該數據,參與仲裁器的競爭

?

總結

以上是生活随笔為你收集整理的操作系统:DMA的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。