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

COMPLETION для MEMORY WRITE

Начал разбираться с PCIE и есть вопрос.

Опиушу ситуацию:

1. Есть мат. плата на которой стоит процессорный модуль с LINUX.

2. На плате также стоит FPGA ARRIA2GX, которая связана с процессорным модулей по PCIE

3. Хочется реализовать простейший аппаратный цикл в данном случае MEMORY WRITE non posted

4. В FPGA используется HARD IP PCIE

5. В результате енумерации линукс увидел устройство с задаными ID . Увиделся выбранный BAR.

6. Делается запись в этот бар со стороны LINUX со смещением 0х0 значение 0х30. (32bit)

7. На анализаторе в FPGA видим реквест: (64 битные слова)

00Е0_000F-4000_0001

0000_0000_BC00_0000

0000_0030_0000_0030

 

FPGA формирует в ответ на это COMPLETION

0100_0000-0А00_0001

0000_0000-00Е0_0000

 

но после этого операционка вешается. Явно почему то не понравился этот комплешн...

 

8. Делаем запись в этот бар со стороны LINUX со смещением 0х8 значение 0хDEAD_BEEF (32bit)

9. На анализаторе в FPGA видим реквест: (64 битные слова)

00Е0_000F-4000_0001

0000_0000_BC00_0020

DEAD_BEEF_DEAD_BEEF

 

FPGA формирует в ответ на это COMPLETION

0100_0000-0А00_0001

0000_0000-00Е0_0000

 

Все ок...

 

Подскажите люди добрые, в чом собака порылась?

В принципе проходят даже некоторые циклы чтения, но также иногда зависают....

Если нужна какая доп информация отвечу.

Понимаю что вопрос чайниковский, но все же!

 

p.s. Не откажусь от грамотной консультации, могу перезвонить с вопросами и т.д.

p.s.s. Понимаю что есть какая то мелочь но найти ее очень тяжело.

p.s.s.s. Может просто кто проверит правильность формируемого комплешина? Может кто даст исходник какой посмотреть с примером простейшего чтения/записи слов без всяких DMA и усложнений?

В качестве интерфейса к ALTERA HARD-IP используется AVALON-ST.

 

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


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

Вот не пойму, Вы что, на запрос записи в память устройства процессору данные хотите отправлять?

 

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


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

Вот не пойму, Вы что, на запрос записи в память устройства процессору данные хотите отправлять?

Как я понял из спецификации , на non posted запросы нужно всегда формировать комплешины. В данном случае от процессора приходит запрос на запись данных в память и я должен сформировать пустой комлешн без данных сигнализируя процессору, что данные записаны. Если я не прав поправте меня пожалуйста.

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


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

Как я понял из спецификации , на non posted запросы нужно всегда формировать комплешины. В данном случае от процессора приходит запрос на запись данных в память и я должен сформировать пустой комлешн без данных сигнализируя процессору, что данные записаны. Если я не прав поправок меня пожалуйста.

А как Вы определили, что он non-posted?

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


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

А как Вы определили, что он non-posted?

 

Честно говоря я об этом чтото не подумал, по TLP действительно этого не понять...

вы хотите сказать что в моем случае комплешн отправлять не нужно?

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


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

Честно говоря я об этом чтото не подумал, по TLP действительно этого не понять...

вы хотите сказать что в моем случае комплешн отправлять не нужно?

не нужно. Возьмите готовое решение, а то у Вас так много времени уйдёт.

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


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

не нужно. Возьмите готовое решение, а то у Вас так много времени уйдёт.

 

Спасибо за совет! Обязательно после праздников попробую на работе.

По поводу готового решения нельзя ли по подробнее, что вы имеете ввиду? Имеются какие то конкретные примеры, которые можно было бы взять за основу организации шинной модели?

 

У меня еще остался один не очевидный вопрос к циклам записи, а даже скорее к не к ним а к организации

циклов задержки. К примеру если приемное устройство не успевает принимать данные от передающего.

Каким образом осуществляется сигнализация о неготовности приемного устройства?

В AVALON ST есть сигнал RX_READY, выставляя который в принципе можно приостановить шину AVALON, но будет ли

при этом задержаны циклы PCIE? Скорей всего данные будут копится во внутренних буферах AVALON и все это в конце концов плохо закончится.

Намекните как приостановить входной поток со стороны PCIE? Или я опять придумываю несуществующие проблемы и AVALON будет сам сигнализировать PCIE немного притормозить?

 

Спасибо за то что разъясняете ключевые моменты, потому как зная их намного легче разбираться в других тонкостях

довольно сложного стандарта...

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


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

Спасибо за совет! Обязательно после праздников попробую на работе.

По поводу готового решения нельзя ли по подробнее, что вы имеете ввиду? Имеются какие то конкретные примеры, которые можно было бы взять за основу организации шинной модели?

 

У меня еще остался один не очевидный вопрос к циклам записи, а даже скорее к не к ним а к организации

циклов задержки. К примеру если приемное устройство не успевает принимать данные от передающего.

Каким образом осуществляется сигнализация о неготовности приемного устройства?

В AVALON ST есть сигнал RX_READY, выставляя который в принципе можно приостановить шину AVALON, но будет ли

при этом задержаны циклы PCIE? Скорей всего данные будут копится во внутренних буферах AVALON и все это в конце концов плохо закончится.

Намекните как приостановить входной поток со стороны PCIE? Или я опять придумываю несуществующие проблемы и AVALON будет сам сигнализировать PCIE немного притормозить?

 

Спасибо за то что разъясняете ключевые моменты, потому как зная их намного легче разбираться в других тонкостях

довольно сложного стандарта...

У altera есть ref design для pcie, лучше, конечно, через nios или через сторонний dma контроллер. Приостановить можно, какие сигналы на выходе ядра в алтьере не знаю, я с xilinx работаю. Только вряд ли у Вас приёмник будет занят, скорость 10 мбайт в секунду вряд ли что-то может перегрузить.

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


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

Спасибо огромное за совет! Действительно на эти циклы формировать комплешины не требуется. Циклы записи успешно отрабатываются. Без вашей поддержки я бы потратил кучу времени неправильно истолковав соотв главу стандарта. К сож он довольно сложно описан однако ответы там конечноже есть, только поиск их может длится не один день...

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


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

Спасибо огромное за совет! Действительно на эти циклы формировать комплешины не требуется. Циклы записи успешно отрабатываются. Без вашей поддержки я бы потратил кучу времени неправильно истолковав соотв главу стандарта. К сож он довольно сложно описан однако ответы там конечноже есть, только поиск их может длится не один день...

Да не за что. Это только верхушка айсберга, не советую делать свою логику с нуля, уйдёт очень много времени, присмотритесь к мостам для nios.

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


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

To aosp:

Если все еще есть вопросы по PCIE - обращайтесь, могу помочь советами, так как сам через это проходил год назад. Сейчас имеется на руках работоспособный (ну почти))) ) проект по обмену данными через PCIE как разовыми командами, так и по dma каналу.

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


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

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

будут вопросы обязательно к вам обращусь!

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


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

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

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

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

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

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

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

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

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

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