關於PingPong緩衝的困惑

2021-06-21 14:34:31 字數 1415 閱讀 3643

請問在

edma3

裡的pingpong

緩衝機制中,

ping

緩衝區和

pong

緩衝區時存在於**?是通道控制器還是每乙個通道都分為

ping

緩衝區和

pong

緩衝區?另外,在進行

pingpong

傳輸的時候用的是乙個通道還是多個通道呢?在進行

ping-pong

傳輸的時候,既然有

ping pong

兩個目的緩衝區,那麼也對應著兩個源緩衝區,這兩個源緩衝區又存在於什麼位置呢?最後,我看的

c6678

自帶的edma

的例子裡面,只是簡單的用

dstbuff1

和dstbuff2

代表ping/pong

緩衝區,他們和實際的

ping/pong

緩衝區是怎麼對應起來的呢

?謝謝!

edma3中的ping pong機制是利用link transfer機制完成的。也可以實現三個或者以上的環形buffer的設計。具體可以看看下面文件中的「2.3.7 linking transfers」。pingpong機制,一般需要設定乙個工作的參數列,乙個ping參數列和乙個pong參數列。附件是乙個配置例子。

我看了2.3.7關於linking的描述,我的理解是其實pingpong緩衝就是給乙個通道設定ping引數和pong引數這兩組相互鏈結的引數,然後利用這兩組引數交替進行傳輸,請問我這樣的理解是否正確?謝謝!

現在有乙個問題是,如果在某乙個確定的外設和記憶體之間進行資料傳輸,採用pingpong機制,那麼ping引數裡的源位址和pong引數裡的源位址是否都為外設的位址?ping引數裡的目的位址和pong引數裡的目的位址是否都為記憶體的位址?如果不是的話,那麼ping引數和pong引數裡的目的位址和源位址應該根據什麼進行設定呢?謝謝!

你的理解正確。

可以在源位址使用兩個buffer也可以在目的位址使用兩個buffer,也可以同時都設定兩個buffer。你假設的外設位址不變,目的buffer變化時一種常用的用法。

根據你的截圖來看,初始化引數和ping引數、pong引數的源位址是一樣的,但是ping引數和pong引數的目的位址分別為兩個不同的緩衝區位址,也就是說edma從同乙個源位址讀取資料進行傳輸,然後交替往ping的緩衝區和pong的緩衝區傳輸資料,那麼請問,ping緩衝區和pong緩衝區是人為的將目標位置(比如說記憶體)進行劃分後得到的嗎?還是本來就存在,只不過需要人為的指出來然後使用就行了?謝謝!

在執行edma的pingpong緩衝的時候設定了兩組引數即ping引數和pong引數,請問觸發傳輸的時候先載入哪一組引數呢?謝謝!

上面的圖有三個參數列,乙個存ping的配置,乙個存pong的配置,還有乙個叫working參數列。初始如果working表放ping的配置就從ping開始。

困惑關於INT GUID DATETIME

首先我的機器很爛,而且還十分不穩定,沒有測試的條件。只能提出困惑。今天才了解guid做主鍵從某種意義上來講的確是比int來強的。舉個例子吧。假如文章表內有乙個分類id。另乙個是分類id表。主鍵為int自增長 傳說就是因為int自增長時為了確定int所以會製成insert時效率不如guid。好像有這麼...

關於TOAD許可權的困惑

1.當乙個oracle使用者,只授與connect resource角色的時候,oracle控制台無法使用該使用者登入,而toad是可以的。使用oracle控制台,需要select any dictionary許可權。可是當沒有這個許可權的時候,toad登入,好象也可以看到很多與資料字典有關的東西,...

關於困惑已久的var self this的解釋

this.name name this.age age this.sayhello function this.saysomething function 詳見 var b1 new basetype wede 30 b1.saysomething my name is wede,and i m 3...