全志SDK資料,全志H3_dma介面使用說明書
2. Dmaengine 框架
2.1.基本概述
Dmaengine 是 linux 核心 dma 驅動框架,針對 DMA 驅動的混亂局面核心社群提出了一個全新的框架驅動,目標在統一 dma API 讓各個模組使用 DMA 時不用關心硬體細節,同時程式碼複用提高。並且實現非同步的資料傳輸,降低機器負載。
2.1.1.術語約定
DMA: Direct Memory Access(直接記憶體存取)
Channel: DMA 通道
Slave: 從通道,一般指裝置通道
Master: 主通道,一般指記憶體
2.1.2.功能簡介
Dmaengine 向使用者提供統一的介面,不同的模式下使用不同的 DMA 介面,省去使用過多的關注硬體介面。
2.2.基本結構
2.3.模式
2.3.1. 記憶體複製
純粹地記憶體複製,即從指定的源地址複製到指定的目的地址。傳輸完畢會發生一箇中斷,並呼叫回函式。
2.3.2. 雜湊表
雜湊模式是把不連續的記憶體塊直接傳輸到指定的目的地址。當傳輸完畢會發生一箇中斷,並呼叫回撥函式。
上述的雜湊複製操作是針對於 Slave 裝置而言的,它支援的是 Slave 與 Master 之間的複製,還有另一雜湊複製是專門對記憶體進行操作的,即 Master 與 Master 之間進行操作,具體形式圖如下:
2.3.3. 迴圈快取
迴圈模式就是把一塊 Ring buffer 切成若干片,週而復始的傳輸,每傳完一個片會發生一箇中斷,同時呼叫回撥函式。
3. 介面介紹
3.1.通道相關
struct dma_chan *dma_request_channel(dma_cap_mask_t *mask,
dma_filter_fn fn, void *fn_param);
功能:申請一個可用通道
引數:mask 所有申請的傳輸型別的掩碼。
fn DMA 驅動私有的過濾函式。
fn_param 傳入的私有引數。
返回:返回一個通道資料指標。
void dma_release_channel(struct dma_chan *chan)
功能:釋放一個通道
引數:所需要釋放的通道指標
3.2.配置相關
int dmaengine_slave_config(struct dma_chan *chan, struct dma_slave_config *config)
功能:配置一個從通道傳輸
引數:chan 通道結構指標
config 配置資料指標
返回:非零表示失敗,零表示成功
struct dma_slave_config {
enum dma_transfer_direction direction;
dma_addr_t src_addr;
dma_addr_t dst_addr;
enum dma_slave_buswidth src_addr_width;
enum dma_slave_buswidth dst_addr_width;
u32 src_maxburst;
u32 dst_maxburst;
bool device_fc;
unsigned int slave_id;
}
direction: 傳輸方向,取值 MEM_TO_DEV DEV_TO_MEM MEM_TO_MEM DEV_TO_DEV
src_addr: 源地址,必須是實體地址;
dst_addr: 目的地址,必須是實體地址;
src_addr_width: 源資料寬度,byte 整數倍,取值 1,2,4,8;
dst_addr_width: 目的資料寬度,取值同上;
src_max_burst: 源突發長度,取值 1,4,8;
dst_max_burst: 目的突發長度,取值同上;
slave_id: 從通道 id 號,此處用作 DRQ 的設定,使用 sunxi_slave_id(d, s)宏設定,具體取值參照
include/linux/sunxi-dma.h 裡使用;
3.3.傳輸相關
struct dma_async_tx_descriptor *dmaengine_prep_slave_single(struct dma_chan *chan,
dma_addr_t buf, size_t len, enum dma_transfer_direction dir,
unsigned long flags)
功能:準備一次單包傳輸
引數:chan 通道指標;
buf 需要傳輸地址;
dir 傳輸方向,此處為 DMA_MEM_TO_DEV,DMA_DEV_TO_MEM
flags 傳輸標誌;
返回:返回一個傳輸描述符指標。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31529038/viewspace-2645924/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 全志R11 SDK版本說明書
- 全志R11_tinav2.5_tplayer播放器介面說明書(SDK)播放器
- H3 DragonBox使用說明書,全志H3 SDK開發包Go
- 全志R16 tina SDK下載說明,全志R16編譯環境編譯
- 全志A40I sys_config.fex使用配置說明,全志A40I軟體開發
- 全志H3_wifi模組移植說明文件V-SDK軟體資料WiFi
- 全志晶片資料-A10 User Manual晶片
- 人臉識別全志T509工業級Android晶片商湯演算法sdk說明Android晶片演算法
- 全志R16 DragonBoard使用手冊資料下載Go
- 全志處理器,全志A40i晶片引數分享晶片
- 全志H6方案原理圖資料
- 全志TinyVision晶片文章彙總晶片
- 全志R16原理圖 checklist
- 全志A13處理器使用者手冊
- 全志資料:麥克風選型,外圍電路及Layout指南
- 全志R16 android4平臺移植wifi資料下載AndroidWiFi
- axios使用說明書iOS
- 全志R16_SPI匯流排驅動的使用文件
- springboot的註解的作用說明(全)Spring Boot
- Allwinner(全志)V3s Camera sensor Support List
- 全志AXP216電源系統管理晶片晶片
- 全志RV1108常見問題操作解答
- 資料庫⽇志管理資料庫
- 【嵌入式AI】全志 XR806 say hello worldAI
- 大牛直播SDK-Windows推送端使用說明Windows
- 專利說明書及其說明書附圖
- 產品資料管理(PDM)技術說明書
- allwinner 全志uboot git網址 及其他相關連結bootGit
- 全志最新電子紙專用SoC晶片B300晶片
- 全志T7-原理圖設計指南(AXP858)
- MOBIM介面說明
- 全國產化全志A40i核心板,照亮電力裝置國產化之路
- Java @FunctionInterface函式式介面使用說明JavaFunction函式
- 全志最新處理器平臺-R311晶片介紹晶片
- 最新全志R11_Tina_2.5_交叉編譯器介紹編譯
- 全志 A64開發板設定qt程式自啟動QT
- 全志A40i開發板編譯環境的搭建編譯
- 全志A40i/T3如何透過SPI轉CAN