Jump to content

    
Sign in to follow this  
Aleksei_Rostov

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

Recommended Posts

здравствуйте! Подскажите как правильно организовать обмен по 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

 

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

 

 

 

Share this post


Link to post
Share on other sites

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

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

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

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

Edited by farbius

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this