реклама на сайте
подробности

 
 
> PCIe Cyclone V, ошибка при чтении из BAR0
torik
сообщение May 29 2018, 10:08
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Всем привает.

Есть плата с Cyclone V. К плисине подключен компьютер стандарта COM Express. Плисина - endpoint. Сперва включается плисина, затем она включает комп. Все работает. Затем, если перезагружаем комп (линукс, через консоль), то после его загрузки чтение данных из BAR0 идет с ошибкой, смещение какое-то нелепое. Опять перезагрузить - ошибка может уйти, а может остаться.
Такое впечатление, что проблема в корке PCIe. Запись в BAR0 из компа проходит без ошибок. Но и при чтении смотрю шину корки PCIe, там все нормально, а комп получает другие данные!

Когда комп перезагружается, он дергает nreset для корки PCI, с нее тоже ресет выходит, но ошибка возникает.
Можно ли еще какую-то переинициализацию дли корки замутить?
Настройки PCIe корки менял на все возможные варианты, не помогает...

Описание логики ошибки:
Проводится вычитка по одному байту с двух смещений, А и В, с ожидаемыми значениями А1 и В1.
Если смещения находятся в пределах одного 64-битного слова - всё хорошо, результаты идентичны ожидаемым.
Если же нет, то:
1) вычитаем байт со смещения А тысячу раз
2) вычитаем байт со смещением А 30 раз - каждый раз получим значение А1
3) вычитаем байт со смещением В 8 раз - каждый раз получим то же значение А1
4) вычитаем байт со смещением В - получим значение В1
5) вычитаем байт со смещением В 30 раз - каждый раз получим В1
6) вычитаем байт со смещением А 8 раз - каждый раз получим то же значение В1
7) вычитаем байт со смещением А - получим значение А1
8) вычитаем байт со смещением А 30 раз - каждый раз получим А1
Итого - задержка на 8 байт. От времени между чтениями не зависит.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
torik
сообщение May 31 2018, 07:48
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 113
Регистрация: 1-11-05
Пользователь №: 10 359



Цитата
Нужен компилируемый пример.

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

И еще такое наблюдение: та же самая ошибка происходит, если плата с плисиной не просто перезагружает комп, а отключает и включает ему питание.
Т.е. ломается что-то внутри IP PCIe. И как ее сбросить, починить не понятно.

Цитата
Единица обмена по PCIe слово в 4 байта. Если нужно читать/писать байт то используются маски положения этого байта относительно слова с выровненным адресом. То-же и на шине Avalon.
У меня опыт с Avalon пока не велик - но из того что помню там есть рад нюансов (как по мне неприятно-неожиданных) связанных с тем как шина сконфигурирована - одни и тот же набор сигналов шины может вести себя по разному. И поэтому может быть что при чтении одного не выровненного байта на шине Avalon проходит несколько транзакций. Тут по хорошему надо бы на симе с PCIe посмотреть все это - погонять различные транзакции. Ну или прилепив сигналтап на выход Avalon c PCIe и смотреть на живом железе что и как.

Сигналтаб прикручен именно к Avalon c PCIe. И когда комп читает, на шине все отлично, а вот комп получает другое значение. Попробовали чтение исключительно словами 64 бит - ошибка сохраняется.

И кстати, когда работали с windriver под виндой таких проблем вообще не возникало.


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- torik   PCIe Cyclone V   May 29 2018, 10:08
- - AVR   Может глупость сморожу, но может там какая-то синх...   May 29 2018, 13:01
- - torik   На компе линукс крутится. Драйвер самодельный. Ран...   May 29 2018, 13:05
- - RobFPGA   Приветствую! Судя по всему у Вас внутри шина ...   May 29 2018, 13:21
- - Kuzmi4   Цитата(torik @ May 29 2018, 13:08) ... 3)...   May 29 2018, 13:27
- - torik   Цитатаа Вы наверное в своем драйвере пытаетесь чит...   May 29 2018, 13:42
- - torik   Сделали чтение через BAR0 исключительно 64битными ...   May 30 2018, 12:09
|- - AVR   Цитата(torik @ May 30 2018, 15:09) Сделал...   May 30 2018, 12:49
- - torik   Во-первых - заказчик категорически против))) Во-вт...   May 30 2018, 13:46
|- - AVR   Цитата(torik @ May 30 2018, 16:46) Во-пер...   May 30 2018, 13:51
- - torik   ЦитатаТогда совет номер 1 Попробуем. У альтеры е...   May 30 2018, 14:00
|- - AVR   Цитата(torik @ May 30 2018, 17:00) У альт...   May 30 2018, 14:20
||- - RobFPGA   Приветствую! Цитата(AVR @ May 30 2018, 17...   May 31 2018, 06:45
|- - Kuzmi4   Цитата(torik @ May 30 2018, 17:00) ... пр...   May 31 2018, 06:15
- - torik   КодПри загрузке драйвера: int init_mmio(s...   May 30 2018, 14:37
|- - AVR   Нужен компилируемый пример. Пусть Vendor ID там бу...   May 31 2018, 05:41
- - AVR   Цитата(torik @ May 31 2018, 10:48) Можно ...   May 31 2018, 08:05
- - RobFPGA   Приветствую! Цитата(torik @ May 31 2018, ...   May 31 2018, 08:38


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 20:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016