Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: COMPLETION для MEMORY WRITE
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > ISA/PCI/PCI-X/PCI Express
aosp
Начал разбираться с 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.
dmitry-tomsk
Вот не пойму, Вы что, на запрос записи в память устройства процессору данные хотите отправлять?
aosp
Цитата(dmitry-tomsk @ Apr 29 2011, 21:28) *
Вот не пойму, Вы что, на запрос записи в память устройства процессору данные хотите отправлять?

Как я понял из спецификации , на non posted запросы нужно всегда формировать комплешины. В данном случае от процессора приходит запрос на запись данных в память и я должен сформировать пустой комлешн без данных сигнализируя процессору, что данные записаны. Если я не прав поправте меня пожалуйста.
dmitry-tomsk
Цитата(aosp @ Apr 30 2011, 16:11) *
Как я понял из спецификации , на non posted запросы нужно всегда формировать комплешины. В данном случае от процессора приходит запрос на запись данных в память и я должен сформировать пустой комлешн без данных сигнализируя процессору, что данные записаны. Если я не прав поправок меня пожалуйста.

А как Вы определили, что он non-posted?
aosp
Цитата(dmitry-tomsk @ Apr 30 2011, 16:12) *
А как Вы определили, что он non-posted?


Честно говоря я об этом чтото не подумал, по TLP действительно этого не понять...
вы хотите сказать что в моем случае комплешн отправлять не нужно?
dmitry-tomsk
Цитата(aosp @ Apr 30 2011, 16:27) *
Честно говоря я об этом чтото не подумал, по TLP действительно этого не понять...
вы хотите сказать что в моем случае комплешн отправлять не нужно?

не нужно. Возьмите готовое решение, а то у Вас так много времени уйдёт.
aosp
Цитата(dmitry-tomsk @ Apr 30 2011, 20:03) *
не нужно. Возьмите готовое решение, а то у Вас так много времени уйдёт.


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

У меня еще остался один не очевидный вопрос к циклам записи, а даже скорее к не к ним а к организации
циклов задержки. К примеру если приемное устройство не успевает принимать данные от передающего.
Каким образом осуществляется сигнализация о неготовности приемного устройства?
В AVALON ST есть сигнал RX_READY, выставляя который в принципе можно приостановить шину AVALON, но будет ли
при этом задержаны циклы PCIE? Скорей всего данные будут копится во внутренних буферах AVALON и все это в конце концов плохо закончится.
Намекните как приостановить входной поток со стороны PCIE? Или я опять придумываю несуществующие проблемы и AVALON будет сам сигнализировать PCIE немного притормозить?

Спасибо за то что разъясняете ключевые моменты, потому как зная их намного легче разбираться в других тонкостях
довольно сложного стандарта...
dmitry-tomsk
Цитата(aosp @ Apr 30 2011, 22:13) *
Спасибо за совет! Обязательно после праздников попробую на работе.
По поводу готового решения нельзя ли по подробнее, что вы имеете ввиду? Имеются какие то конкретные примеры, которые можно было бы взять за основу организации шинной модели?

У меня еще остался один не очевидный вопрос к циклам записи, а даже скорее к не к ним а к организации
циклов задержки. К примеру если приемное устройство не успевает принимать данные от передающего.
Каким образом осуществляется сигнализация о неготовности приемного устройства?
В AVALON ST есть сигнал RX_READY, выставляя который в принципе можно приостановить шину AVALON, но будет ли
при этом задержаны циклы PCIE? Скорей всего данные будут копится во внутренних буферах AVALON и все это в конце концов плохо закончится.
Намекните как приостановить входной поток со стороны PCIE? Или я опять придумываю несуществующие проблемы и AVALON будет сам сигнализировать PCIE немного притормозить?

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

У altera есть ref design для pcie, лучше, конечно, через nios или через сторонний dma контроллер. Приостановить можно, какие сигналы на выходе ядра в алтьере не знаю, я с xilinx работаю. Только вряд ли у Вас приёмник будет занят, скорость 10 мбайт в секунду вряд ли что-то может перегрузить.
aosp
Спасибо огромное за совет! Действительно на эти циклы формировать комплешины не требуется. Циклы записи успешно отрабатываются. Без вашей поддержки я бы потратил кучу времени неправильно истолковав соотв главу стандарта. К сож он довольно сложно описан однако ответы там конечноже есть, только поиск их может длится не один день...
dmitry-tomsk
Цитата(aosp @ May 3 2011, 21:35) *
Спасибо огромное за совет! Действительно на эти циклы формировать комплешины не требуется. Циклы записи успешно отрабатываются. Без вашей поддержки я бы потратил кучу времени неправильно истолковав соотв главу стандарта. К сож он довольно сложно описан однако ответы там конечноже есть, только поиск их может длится не один день...

Да не за что. Это только верхушка айсберга, не советую делать свою логику с нуля, уйдёт очень много времени, присмотритесь к мостам для nios.
novartis
To aosp:
Если все еще есть вопросы по PCIE - обращайтесь, могу помочь советами, так как сам через это проходил год назад. Сейчас имеется на руках работоспособный (ну почти))) ) проект по обмену данными через PCIE как разовыми командами, так и по dma каналу.
aosp
спасибо господа, за советы и разьяснения! проект начал жить и с pcie на начальном уровне разобрался.
будут вопросы обязательно к вам обращусь!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.