2017-07-26 75 views
0

我正在嘗試使用Vxworks 6.9從ARM cortex A8 ona板讀取FPGA(altera cyclone IV)寄存器。如何在C/C++中訪問VXworks上的物理地址?

例如

#define My_FPGA_IP_Address_Base 0x00000400 
    #define mm_avalon 0x25000000 

    int main(){ 
    vxWorks_read_fromAddr (mm_avalon + My_FPGA_IP_Address_Base) ; //how can I get this on Vxworks 
    } 

誰能幫助我,在此先感謝

+1

可能的重複[如何從VxWorks中的RTP訪問我的存儲器映射I/O設備(FPGA)](https://stackoverflow.com/questions/113001/how-do-i-access-my -memory-mapped-io-device-fpga-from-a-rtp-in-vxworks) – solidpixel

+0

正確的方法是通過內核中的設備驅動程序進行連接。通過設計,您不應該從RTP –

回答

-1

你應該能夠使用虛擬地址來訪問使用普通指針寄存器。

int* myRegister = mm_avalon + My_FPGA_IP_Address_Base + registerOffset; int myRegisterValue = *myRegister;

*myRegister = 10;

假設你的寄存器寫使能。

看看this post這似乎與更多信息有關。

+0

中獲得內存映射IO,這要感謝您的支持,但是我可以通過哪些Vxworks API從硬件中讀取數據? – sam60

+0

您不需要任何系統調用或特殊功能,只需在程序中像全局內存位置那樣訪問寄存器即可。 – Nomios

+0

對不起,它沒有工作,int * myregister =(int *)0x25000400;那麼我做了一個簡單的printf:我得到一個錯誤:「由於信號11,RTP 0x824abfd8已被刪除。」;你確定我們可以通過使用一個簡單的c-pointer從物理地址讀取嗎? – sam60