Part Number:AM3352
Hi Expert
開發環境: am3352 + linux-4.19.38
測試方法:
DMA + GPMC 使用dmaengine_prep_dma_memcpy() 的模式, GPMC burst lenght為 4-word (i.e. 8-byte)
結果:
實驗DMA 讀寫 8-byte : OK
實驗DMA 讀寫 16-byte 倍數 : OK
實驗DMA 讀寫 32-byte : 實測讀寫皆 32-byte
實驗DMA 讀寫 80-byte : 實測讀寫皆 80-byte
實驗DMA 讀寫 128-byte : 實測讀寫皆 128-byte
實驗DMA 讀寫 8的倍數但非16倍數 : NG
實驗DMA 讀寫 24-byte : 實測讀寫皆 32-byte
實驗DMA 讀寫 40-byte : 實測讀寫皆 48-byte
實驗DMA 讀寫 56-byte : 實測讀寫皆 64-byte
如果 DMA + GPMC 一樣使用dmaengine_prep_dma_memcpy() 的模式, GPMC burst lenght為 8-word (i.e. 16-byte),無上述問題。
請問DMA 4-word 讀寫在長度為8 時沒問題,為什麼在 8 + 16*N (N >=1) 時,會多讀寫一筆 8-byte 呢?
感謝 ~
Daniel
Susan Ren:
感謝您對TI產品的關注! 為更加有效地解決您的問題,我需要多一些時間查看這款晶元,稍後會為您解答。
,
Susan Ren:
你能夠解釋如何運行這個測試嗎?
,
Daniel Cheng1:
Hi Susan
實作可參考下面網址:
https://www.twblogs.net/a/5c77ac64bd9eee31cea578ce
謝謝
Daniel
,
Susan Ren:
Hi Daniel,
AM335x Linux GPMC 驅動程式已經支援 DMA,為什麼要實現另一個 DMA 驅動程式來執行 DMA 複製?您對 Linux GPMC 驅動程式有任何問題嗎?
謝謝
Susan
,
Daniel Cheng1:
Hi Susan
請問你提的Linux GPMC驅動程式是指哪一個?
Thanks
Daniel
,
Susan Ren:
Hi Daniel,
很抱歉,你是對的,處理器開發工具包中的內核 GPMC 驅動程式不支援 DMA。我在 GPMC 節點中看到了 am33xx.dtsi 定義的 edma 52,只是認為 GPMC 驅動程式中支援 DMA。但實際上,驅動程式\/記憶體\/omap-gpmc.c 沒有任何對 DMA 的引用。不幸的是,GPMC中的DMA支援尚未在處理器SDK內核中得到驗證,我無法評論為什麼它在自定義的DMA memcpy驅動程式中具有這種行為。
Thanks,
Susan