DMA基本概念與常見暫存器設定

2021-10-12 01:12:12 字數 1442 閱讀 7648

dma(direct memory access)即直接儲存訪問,dma傳輸方式無需cpu直接控制傳輸,通過硬體為ram、i/o裝置開闢一條直接傳輸資料的通路,能使cpu的效率大為提高。每一種體系結構dma傳輸不同,程式設計介面也不同。

1. 每塊擁有dma功能的晶元基本可以通過特定的通道來觸發dma。每個通道專門用來管理來自於乙個或多個外設對儲存器訪問的請求。(如stm32、2440等晶元)

2. 每個通道對應四種傳輸模式:

記憶體 —> 記憶體、記憶體 —> 外設、外設 —> 記憶體、外設 —> 外設

3. 資料傳輸有兩種方式觸發:一種軟體請求(手動)資料,另一種由硬體非同步(自動)傳輸。

在第一種情況下,呼叫的步驟可以概括如下(以read為例):

在程序呼叫 read 時,驅動程式的方法分配乙個 dma 緩衝區,隨後指示硬體傳送它的資料。程序進入睡眠。

硬體將資料寫入 dma 緩衝區並在完成時產生乙個中斷。

中斷處理程式獲得輸入資料,應答中斷,最後喚醒程序,該程序現在可以讀取資料了。

第二種情形是在 dma 被非同步使用時發生的。以資料採集裝置為例:

硬體發出中斷來通知新的資料已經到達。

中斷處理程式分配乙個dma緩衝區。

外圍裝置將資料寫入緩衝區,然後在完成時發出另乙個中斷。

處理程式利用dma分發新的資料,喚醒任何相關程序。

網絡卡傳輸也是如此,網絡卡有乙個迴圈緩衝區(通常叫做 dma 環形緩衝區)建立在與處理器共享的記憶體中。每乙個輸入資料報被放置在環形緩衝區中下乙個可用緩衝區,並且發出中斷。然後驅動程式將網路資料報傳給核心的其它部分處理,並在環形緩衝區中放置乙個新的 dma 緩衝區。驅動程式在初始化時分配dma緩衝區,並使用它們直到停止執行。

1. dma控制暫存器 【dcon0】

2. dma源位址暫存器 【disr0】

3. dma源控制暫存器 【disrcc0】

4. dma目標位址暫存器 【didst0】

5. dma目標控制暫存器 【didstc0】

6. dma狀態暫存器 【dstat0】

7. dma觸發遮蔽暫存器 【dmasktrig0】

以上暫存器包含對dma的方向、dma位址、匯流排寬度、dma突發長度等等的配置

中斷方式是在資料緩衝暫存器滿之後發出中斷,要求cpu進行中斷處理,而dma方式則是在所要求傳送的資料塊全部傳送結束時要求cpu 進行中斷處理。這就大大減少了cpu進行中斷處理的次數。【中斷次數增多導致資料丟失】

中斷方式的資料傳送是在中斷處理時由cpu控制完成的,而dma方式則是在dma控制器的控制下,不經過cpu控制完成的。這就排除了cpu因並行裝置過多而來不及處理以及因速度不匹配而造成資料丟失等現象。

記憶體,暫存器基本概念

記憶體是計算機中重要的部件之一,它是與cpu進行溝通的橋梁。只要計算機在執行中,cpu就會把需要運算的資料調到記憶體中進行運算,當運算完成後cpu再將結果傳送出來,記憶體的執行也決定了計算機的穩定執行。記憶體是由記憶體晶元 電路板 金手指等部分組成的。記憶體又稱主存,是cpu能直接定址的儲存空間,由...

MTK pmic暫存器讀取與設定

pmic,暫存器讀取,mtk mtk pmic暫存器讀取與設定 description 在產品的除錯過程中或者eservice處理中,經常會遇到讀取或者設定pmic暫存器的情況,以下會介紹幾種方式,方便大家除錯用。solution 1.adb 方式 讀取0x330的值 cd sys devices ...

(四)核心 記憶體 快取 CPU 暫存器等基本概念

linux系統主要組成 應用程式 shell 檔案系統 核心 核心作用 負責管理系統的程序 記憶體 裝置驅動 檔案系統和網路系統等,是作業系統的核心。核心組成 記憶體管理 程序管理 檔案系統 裝置驅動管理 網路管理 核心實現 通過系統呼叫介面來完成使用者和核心之間的互動 記憶體 優點 訪問速度遠高於...