Всем привает.
Есть плата с 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
|