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

 
 
> 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 30 2018, 14:00
Сообщение #2


Гуру
******

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



Цитата
Тогда совет номер 1

Попробуем.


У альтеры есть пример драйвера под линукс?


--------------------
Быть. torizin-liteha@yandex.ru
Go to the top of the page
 
+Quote Post
AVR
сообщение May 30 2018, 14:20
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(torik @ May 30 2018, 17:00) *
У альтеры есть пример драйвера под линукс?

Причем тут альтера? Простейший драйвер для PCI он и в африке таковой, от производителя ПЛИС не зависит.
Готового примера не встречал, разве что очень устаревшее и переусложненное.
Могу мою заготовку предоставить вечером (сейчас нет возможности).


--------------------
Go to the top of the page
 
+Quote Post
RobFPGA
сообщение May 31 2018, 06:45
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 214
Регистрация: 23-12-04
Пользователь №: 1 643



Приветствую!
Цитата(AVR @ May 30 2018, 17:20) *
Причем тут альтера? Простейший драйвер для PCI он и в африке таковой, от производителя ПЛИС не зависит.
...

Вот именно - драйвер скорее все тут ни при чем - так как судя по описанию тут проблемы в железе . Он просто проявил эти проблемы.

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

Удачи! Rob.
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
|- - 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
- - torik   ЦитатаНужен компилируемый пример. Можно конечно за...   May 31 2018, 07:48
- - 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 Текстовая версия Сейчас: 29th July 2025 - 09:22
Рейтинг@Mail.ru


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