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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DAT模块简介

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DAT模块简介 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.sina.com.cn/s/blog_48fc29af0100ncdu.html

DAT模塊函數在DM642的EDMA操作中用于搬運數據。DAT_busy()函數用于檢測EDMA數據傳輸過程是否已經結束,定義如下:Uint32 DAT_busy(Uint32 ID);

DAT_busy()函數如果返回一個非零值,則表明數據傳輸過程(DAT_copy()操作或DAT_fill()操作)正在進行,其他操作需要等待,如果該函數返回零,則表明數據傳輸過程已經完成,可以執行其他操作了。DAT_busy()函數的使用方法如下:

DAT_open(DAT_CHAANY,DAT_PRI_LOW,0);//打開數據傳輸通道

Transferid=DAT_copy(src,dst,len);//數據copy,返回通道值

while(DAT_busy(transferid));//等待數據copy過程完成

?

DAT_copy()函數把源數據區中的數據轉移到目標數據區中,它的定義如下:

Uint32 DAT_copy(void *src , void *dst , Uint16 byteCnt);

src表示源數據區起始地址指針,

dst表示目標數據區起始指針,

byteCnt為被搬運數據的長度,單位為字節,

該函數返回數據搬運通道的ID值,供DAT_busy()等函數調用。

DM642的L2的EDMA數據總線為64位,要求數據以8字節為單位進行對其,所以bateCnt應為8的倍數,byteCnt為0時,數據搬運的結果是隨機的。函數的使用方法是:

?

?

DAT_open()函數用于打開一個DAT通道,該函數具有如下的定義:

Uint32 DAT_open(int chaNum, int priority, Uint32 flags);

chaNum是為EDMA操作分配的數據通道,取DAT_CHAANY、DAT_CHA0、DAT_CHA1、DAT_CHA2、DAT_CHA3中的一個,priority變量規定了該通道的優先級,priority取DAT_PRI_LOW(低優先級)、DAT_PRI_HIGH(高優先級)中的一個,

flags為標志位,明確數據操作的方式,如一維數據操作、二維數據操作等,對于二維數據操作flags應為DAT_OPEN_2D。

與DAT_open()函數想對應的是DAT_close()函數,DAT_close()函數用于關閉已打開的DAT通道。

?

?

?

?


CSLAPI int DAT_open(int chaNum, int priority, Uint32 flags);
CSLAPI void DAT_close();

CSLAPI Uint32 DAT_copy(void *src , void *dst , Uint16 byteCnt);
CSLAPI Uint32 DAT_fill(void *dst , Uint16 byteCnt, Uint32 *value);
CSLAPI void?? DAT_wait(Uint32 id);
CSLAPI int??? DAT_busy(Uint32 id);

CSLAPI Uint32 DAT_copy2d(Uint32 type, void *src, void *dst, Uint16 lineLen, Uint16 lineCnt, Uint16 linePitch);


IDECL void DAT_setPriority(int priority);



DAT_open???????? Opens the DAT module

●函數??? Uint32?? DAT_open(

??????????????????????????? int chaNum,

?????????????????????????? int priority, 優先級

?????????????????????????????????? Uint32 flags

??????????????????????? );

●參數??????? chaNum? 指定分配那個DMA通道,必須是下面其中之一:

DAT_CHAANY

DAT_CHA0

DAT_CHA1

DAT_CHA2

DAT_CHA3

priority 指定DMA通道的優先級必須是下面其中之一

DAT_PRI_LOW

DAT_PRI_HIGH

flags?? 各種各樣的打開標志

DAT_OPEN_2D

●返回值????? success?? 如果失敗返回0,如果成功返回非零值,失敗的原因如下:

?DAT模塊已經打開,

需要的資源沒有被分派。

●描述?????????????

這個函數打開DAT模塊,而且必須在調用其它DAT API 函數之前被調用,

ChaNum 參數指定了哪個DMA通道被DAT模塊單獨的打開,對于帶有EDMA的設備,ChaNum 參數被忽略,原因是快速使用的DMA并不具有一個和它匹配的通道,對具有DMA的設備,ChaNum指定了將要使用哪個DMA通道,

?DAT_PRI_LOW設置DMA通道的CPU優先級 DAT_PRI_HIGH 設置DMA通道的DMA優先級,DAT_PRI_LOW設置 LOW priority ,DAT_PRI_HIGH 設置HIGH priority,一旦 DAT 模塊被打開,任何被分配的資源,例如一個DMA通道,仍然被分配,你可以調用 DAT_close() 來釋放這些資源,如果,準備通過DAT_copy2d 來進行2Dde傳輸, DAT_OPEN_2D 標志必須被指定,對具有DMA接口的設備指定這個標志, 將要導致一個全局重載計數寄存器和一個全局索引寄存器的分配這些全局寄存器在調用DAT_close()時將被釋放,

注意:對具有EDMA的設備,DAT模塊使用EDMA寄存器來提交傳輸請求,而且將使用通道中斷掛起寄存器(CIPR),中斷并不被使能 ,但是CIPR中的中斷標志要用到, DAT模塊使用完成碼的1到4來計算一個在CIPR 寄存器中的掩碼0x00000001E ,在具有EDMA的設備上使用DAT模塊的用戶必須避免使用完成碼1到4。

使用任何有效的DMA通道來打開DAT模塊的例子,

DAT_open(DAT_CHAANY,DAT_PRI_LOW,0);

用高優先級模式使用DMA通道2打開DAT模塊,使用:

DAT_open(DAT_CHA2,DAT_PRI_HIGH,0);

使用2D拷貝打開DAT模塊,使用:

DAT_open (DAT_CHAANY, DAT_PRI_HIGH, DAT_OPEN_2D);

DAT_copy?????????????????? Copies a linear block of data from Src to Dst using DMA or

??????????????????????????????????? EDMA hardware

????????????????????????? Uint32 DAT_copy(
??????????????????????????????????????????????????????????????? void *src,
???????????????????????????????????????????????????????????????? void *dst,
??????????????????????????????????????????????????????????????? Uint16 byteCnt
?????????????????????????????????????????????????????????????????????????????? );

Arguments

???????????????????? void *src???????????????? 是一個源地址指針,

???????????????????? void *dst????????????????? 是目的地址指針,

???????????????????? Uint16 byteCnt???? 是一個無符號16位數,用來計算你要copy的byte數,這個值是以字節計算的。Return Value?????? xfrId??? Transfer ID?

?函數的返回值是一個傳輸通道的標號(xfrId??? Transfer ID),一般用作句柄

? 描述:

用CSL的DAT之前好像也得先設置好DMA或EDMA的參數,DAT可以自動選擇DMA或EDMA的方式和通道,但是具體傳輸時還是要用到DMA和EDMA的參數,所以即使是用DAT來傳輸數據,也不能回避掉DMA/EDMA的設置。



總結

以上是生活随笔為你收集整理的DAT模块简介的全部內容,希望文章能夠幫你解決所遇到的問題。

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