Перейти к содержанию
    

обмен данными по pciE для ml605 xilinx

здравствуйте! Подскажите как правильно организовать обмен по pcie.

В XPS собираю систему: microblaze, ddr, cdma, axi_pcie, порты вывода на led'ы.

post-77312-1415091843_thumb.png

В настройках pcie ядра режим определил как end point, задал только BAR0 и его размер 64 кбайт 32 bit адресного пространства. На начальном этапе работаю без DMA, пытаюсь записать число микроблейзом в регистр BAR0

В SDK программа выполняет: мигание светодиодом и запись числа в первую ячейку BAR0 (для записи использую функцию вывода данных на периферию Xil_Out32).

 

#include "xparameters.h"
#include "xil_io.h"
/************************** Function Prototypes *****************************/
int leds (void);

#define delay 250000

void main(void)
{

   while(1)
   {

     leds();
    Xil_Out32(XPAR_PCI_EXPRESS_AXIBAR_0, 0x01234567);


   }
}


int leds (void)
{

int i;

       for(i=0; i<delay; i++ );
       Xil_Out8(XPAR_LEDS_8BITS_BASEADDR, 0x01);
       for(i=0; i<delay; i++ );
       Xil_Out8(XPAR_LEDS_8BITS_BASEADDR, 0x00);
return 0;

}

 

Делаю след образом (плата в разъеме pcie):

-- заливаю .bit файл.

-- перезагружаю компьютер

-- в диспетчере наблюдаю pcie контроллер памяти

-- с помощью PcieTree вижу свою плату с заданными VID, размером BAR0 и его начальным адресом (в конфиг регистре) в оперативной памяти и т.д.

-- открываю содержимое BAR0

-- загружаю .elf файл содержимое в ячейках BAR0 изменилось на FFFFFFFF, светодиод моргнул только один раз,

при обновлении PcieTree начальный адрес BAR0 на 0000.

post-77312-1415092857_thumb.png

 

Что делаю не так?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Все разобрался! Собрал систему без microblaze: pcie + ddr + cdma + bram + leds_gpio

В настройках pcie выделил 3 BAR пространства. Отмаппировал cdma и leds_gpio на BAR1 и BAR2, ddr на BAR0. Залил во flash. Перезагрузил ПК

Далее программой Pcietree открываю например BAR2 и пишу в первый регистр число -- загораются соответствующие светодиоды.

Аналогично можно управлять cdma для считывания\записи потока данных в BAR0

Изменено пользователем farbius

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...