2016-12-26 5 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 리눅스 소스 코드가 될 수 매우 도움이