2016-12-26 21 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 пришел из функции WD_CardRegister которая дала информацию о БАРС PCI и их отображенной адрес (MMR не является prefechtable карту памяти).

Я был бы очень признателен, если бы кто-нибудь мог дать мне некоторый намек на то, что может вызвать эту проблему.

Благодаря

ответ

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 исходный код может быть очень полезным

 Смежные вопросы

  • Нет связанных вопросов^_^