《嵌入式系統原理與應用》 (八)DMA 知識梳理

2021-10-01 20:32:46 字數 2475 閱讀 7395

目錄

dma的定義及傳輸要素

dma的傳輸過程

dma的優缺點及其適用場景

stm32中dma的特點

stm32中dma的優先順序機制

stm32中dma的傳輸模式

stm32中dma的常用初始化過程

dma的常用庫函式(主要在初始化時結構體變數的設定)

dma的引入——讓cpu做更有意義的工作

cpu——經理

資料——物品

外設——銷售或採購

儲存器——倉庫

定義

dma控制器  —— 倉庫保管員

dma(

direct memory access

,直接儲存器訪問),是一種完全由硬體執行資料交換的工作方式。它由dma控制器而不是cpu來控制在儲存器和儲存器、儲存器和外設之間的批量資料傳輸。

傳輸要素

傳輸源   傳輸目標   傳輸資料量   觸發訊號

dma請求

cpu初始化dma控制器,外設(i/o介面)發出dma請求。

dma響應

dma控制器判斷dma請求的優先順序及遮蔽,向匯流排仲裁器提出匯流排請求。

當cpu執行完當前匯流排週期時,可釋放匯流排控制權。此時,匯流排仲裁器輸出匯流排應答,表示dma已經響應,dma控制器從cpu接管對匯流排的控制,並通知外設(i/o介面)開始dma傳輸。

dma傳輸

dma資料以規定的傳輸單位(通常是字)傳輸,每個單位的資料傳送完成後,dma控制器修改位址,並對傳送單位的個數進行計數,繼而開始下乙個單位資料的傳送,如此迴圈往復,直至達到預先設定的傳送單位數量為止。

dma結束 

當規定數量的dma資料傳輸完成後,dma控制器通知外設(i/o介面)停止傳輸,並向cpu傳送乙個訊號(產生中斷或事件)報告dma資料傳輸操作結束,同時釋放匯流排控制權。

優點

cpu利用率  資料傳輸效率  使用者軟體開發**

缺點

在一段時間內獨佔匯流排

資料傳輸量過大,會導致中斷延時較長,實時性強不適用

適用

高速、成組資料的傳輸

仲裁器根據通道請求的優先順序來啟動外設/儲存器的訪問。

優先權管理分2個階段:

● 軟體:每個通道的優先權可以在

dma_ccrx

暫存器中設定,有

4個等級:

─ 最高優先順序

─ 高優先順序

─ 中等優先順序

─ 低優先順序

● 硬體:通道編號越小優先順序越高,如果2個請求有相同的軟體優先順序,則較低編號的通道比較高編號的通道有較高的優先權。舉個例子,通道2優先於通道4。

stm32微控制器支援迴圈模式和普通模式兩種工作模式,

迴圈模式用於處理迴圈緩衝區和連續的資料傳輸(如adc的掃瞄模式)。在dma_ccrx暫存器中的circ位用於開啟這一功能。當啟動了迴圈模式,資料傳輸的數目變為0時,將會自動地被恢復成配置通道時設定的初值,dma操作將會繼續進行。

初始化引數

dma_deinit:將dmay的通道x的暫存器恢復為復位啟動時的預設值。

dma_init:根據dma_initstruct中指定的引數初始化指定dma通道的暫存器。

dma_getcurrdatacounter:返回當前指定dma通道剩餘的待傳輸資料數目。

dma_cmd:使能或者禁止指定的dma通道。

dma_getflagstatus:查詢指定的dma通道的標誌位狀態。

dma_clearflag:清除指定的dma通道的待處理標誌位。

dma_itconfig:使能或禁止指定的dma通道中斷。

dma_getitstatus:查詢指定dmay的通道x的中斷的狀態。

dma_clearitpendingbit:清除dmay的通道x的中斷掛起位。

嵌入式系統應用

不論是日常生活中經常使用的家庭自動化產品 家用電器 手提 自動櫃員機 atm 還是各行各業的辦公裝置 現代化醫療裝置 航空電子 計算機網路裝置 用於工業 自動化和監測的可程式設計邏輯控制器 plc 甚至是娛樂裝置的固定遊戲機和可攜式遊戲機 等,都屬於嵌入式系統。歸納起來,嵌入式系統的應用領域可以包括...

嵌入式實時作業系統ucos ii 原理與應用(六)

第七章 動態記憶體管理 7.1 記憶體控制塊 c os 對記憶體進行兩級管理,即把乙個連續的記憶體空間分為若干各分割槽,每個分割槽分為若干個大小相等的記憶體塊。作業系統以分割槽為單位來管理動態記憶體,而任務以記憶體塊為單位來獲取和釋放動態記憶體。7.1.1 可動態分配記憶體劃分 1.記憶體塊 c o...

Linux 嵌入式系統啟動原理

一.linux系統啟動原理 bootrom是出廠固化在裡面的,檢視啟動模式,是sd卡啟動還是spiflash啟動等,或者其他啟動方式,查詢boot.bin 或者.mcs檔案。將fsbl拷貝到ddr中執行,並載入uboot到ddr。uboot看成是乙個小的作業系統,用來引到linux系統的核心 通常由...