2016-12-26 3 views
0

私はPCIベースのデバイス、特にtms320c6000 DSPをベースにしていますが、Jungo WinDriverを介してこのデバイスと通信しようとしています。驚くべきことに、時にはうまく動作しないことがあります。システムがハングしてもシステムを再起動する必要がない場合は、時々動作しません。jungoドライバを使用してPCIデバイスと通信するときの確定的な動作

これは、たとえばEMIFレジスタを読み取るために使用したコードです。

WD_TRANSFER tt[9]; 
BZERO(tt); 
for (unsigned i = 0; i < 9; i++) { 
    tt[i].cmdTrans = RM_DWORD; 
    tt[i].dwPort = mmr + (i * 4); 
} 
WD_MultiTransfer(hDevice, &tt, 9); 

MMRは、PCIバーとそのマッピングされたアドレス(MMRである非prefechtableメモリマップ)についての情報を与えたのWD_CardRegister関数から来ました。

誰かがこの問題を引き起こす可能性があることについてヒントを与えることができれば、非常に感謝します。

おかげ

答えて

0

は、私はこの問題は他の誰かに起こった場合には、私の質問に答えています。

このデバイスを使用する前に実行する必要のある操作があります。

  1. ウォームリセット(HDCRレジスタを設定)(WARMRESETビットをセット)。
  2. EMIFレジスタを初期化する必要があります。これらは、私が使用した値です。

    struct emif emif_val = { 
        0x00052078, //GBLCTL; 
        0x73a28e01, //CE1 Flash/FPGA; 
        0xffffffd3, //CE0 SDRAM; 
        0x00000000, //Reserved; 
        0x22a28a22, //CE2 Daughtercard 32-bit async 
        0x22a28a42, //CE3 Daughtercard 32-bit sync 
        0x63115000, //SDRAM contral, 4 banks 
        0x0000081b, //SDRAM timing 
        0x001faf4d //SDRAM extended control 
    }; 
    

    となり、問題なくデバイスのすべてのアドレススペースにアクセスできます。

や詳細についてはthis Linuxのソースコードは非常に有用

可能性があり
関連する問題