[問題] 如何關掉/打開 arm cpu 快取記憶體
大家好,
我的作業平台是FPGA zynq 開發板,裡面有arm cpu。
最近在試用dma將寫進DDR的資料搬出來,
但發現搬出來的資料都有問題。
後來發現在dma開始搬資料前使用sdk開發平台的date cache disable這個功能就能讓
結果是正常的。
不過我之後希望將這個流程搬到灌了linux作業系統的環境下去執行,
因此想要問一下在linux開發環境下要如何去關掉跟打開快取呢?
我是用ubuntu的linux,
謝謝大家。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.58.88 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1585817001.A.3E3.html
→
04/02 22:43,
4年前
, 1F
04/02 22:43, 1F
→
04/02 22:44,
4年前
, 2F
04/02 22:44, 2F
我的dma funciton在linux下面不能用,然後我是直接寫dma的register來啟動dma。
所以我才想要知道如果開/關cache呢?
※ 編輯: hirofumisyo (111.251.48.187 臺灣), 04/04/2020 16:57:01
推
04/04 21:17,
4年前
, 3F
04/04 21:17, 3F
請問在linix下怎麼flush cache呢?
※ 編輯: hirofumisyo (101.136.141.77 臺灣), 04/04/2020 22:54:55
→
04/05 13:32,
4年前
, 4F
04/05 13:32, 4F
→
04/05 13:32,
4年前
, 5F
04/05 13:32, 5F
感謝回應,我找了一些dma coherent的資料來看後,我的理解是CPU在讀寫DDR時不是直接
讀寫DDR,而是透過cache; 但DMA卻是直接搬運DDR的資料,所以才會產生搬的data跟從
CPU寫入的不一樣。我不太懂你提到的用cma劃dma區段是什麼意思,在我使用的FPGA手冊
有給出DDR對應到的memory address range,因此我使用mmap的方法將data寫到對應的
address上(共4MB)。
※ 編輯: hirofumisyo (111.251.48.187 臺灣), 04/05/2020 20:35:13
→
04/06 22:38,
4年前
, 6F
04/06 22:38, 6F
→
04/06 22:38,
4年前
, 7F
04/06 22:38, 7F
→
04/07 16:07,
4年前
, 8F
04/07 16:07, 8F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章