|
PCIe Cyclone V, ошибка при чтении из BAR0 |
|
|
|
May 29 2018, 10:08
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
May 30 2018, 14:37
|

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

|
Код При загрузке драйвера:
int init_mmio(struct pci_dev* pdev, u8 __iomem **bar) { int ret = -EINVAL; u64 resource_flags = 0; resource_flags = pci_resource_flags(pdev, BAR_OFFSET); dev_info(&pdev->dev, "pci_resource_flags: 0x%llX", resource_flags); if (!(resource_flags & IORESOURCE_MEM)) { dev_err(&pdev->dev, "No IORESOURCE_MEM"); goto error; } ret = pci_request_regions(pdev, "electronix_sample"); if (ret != 0) { dev_err(&pdev->dev, "pci_request_regions failed"); goto error; } *bar = pcim_iomap(pdev, BAR_OFFSET, BAR_SIZE); if (!*bar) { dev_err(&pdev->dev, "pcim_iomap failed"); goto pci_release_regions; } dev_info(&pdev->dev, "init_mmio succeed"); return 0; pci_release_regions: pci_release_regions(pdev); error: return ret; }
При выгрузке драйвера: pci_release_regions(); pci_disable_device(); devres_release_group();
Чтение данных: readb(bar[offset]); readw(bar[offset]); readl(bar[offset]); readq(bar[offset]);
pci_resource_flags возвращает: IORESOURCE_MEM_64 IORESOURCE_SIZEALIGN IORESOURCE_PREFETCH IORESOURCE_MEM
--------------------
Быть. torizin-liteha@yandex.ru
|
|
|
|
Сообщений в этой теме
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 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|