相關的虛擬位址已經可以直接到應用的層級,相關的設定已經在embedded中給出:輕量級別的由匯流排下來的第乙個偏移位址已經由別人提供,是hps.h中的alt_lwfpgaslvs_ofst。在此基礎上加上在qsys中的基位址就可以完全對應乙個ip部件並對其進行相關的操作。只需要呼叫相應的.h呼叫即可,lw在此基礎上得到了很大的實惠。而hps內部的呼叫直接用位址就可以,只需要在qsys中設定其基位址就可以構造其虛擬位址在c中程式設計。
採用共享記憶體進行通訊的優點是效率高,直接讀寫記憶體不需要進行資料拷貝。一開始的時候沒有找到硬體手冊,於是傻傻地跑去看了由uboot.scr產生,在目錄project direction\software\spl_bsp\generated\sdram下有乙個sdram_config.h檔案,其中描述了各個fpga介面的位址,其中有這麼一段:通常使用mmap有三種情況,1、提高i/o效率 2、匿名記憶體對映 3、共享記憶體程序通訊。
mmap用於記憶體對映的一種方式是開啟或建立乙個檔案,然後呼叫mmap().(另一種方式如下:程序a和程序b都將該頁對映到自己的位址空間,當程序a第一次訪問該頁中的資料時產生乙個缺頁中斷,核心此時讀入這一頁到記憶體並更新頁表使之指向它,當程序b訪問同一頁發生缺頁中斷時,該頁已經在記憶體中,核心只需要將程序b的頁表登記項指向此頁即可)
說明fpga寫入ddr3的資料是從0xffff0000開始寫的,用這個作為偏移量就可以訪問ddr3啦!
不過總感覺這麼幹有點怪怪的……
cpu和記憶體之間 位址對映
cpu和記憶體之間有三根匯流排,位址,資料,和控制匯流排。這是在說位址之間的問題。cpu和記憶體之間用位址來查詢資料,但是兩者的位址並不總是一樣的,cpu產生的是邏輯位址,而記憶體的就是實體地址。通常都是不一樣的,所以需要位址對映。正好是從程式設計人員的角度看,不考慮解釋執行 程式總是經過源程式編譯...
虛擬位址和實體地址之間的對映關係
1 虛擬位址和實體地址之間的對映是以頁 4kb 為單位進行對映的 2 每乙個程序中都有乙個程序控制塊 pcb 裡面包含了一些程序的資訊 頁目錄,狀態,控制代碼表,id,pid 3 對映過程 32位系統下 首先pcb中有乙個指向一級分頁表的指標,每乙個頁表的大小均為4096b 4kb 可以儲存1024...
SDRAM的位址對映方式
其實通常所說記憶體 memory 指的是 sdram synchronous dynamic random access memory 同步動態隨機訪問儲存器,同步是指memory工作需要步時鐘,內部的命令的傳送與資料的傳輸都以它為基準 動態是指儲存陣列需要不斷的重新整理來保證資料不丟失 隨機是指資...