LinuxDev 板


LINE

一直忘記講我的思路 我有段時間沒有碰FPGA,可能有寫錯的地方了 ※ 引述《hirofumisyo (Ami)》之銘言: : 標題: [問題] 如何關掉/打開 arm cpu 快取記憶體 : 時間: Thu Apr 2 16:43:16 2020 : : 大家好, : : 我的作業平台是FPGA zynq 開發板,裡面有arm cpu。 : : 最近在試用dma將寫進DDR的資料搬出來, : : 但發現搬出來的資料都有問題。 : : 後來發現在dma開始搬資料前使用sdk開發平台的date cache disable這個功能就能讓 : : 結果是正常的。 : : 不過我之後希望將這個流程搬到灌了linux作業系統的環境下去執行, : : 因此想要問一下在linux開發環境下要如何去關掉跟打開快取呢? : : 我是用ubuntu的linux, : : 謝謝大家。 : : -- :



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.58.88 (臺灣)
: ※ 文章網址: https://webptt.com/m.aspx?n=bbs/LinuxDev/M.1585817001.A.3E3.html : → descent: dma 要記憶體的 function 可以配置non cacahe/non buffer 04/02 22:43 : → hizuki: linux dma coherent 了解下,劃dma區段可用cma實現,如許 04/05 13:32 : → hizuki: 詳細答覆我回頭寫給你 04/05 13:32 : 感謝回應,我找了一些dma coherent的資料來看後,我的理解是CPU在讀寫DDR時不是直接 : 讀寫DDR,而是透過cache; 但DMA卻是直接搬運DDR的資料,所以才會產生搬的data跟從 : CPU寫入的不一樣。我不太懂你提到的用cma劃dma區段是什麼意思,在我使用的FPGA手冊 : 有給出DDR對應到的memory address range,因此我使用mmap的方法將data寫到對應的 : address上(共4MB) FGPA因為沒有Iommu,所以必須訪問continguous memory 因此我們使用dts當中將一段memory設定為reserved-memory https://www.kernel.org/doc/Documentation/devicetree/bindings/reserved-memory/reserved-memory.txt 這樣linux kernel就不會去使用這一段 Linux當中有兩種memory是不會有cache的問題,一個是io的memory region,一個是dma memory 後者的問題是device/host的一致性問題 我們唯獨需要確保的就是FPGA寫入的東西,在我們讀取的時候不被寫入。這邊的同步請自行 和FPGA進行通訊確保。效率的關鍵就在這裡 然後關於Linux上訪問該區段的問題,我這裡寫一個比較傻的方法,想必你也不需要別的DMA Memory 首先初始化該區段 of_reserved_mem_device_init() https://elixir.bootlin.com/linux/v5.6.3/source/drivers/media/platform/mtk-vpu/mtk_vpu.c#L854 然後去這個區段取一段memory出來進行mapping(這樣kernel才可以訪問) dma_alloc_coherent() https://www.kernel.org/doc/Documentation/DMA-API-HOWTO.txt https://elixir.bootlin.com/linux/v5.6.3/source/drivers/media/platform/mtk-vpu/mtk_vpu.c#L679 一般論的話,這段memory其實都是從開頭開始分的 當然還有更簡單的做法,只做reserved-memory那一步,然後對 /dev/mem 進行mmap()操作 這部分只要編譯kernel的時候有許可訪問 /dev/mem 就可以,記憶體的物理位置要自行在程式中配置, 或者從/proc 當中讀dts出來 複雜點的做法可以用 memremap() 就好了 : → WPC001: flush_tlb_mm() / flush_tlb_range() /update_mmu_cache() 04/06 22:38 : → WPC001: 有空自己看一下... 04/06 22:38 別鬧啊,哪個driver這樣寫,很簡單的事情非要用非推薦的書寫方式 : → leolarrel: 參考 volatile 關鍵字 04/07 16:07 這完全就是胡說八道了,這優化的是compiler -- 起初,皇軍進佔滿州, 我沒有反對,因為我要去滿州撈錢。 接著,皇軍發動對支戰爭, 我沒有反對,因為那是支那人自找苦吃。 後來,皇軍發動太平洋戰爭,我沒有反對,因為看鬼畜米英四處奔逃出了一口惡氣。 以後,鬼畜米英來轟炸, 我全力反對,因為我們台灣是無辜的,這是米英的戰爭罪行 最後,天皇宣布無條件投降,我沒有反對。因為我們台灣人是戰勝國國民, 戰爭責任與我無關,我要有跟戰勝國一樣的物資配給好賺錢,也不要坐祥瑞回家! --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 38.106.22.59 (美國)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/LinuxDev/M.1586499854.A.907.html 打了半天會發現別的FPGA有文檔了,思路是萬年不變的 https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841683/Linux+Reserved+Memory ※ 編輯: hizuki (38.106.22.59 美國), 04/10/2020 14:30:07
1F:→ leolarrel: 抱歉我胡說八道了 04/10 17:49
2F:推 bearbox: 感謝分享 06/09 10:02







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP