2017-07-26 101 views
0

私はVxworks 6.9を搭載したARM Cortex A8 onaボードからFPGA(アルタサイクロン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にアクセスしてはいけませんが、どのVx​​works APIを使ってハードウェアから読み込むことができますか? – sam60

+0

システムコールや特別な機能は必要ありません。プログラム内のグローバルメモリ位置のようにレジスタにアクセスするだけです。 – Nomios

+0

申し訳ありませんが動作しませんでした、int * myregister =(int *)0x25000400;私は単純なprintfをしました:私はエラーが発生しました: "RTP 0x824abfd8は信号11のために削除されました";シンプルなc-pointerを使って物理アドレスから読み込むことはできますか? – sam60

関連する問題