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

 
 
> 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:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 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
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
|- - 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 Текстовая версия Сейчас: 21st July 2025 - 09:18
Рейтинг@Mail.ru


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