Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не определяется PCI устройство
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
margosh
Всем доброго времени суток!

Столкнулись с проблемой - разработанное на базе первого циклона PCI-slave устройство не хочет адекватно определяться в вычислительном блоке, а именно - ему раздается неверное количество памяти, иногда появляется память ввода-вывода или назначается прерывание, хотя в устройство это не закладывалось, т.е. видимо неверно читается конфигурационная информация. На вычислительный блок пока не грешим, так как другие подобные устройства определяются в нем нормально.

Проверяли устройство при подключении через плату-переходник на компьютере - определяется нормально, лишние ресурсы не раздаются, проверили все выходные сигналы на осциллографе(зашили проект с меандром на все выходы PCI) - все сигналы рабочие. Вычислительный блок реализован на POSIX-совместимой ОС, может быть есть какие-то критичные настройки конфигурации, из-за которых может так неадекватно определяться устройство?

Если кто сталкивался с похожей проблемой, подскажите плиз.

Kuzmi4
2 margosh
вопрос наверное немного странный, но как законстрейнили ? все констрейны выполняются ? другую ось (Linux например) туда поставить никак ?
margosh
Цитата(Kuzmi4 @ Oct 17 2011, 11:22) *
2 margosh
вопрос наверное немного странный, но как законстрейнили ? все констрейны выполняются ? другую ось (Linux например) туда поставить никак ?


С констрейнами все в норме, - на аналогичной плате с той же прошивкой все определяется корректно, тут видимо больше вопрос из разряда "что же на плате отвалилось?".
Другую ось не поставить, да и не в ней проблема, видимо, - сейчас арендовала комп с линуксом и попробовала через переходную плату воткнуть туда - результат :
данная плата под Линуксом ресурсы получает некорректно. Проверила с аналогичной платой, с той же прошивкой - определилась под Линуксом как надо. Сейчас займусь проверкой сигналов поновой, но остается вопрос : почему же под виндой нормально определяется и что отличается при конфиге PCI в разных ОС?
Kuzmi4
Цитата(margosh @ Oct 17 2011, 09:41) *
...Проверяли устройство при подключении через плату-переходник на компьютере - определяется нормально, лишние ресурсы не раздаются...

Цитата(margosh @ Oct 17 2011, 10:35) *
...данная плата под Линуксом ресурсы получает некорректно....

Телепатируя - получается что данная плата под вЕндой нормально определяется а под пингвином нет ?

Касательно
Цитата
"что же на плате отвалилось?".
- возможно и что то внутри спалили.
Если есть такая же ПП и 100% работает, взять её и не заморачиться laughing.gif
margosh
Цитата(Kuzmi4 @ Oct 17 2011, 12:11) *
Телепатируя - получается что данная плата под вЕндой нормально определяется а под пингвином нет ?

Верно, хотя и странно.

Цитата(Kuzmi4 @ Oct 17 2011, 12:11) *
Касательно - возможно и что то внутри спалили.
Если есть такая же ПП и 100% работает, взять её и не заморачиться laughing.gif

Так требуют, чтобы в этой тоже причину нашли - их ограниченное количество.
Victor®
Цитата(margosh @ Oct 17 2011, 11:25) *
Верно, хотя и странно.


Так требуют, чтобы в этой тоже причину нашли - их ограниченное количество.


Ничего не понял...
Точнее - "аналогичная плата" - точно такая-же?
Полностью одинаковые по разводке?
Koluchiy
Цитата
Так требуют, чтобы в этой тоже причину нашли - их ограниченное количество.

Причину можно никогда и не найти... Слишком много возможных вариантов.

Вообще, то, что девайс нормально работает под Виндой - не показатель, причина может быть не в винде, а в разных времянках на виндовом и невиндовых компах, из-за чего на одном работает лучше, на другом хуже.

Я бы посоветовал протестировать все платы (их же больше 2-х?).
Если не работает только одна - положить на дальнюю полку и забыть.
Если не работают еще какие-то - тогда возможны варианты.
margosh
Цитата
Точнее - "аналогичная плата" - точно такая-же?
Полностью одинаковые по разводке?

Как утверждает разработчик - полностью одинаковые, исхожу из его слов.

Цитата(Koluchiy @ Oct 17 2011, 17:16) *
Я бы посоветовал протестировать все платы (их же больше 2-х?).
Если не работает только одна - положить на дальнюю полку и забыть.

Я бы с радостью отложила, да не велят...

Еще раз проверила осциллом все сигналы - все есть, а адекватной работы нет...
Victor®
Цитата(margosh @ Oct 17 2011, 16:36) *
Как утверждает разработчик - полностью одинаковые, исхожу из его слов.


Я бы с радостью отложила, да не велят...

Еще раз проверила осциллом все сигналы - все есть, а адекватной работы нет...


Смотрите внимательно на IDSEL
на какой адрес он идет и все ли в порядке на нем.
Я бы в первую очередь посмотрел на IDSEL.
Можно ли сменить линию адреса, который идет на IDSEL?
Подозреваю, что - можно (там должен быть резистор). Кстати, какого номинала ону Вас?
Подробностей не упомню - но есть специфика с адресами.
margosh
Цитата(Victor® @ Oct 17 2011, 21:29) *
Можно ли сменить линию адреса, который идет на IDSEL?
Подозреваю, что - можно (там должен быть резистор). Кстати, какого номинала ону Вас?


Все PCI сигналы идут через двунаправленные буфферы, подтяжек нет, с подобной реализацией на других устройствах проблем не было. Саму линию IDSEL проверяла осциллом, как и остальные, но так как никаких лишних отладочных пинов на плате нет, я могу проверить прохождение сигнала только в 1 сторону - от плис до разъема, подавая меандр на все пины PCI.
Сейчас попробую засигналтапить, как ведет себя устройство при включении питания.
Victor®
Цитата(margosh @ Oct 18 2011, 09:20) *
Все PCI сигналы идут через двунаправленные буфферы, подтяжек нет, с подобной реализацией на других устройствах проблем не было. Саму линию IDSEL проверяла осциллом, как и остальные, но так как никаких лишних отладочных пинов на плате нет, я могу проверить прохождение сигнала только в 1 сторону - от плис до разъема, подавая меандр на все пины PCI.
Сейчас попробую засигналтапить, как ведет себя устройство при включении питания.


Пардон про IDSEL - он на хост плате (system resource) соединяется с адресом...
Так что тут я не в ту кассу...
Builder
Цитата(margosh @ Oct 17 2011, 10:35) *
С констрейнами все в норме, - на аналогичной плате с той же прошивкой все определяется корректно, тут видимо больше вопрос из разряда "что же на плате отвалилось?".
Формулировка ответа немного непонятна. Времянка в принципе прописана в проекте? Проверяли? Если что-то ам не так, как раз может быть, что часть плат работает - часть нет. Т.к. всегда есть разброс, если работаете на грани - какие-то чипы вытыгивают, какие-то нет.
Было похожее, на одних мамках работало, на других нет - не вся времянка была описана, и на платах быстрых - работала,
на тех где небыло запаса - не работала.

ЗЫ. время на буффера, что стоят тоже учесть не забывайте.
margosh
2 Builder
Запас по частоте в проекте приличный, более чем в 2 раза, но может Вы и правы - стоит проверить.

Цитата
Было похожее, на одних мамках работало, на других нет - не вся времянка была описана, и на платах быстрых - работала,
на тех где небыло запаса - не работала.
А не могли бы вы подробнее о данном случае : под быстрыми платами понимаются платы с другим типом кристаллов, или те же, но из разных партий?
Victor®
Цитата(margosh @ Oct 18 2011, 15:30) *
2 Builder
Запас по частоте в проекте приличный, более чем в 2 раза, но может Вы и правы - стоит проверить.

А не могли бы вы подробнее о данном случае : под быстрыми платами понимаются платы с другим типом кристаллов, или те же, но из разных партий?


Дело не в частоте, а сетапах.
Наиболее простой выход в Вашем случае - сгенерировать корку
и получить UCF. И по нему сделать свой. Если посмотреть на UCF
от PCI корки Xilinx - сразу станет понятно насколько все серьезно.
Но зато все работает - и 66 MHz и Master sm.gif

P/S
А... у Вас Altera
Попробуйте таким способом для Altera.
Builder
Цитата(margosh @ Oct 18 2011, 15:30) *
2 Builder
Запас по частоте в проекте приличный, более чем в 2 раза, но может Вы и правы - стоит проверить.
А не могли бы вы подробнее о данном случае : под быстрыми платами понимаются платы с другим типом кристаллов, или те же, но из разных партий?
Частично Victor ответил, но добавлю.
1. частота - это только часть. нужно ещё указать хотябы сетапы, холды. Как вариант - посмотреть в спецификации на PCI, там есть.
Или как советует Victor - в примерах от Альтеры или ксалинкса подсмотреть, что они пишут.
А то у Вас может быть что частота с запасом, а сигнал на шину плата не успевает выставить и плата читается с ошибкой, тоже
самое на запись - плата не успевает взять данные с шины.
Сам я уже давно это делал, не помню где брал данные, кажись или в стандарте или в примерах от PLD.
ТОлько не забывайте отнять от времени задержки на Ваши буфера, они не много но задержат сигнал.
2. я имел ввиду что мамки на разных чипсетах поначалу по разному реагировали на мою плату, одни работали -
другие вообще вешались. После проверки и исправления времянок у меня проблемы пропали.

margosh
Спасбибо, попробую, как раз подсказали, где найти файл констрейнтов на pci-кору.
Victor®
Цитата(Builder @ Oct 19 2011, 10:34) *
Частично Victor ответил, но добавлю.
1. частота - это только часть. нужно ещё указать хотябы сетапы, холды. Как вариант - посмотреть в спецификации на PCI, там есть.
Или как советует Victor - в примерах от Альтеры или ксалинкса подсмотреть, что они пишут.
А то у Вас может быть что частота с запасом, а сигнал на шину плата не успевает выставить и плата читается с ошибкой, тоже
самое на запись - плата не успевает взять данные с шины.
Сам я уже давно это делал, не помню где брал данные, кажись или в стандарте или в примерах от PLD.
ТОлько не забывайте отнять от времени задержки на Ваши буфера, они не много но задержат сигнал.
2. я имел ввиду что мамки на разных чипсетах поначалу по разному реагировали на мою плату, одни работали -
другие вообще вешались. После проверки и исправления времянок у меня проблемы пропали.


Еще добавлю, что возможно придется констрейнтить размещение.
Например, входные регистры в IO блоки... Ну это если фиттер втупит с таймингами.
Но в UCF все это есть. Еще раз рекомендую посмотреть в constraint-файл.
ys05
Цитата(margosh @ Oct 17 2011, 11:35) *
Сейчас займусь проверкой сигналов поновой, но остается вопрос : почему же под виндой нормально определяется и что отличается при конфиге PCI в разных ОС?


Сталкивался когда-то, насколько помню, с таким отличием в настройке конфигурации Windows и Linux:
Windows раздельно нумеровал окна адресов разного типа (память и регистры), а Linux их нумеровал подряд. В итоге, если в Windows было то-ли лишнее, то-ли недостающее (точно не помню, но вроде - лишнее) окно в конфигурационном пространстве, драйвер все равно конфигурировался нормально, а в Linux общая нумерация окон съезжала и все не работало, так как драйвер в итоге пытался лезть в другие области.
ys05
Уточнил сегодня ситуацию. Был проект PCI только с окнами памяти, но в нем было неактивное окно с I/O регистрами, причем окно с регистрами (неактивное) шло в конфигурационном пространстве раньше окон памяти. Когда вдруг окно с регистрами сделали активным, драйвера Windows продолжали работать без изменений, поскольку нумерация окон памяти не изменилась (они нумеровались Windows отдельно от окон I/O), а драйвера Linux перестали работать, так как из-за общей нумерации конфигурационных ресурсов в Linux при добавлении окна с регистрами изменилась нумерация всех последующих окон памяти.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.